<?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>61068</bug_id>
          
          <creation_ts>2011-05-18 09:31:58 -0700</creation_ts>
          <short_desc>MediaStream API: add getUserMedia mock result manipulation to the LayoutTestController</short_desc>
          <delta_ts>2012-05-04 05:41:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>61069</dependson>
          <blocked>56459</blocked>
    
    <blocked>56587</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>danilo.eu</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>harald</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>s.choi</cc>
    
    <cc>sh9.choi</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjjeon</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yujie.mao</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>405780</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-18 09:31:58 -0700</bug_when>
    <thetext>Add a new method to the different ports of the LayoutTestController to set the available mock devices in the next navigator.getUserMedia call. This will be used through many layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558156</commentid>
    <comment_count>1</comment_count>
      <attachid>127372</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-16 06:56:27 -0800</bug_when>
    <thetext>Created attachment 127372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558164</commentid>
    <comment_count>2</comment_count>
      <attachid>127372</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 07:12:19 -0800</bug_when>
    <thetext>Comment on attachment 127372
Patch

Attachment 127372 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11542004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558172</commentid>
    <comment_count>3</comment_count>
      <attachid>127372</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-16 07:19:56 -0800</bug_when>
    <thetext>Comment on attachment 127372
Patch

Attachment 127372 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11536198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558192</commentid>
    <comment_count>4</comment_count>
      <attachid>127381</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-16 08:00:55 -0800</bug_when>
    <thetext>Created attachment 127381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558231</commentid>
    <comment_count>5</comment_count>
      <attachid>127381</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 08:43:38 -0800</bug_when>
    <thetext>Comment on attachment 127381
Patch

Attachment 127381 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11536215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559024</commentid>
    <comment_count>6</comment_count>
      <attachid>127548</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-17 01:13:42 -0800</bug_when>
    <thetext>Created attachment 127548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559117</commentid>
    <comment_count>7</comment_count>
      <attachid>127548</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 03:53:50 -0800</bug_when>
    <thetext>Comment on attachment 127548
Patch

Attachment 127548 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11538453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559121</commentid>
    <comment_count>8</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-17 04:18:56 -0800</bug_when>
    <thetext>Hmm, for some reason the chromium build bot is stuck on an quite old chromium revision...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559137</commentid>
    <comment_count>9</comment_count>
      <attachid>127575</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-17 05:27:12 -0800</bug_when>
    <thetext>Created attachment 127575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559264</commentid>
    <comment_count>10</comment_count>
      <attachid>127575</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 09:43:07 -0800</bug_when>
    <thetext>Comment on attachment 127575
Patch

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

New failing tests:
platform/chromium/media/video-capture-preview.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559331</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 10:50:40 -0800</bug_when>
    <thetext>&gt; Hmm, for some reason the chromium build bot is stuck on an quite old chromium revision...

The revision is controlled by this file:
http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/DEPS

If you find that it&apos;s older than you&apos;d like, please update it to a newer revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559337</commentid>
    <comment_count>12</comment_count>
      <attachid>127575</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 10:55:16 -0800</bug_when>
    <thetext>Comment on attachment 127575
Patch

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

This generally looks good.  We&apos;ll need fishd to review the API changes.  Also, it looks like you&apos;re failing one test.

&gt; Source/WebKit/chromium/public/WebUserMediaClientMock.h:57
&gt; +    WEBKIT_EXPORT virtual void requestUserMedia(const WebUserMediaRequest&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp; audioSources, const WebVector&lt;WebMediaStreamSource&gt;&amp; videoSources);
&gt; +    WEBKIT_EXPORT virtual void cancelUserMediaRequest(const WebUserMediaRequest&amp;);

You don&apos;t need to export virtual functions.  They&apos;re called indirectly anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559338</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 10:55:38 -0800</bug_when>
    <thetext>+fishd for WebKit API review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560116</commentid>
    <comment_count>14</comment_count>
      <attachid>127785</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-20 02:03:15 -0800</bug_when>
    <thetext>Created attachment 127785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560117</commentid>
    <comment_count>15</comment_count>
      <attachid>127575</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-20 02:04:23 -0800</bug_when>
    <thetext>Comment on attachment 127575
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClientMock.h:57
&gt;&gt; +    WEBKIT_EXPORT virtual void cancelUserMediaRequest(const WebUserMediaRequest&amp;);
&gt; 
&gt; You don&apos;t need to export virtual functions.  They&apos;re called indirectly anyway.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560118</commentid>
    <comment_count>16</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-20 02:05:38 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 127575 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127575&amp;action=review
&gt; 
&gt; Also, it looks like you&apos;re failing one test.
&gt; 

Sorry about that, I forgot to add that changed test to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560562</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-20 19:46:15 -0800</bug_when>
    <thetext>I think the ball is in fishd&apos;s court here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562643</commentid>
    <comment_count>18</comment_count>
      <attachid>127785</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-22 17:56:43 -0800</bug_when>
    <thetext>Comment on attachment 127785
Patch

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

One naming nit below, but I don&apos;t think its worth re-spinning this patch.  Please feel free to address it in a follow-up patch if you think it&apos;s worth changing.

&gt; Source/WebKit/chromium/src/WebUserMediaClientMock.cpp:32
&gt; +#if ENABLE(MEDIA_STREAM)

Missing a blank line above here.

&gt; Source/WebKit/chromium/src/WebUserMediaClientMock.cpp:64
&gt; +    m_private-&gt;setGetUserMediaResult(allowAudio, allowVideo);

I wonder if this would read better as &quot;setUserMediaResult&quot;.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:187
&gt; +    bindMethod(&quot;setMockGetUserMediaResult&quot;, &amp;LayoutTestController::setMockGetUserMediaResult);

This would then be setMockUserMediaResult, which would make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562667</commentid>
    <comment_count>19</comment_count>
      <attachid>127785</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 18:21:06 -0800</bug_when>
    <thetext>Comment on attachment 127785
Patch

Rejecting attachment 127785 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
edia-arguments.html
patching file LayoutTests/fast/mediastream/getusermedia-not-allowed-expected.txt
patching file LayoutTests/fast/mediastream/getusermedia-not-allowed.html
patching file LayoutTests/fast/mediastream/script-tests/getusermedia-not-allowed.js
patching file LayoutTests/platform/chromium/media/video-capture-preview.html

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

Full output: http://queues.webkit.org/results/11599057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562964</commentid>
    <comment_count>20</comment_count>
      <attachid>127785</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-23 01:53:18 -0800</bug_when>
    <thetext>Comment on attachment 127785
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebUserMediaClientMock.cpp:32
&gt;&gt; +#if ENABLE(MEDIA_STREAM)
&gt; 
&gt; Missing a blank line above here.

Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebUserMediaClientMock.cpp:64
&gt;&gt; +    m_private-&gt;setGetUserMediaResult(allowAudio, allowVideo);
&gt; 
&gt; I wonder if this would read better as &quot;setUserMediaResult&quot;.

Hmm, maybe. The function this sets the expectations for is &quot;getUserMedia&quot; and thus setGetUserMediaResult feels more logical. However I don&apos;t feel very strongly about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562967</commentid>
    <comment_count>21</comment_count>
      <attachid>128437</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-23 01:58:40 -0800</bug_when>
    <thetext>Created attachment 128437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563521</commentid>
    <comment_count>22</comment_count>
      <attachid>128437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 14:56:41 -0800</bug_when>
    <thetext>Comment on attachment 128437
Patch

Rejecting attachment 128437 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
media-not-allowed-expected.txt
patching file LayoutTests/fast/mediastream/getusermedia-not-allowed.html
patching file LayoutTests/fast/mediastream/script-tests/Attributes.js
patching file LayoutTests/fast/mediastream/script-tests/getusermedia-not-allowed.js
patching file LayoutTests/platform/chromium/media/video-capture-preview.html

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

Full output: http://queues.webkit.org/results/11603437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565568</commentid>
    <comment_count>23</comment_count>
      <attachid>129012</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-27 04:29:26 -0800</bug_when>
    <thetext>Created attachment 129012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565570</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 04:33:28 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565571</commentid>
    <comment_count>25</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-27 04:34:34 -0800</bug_when>
    <thetext>Just rebased, no actual code changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565585</commentid>
    <comment_count>26</comment_count>
      <attachid>129012</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 05:10:14 -0800</bug_when>
    <thetext>Comment on attachment 129012
Patch

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

New failing tests:
inspector/protocol/console-agent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565681</commentid>
    <comment_count>27</comment_count>
      <attachid>129012</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-27 08:41:52 -0800</bug_when>
    <thetext>Comment on attachment 129012
Patch

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

&gt; Source/WebKit/chromium/public/WebUserMediaClientMock.h:50
&gt; +class WebUserMediaClientMock : public WebUserMediaClient {

Why do we have mocks as part of the API?  Why isn&apos;t this class just part of DumpRenderTree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565779</commentid>
    <comment_count>28</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-27 10:20:11 -0800</bug_when>
    <thetext>I wanted to place the mock next to the code it is coming from, and also there is other code doing the same. The idea to place XxxMock.* in DRT/ main directory and WebXxxMock.* in DRT/chromium just never struck me.

I&apos;ll give it a shot and report back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565785</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-27 10:23:58 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; I wanted to place the mock next to the code it is coming from, and also there is other code doing the same. The idea to place XxxMock.* in DRT/ main directory and WebXxxMock.* in DRT/chromium just never struck me.
&gt; 
&gt; I&apos;ll give it a shot and report back.

We have some bad code in the codebase.  There doesn&apos;t seem to be any point to shipping code for mocks in Chrome.  We only need to builds mocks into DRT.

What we need is the correct interfaces to support dependency injection so that DRT can supply mock implementations of various layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565788</commentid>
    <comment_count>30</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-27 10:26:43 -0800</bug_when>
    <thetext>The code will be linked away for everything except DRT though but if we don&apos;t have to compile it we save time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566175</commentid>
    <comment_count>31</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-27 17:28:54 -0800</bug_when>
    <thetext>Can we move the mock to WebCore/testing and enable it by window.internals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566499</commentid>
    <comment_count>32</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-28 01:33:27 -0800</bug_when>
    <thetext>After a chat session with Darin yesterday we agreed to make the mock code DRT/chromium only for now and take the refactoring when another port have implemented WebRTC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566894</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-28 11:14:25 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; After a chat session with Darin yesterday we agreed to make the mock code DRT/chromium only for now and take the refactoring when another port have implemented WebRTC.

To be clear, I&apos;m also OK with tkent&apos;s suggestion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566896</commentid>
    <comment_count>34</comment_count>
      <attachid>129012</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-28 11:15:02 -0800</bug_when>
    <thetext>Comment on attachment 129012
Patch

marking R- based on decision to move mocks out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567588</commentid>
    <comment_count>35</comment_count>
      <attachid>129440</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-29 07:12:13 -0800</bug_when>
    <thetext>Created attachment 129440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567591</commentid>
    <comment_count>36</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-29 07:14:17 -0800</bug_when>
    <thetext>Hi all reviewers,

I gave the move to WebCore/testing a try. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567711</commentid>
    <comment_count>37</comment_count>
      <attachid>129440</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 10:27:52 -0800</bug_when>
    <thetext>Comment on attachment 129440
Patch

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

&gt; Source/WebCore/testing/InternalSettings.idl:44
&gt; +        void setMockGetUserMediaResult(in boolean audio, in boolean video) raises(DOMException);

I think previously this object has been used to manipulate WebCore::Settings, no mocks.  I wonder if we should create a new IDL for manipulating mocks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567712</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 10:28:26 -0800</bug_when>
    <thetext>+morrita,dglazkov as this relates to WebCore::Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568097</commentid>
    <comment_count>39</comment_count>
      <attachid>129440</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-29 16:45:48 -0800</bug_when>
    <thetext>Comment on attachment 129440
Patch

Attachment 129440 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11776066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568108</commentid>
    <comment_count>40</comment_count>
      <attachid>129440</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-29 16:58:45 -0800</bug_when>
    <thetext>Comment on attachment 129440
Patch

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

&gt; Source/WebKit/chromium/src/WebUserMediaClientMock.cpp:1
&gt; +/*

This isn&apos;t used anymore?

&gt; Tools/DumpRenderTree/chromium/WebViewHost.h:254
&gt; +    WebKit::WebUserMediaClientMock* userMediaClientMock();

This isn&apos;t used anymore?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127372</attachid>
            <date>2012-02-16 06:56:27 -0800</date>
            <delta_ts>2012-02-16 08:00:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120216155625.patch</filename>
            <type>text/plain</type>
            <size>44064</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1ZGFiZDcxN2MxODg3
ZmY0MDEyYjJhMWI0ZDU5MzkwYzU1ZDhiMC4uODVhYzZjYTAxZTQzNDU3Njk0N2I2NTY0NGEzMTAy
ZmRhMDk1MmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0xNSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgdXNlIGluY3JlYXNlZCBGb250Q2FjaGUg
c2l6ZSBvbiBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEyZGI5MjllNWVh
ZjZmMmI5YTc0MzU0YTgzZDI1Y2I4ZjE1MDZhNmUuLmU4ZjZkZmU1YjMwMjMxNzNmNTBjZmI2MTM5
YmI5MWQ1MmY1Y2IyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisK
KyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1h
bmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1
YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmg6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6fldlYlVzZXJNZWRp
YUNsaWVudE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVx
dWVzdC5oOgorICAgICAgICAoV2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaDoKKyAgICAgICAgKFdlYk1l
ZGlhU3RyZWFtU291cmNlc1JlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2Vz
UmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlh
UmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4pOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wMi0xNCAgVGFrYXNoaSBU
b3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHJvdmlkZSBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6dG9XZWJTb2NrZXRTdHJlYW1IYW5kbGUoU29ja2V0U3Ry
ZWFtSGFuZGxlKikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDYyMDQ1NjY0OGIyYjBiMjc0NWJjYWM0
ODY3MTYyMDFiNjU5OWRlZC4uMTE2OWE1MGNjY2Y5YWMxZmJjZGZjYTVhNWFlYzYzZDM3ZjdkYmM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjU4Niw2ICsyNTg2LDggQEAKICAgICAgICAgICAgICdt
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9T
aWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaCcsCisgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5j
cHAnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaCcsCiAg
ICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAg
ICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZmOTdmZTI3ZDE1Yjdh
ZWI0NWUzOTRhMWUzMmVlYjA3NmQwNDI0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFVzZXJNZWRp
YUNsaWVudE1vY2s+IFVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFDbGllbnRNb2NrKCkpOworfQorCitVc2VyTWVkaWFDbGll
bnRNb2NrOjpVc2VyTWVkaWFDbGllbnRNb2NrKCkKKyAgICA6IG1fYWxsb3dBdWRpbyhmYWxzZSkK
KyAgICAsIG1fYWxsb3dWaWRlbyhmYWxzZSkKK3sKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRN
b2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFsbG93Vmlk
ZW8pCit7CisgICAgbV9hbGxvd0F1ZGlvID0gYWxsb3dBdWRpbzsKKyAgICBtX2FsbG93VmlkZW8g
PSBhbGxvd1ZpZGVvOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2Vy
TWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikKK3sK
KyAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IHBycFJlcXVlc3Q7CisgICAg
QVNTRVJUKCEhcmVxdWVzdCk7CisKKyAgICBpZiAoIW1fYWxsb3dBdWRpbyAmJiAhbV9hbGxvd1Zp
ZGVvKSB7CisgICAgICAgIHJlcXVlc3QtPmZhaWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2Vz
OworCisgICAgaWYgKHJlcXVlc3QtPmF1ZGlvKCkgJiYgbV9hbGxvd0F1ZGlvKSB7CisgICAgICAg
IFN0cmluZyBpZCA9ICJtb2NrX2F1ZGlvX2RldmljZSI7CisgICAgICAgIFN0cmluZyBuYW1lID0g
IkF1ZGlvQ2FwdHVyZSI7CisgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoTWVkaWFTdHJlYW1T
b3VyY2U6OmNyZWF0ZShpZCwgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbywgbmFtZSkpOwor
ICAgIH0KKworICAgIGlmIChyZXF1ZXN0LT52aWRlbygpICYmIG1fYWxsb3dWaWRlbykgeworICAg
ICAgICBTdHJpbmcgaWQgPSAibW9ja192aWRlb19kZXZpY2UiOworICAgICAgICBTdHJpbmcgbmFt
ZSA9ICJWaWRlb0NhcHR1cmUiOworICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKE1lZGlhU3Ry
ZWFtU291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8sIG5hbWUp
KTsKKyAgICB9CisKKyAgICByZXF1ZXN0LT5zdWNjZWVkKGF1ZGlvU291cmNlcywgdmlkZW9Tb3Vy
Y2VzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OWUwMzM1MzE3MTk4
NzQyYTY5NWQwZDg1MDgyZTI0Mjc2YjFjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50TW9ja19oCisjZGVmaW5lIFVzZXJNZWRpYUNs
aWVudE1vY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJN
ZWRpYUNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVzZXJNZWRp
YUNsaWVudE1vY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFDbGllbnRNb2NrPiwgcHVi
bGljIFVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNl
ck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgflVzZXJNZWRpYUNsaWVudE1vY2soKSB7
IH0KKworICAgIHZvaWQgc2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9v
bCBhbGxvd1ZpZGVvKTsKKworICAgIC8vIFVzZXJNZWRpYUNsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEo
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIGF1ZGlvU291cmNlcywgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1Nv
dXJjZXMpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFDbGllbnRNb2NrKCk7CisKKyAg
ICBib29sIG1fYWxsb3dBdWRpbzsKKyAgICBib29sIG1fYWxsb3dWaWRlbzsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCBhNDFjNmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2OGVjNTNiYTdkOGI2Li5hNzZlZmNhMDVk
M2Q3ZjA5OWVjOTY4YzZjODNhNjA4NzNmMzlhNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0yNjUsNiArMjY1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRS
dW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywK
QEAgLTY2Nyw2ICs2NjgsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2Uu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJV
c2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDBkZWM4NTk4Mzk2YzNkZTcwYzc1ZjljOGQ4ZTkzZmNjNjIyZGE4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRNb2Nr
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9j
ayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7Cisg
ICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8p
OworCisgICAgLy8gV2ViVXNlck1lZGlhQ2xpZW50CisgICAgV0VCS0lUX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpOworICAgIFdFQktJVF9F
WFBPUlQgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1l
ZGlhUmVxdWVzdCYpOworCitwcml2YXRlOgorICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7
IH0KKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6
VXNlck1lZGlhQ2xpZW50TW9jaz4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzOGZi
MTg5OGI3MzY2MmQ5ODI4NzY5NDZmYzBiYTMxZmFmODg3M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkx
NDc2Nzk5NmZlOTMxNzdkMjRjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC03MSwxMiArNzEsMTMgQEAgcHVibGlj
OgogICAgIC8vIERFUFJFQ0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2Nl
ZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mIHZpZGVvU291cmNlcyk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RG
YWlsZWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgogICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYpOwogICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3QqKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKaW5kZXggN2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2
YjM0MjUyYzc3YjQ3NjgwOC4uY2IwODk2NzdhNTFjMmZmYzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtNTgsNiAr
NTgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRp
YVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0OwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCmluZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0
MTg0OWNjZGZjYTZmZjdlYjhmMTMuLjVjNmM5NjdmNDNlNTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3
YjJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCB2b2lkIFdl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZQogICAgIG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShhdWRpbywg
dmlkZW8pOwogfQogCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNz
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZDZiMGYwZWMzMzY4ODQzYTMxNGE1ZmE4YTk4MjY1YTJjOWVmZWU5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisj
aW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRp
YVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICBPd25QdHI8V2ViVXNlck1lZGlhQ2xp
ZW50TW9jaz4gbW9jayA9IGFkb3B0UHRyKG5ldyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOwor
ICAgIG1vY2stPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gbW9jay5yZWxlYXNlKCk7Cit9CisK
K3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9wcml2
YXRlID0gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dB
dWRpbywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1fcHJpdmF0ZS0+c2V0R2V0VXNlck1lZGlh
UmVzdWx0KGFsbG93QXVkaW8sIGFsbG93VmlkZW8pOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNs
aWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2Vz
LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpCit7
CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW87CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1T
b3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07CisgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJy
KTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW87CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVk
aWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJjZXNbaV07CisgICAgICAgIHZpZGVvLmFw
cGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRlLT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVl
c3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQor
eworICAgIG1fcHJpdmF0ZS0+Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNw
cAppbmRleCA1YTc2YzgzYjBkZTg4ZGQwNWJhZWU5NDRiZmNmZTk1Y2UxMWI2MTI1Li44ZGQxZjlm
Y2FmYWQ2ODg5MzZlMTBiNjU3MjcwOTViYWQ3NTUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODYsNyArODYsNyBA
QCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAotdm9pZCBXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYgdmlkZW9Tb3VyY2VzKQordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3Vj
Y2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNl
cywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKSBj
b25zdAogewogICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVk
ZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPgogICAgIG1fcHJpdmF0ZS0+
c3VjY2VlZChhdWRpbywgdmlkZW8pOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJl
cXVlc3RGYWlsZWQoKQordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkg
Y29uc3QKIHsKICAgICBtX3ByaXZhdGUtPmZhaWwoKTsKIH0KQEAgLTE0OCw2ICsxNDgsMTEgQEAg
V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCooKSBjb25zdAog
ICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4oKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4ZDJlYjU3NDIyNzA1ZDgyNGVhN2M4ZDgyNjA1YWQ1ZGY1ZDUw
NzMyLi5mYTJkOTk2MzRiYjZhMGMyZDYwZjYwNmIxZDkyNjliZDc1NWZkODRmIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAg
ICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlw
dWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjayk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0
Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVz
ZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmlld0hvc3QpOgorCiAy
MDEyLTAyLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkICNp
bmNsdWRlIG9mIHVuaXN0ZC5oIG9uIHRoZSBtYWMgZm9yIGdldGN3ZC4gCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAwNzM2YzAzODFiMzRjODhlMzA3ZTVmZmYz
ZDU0ZmQ2OTIwZjg3NTBlLi5lNmUwZjI1ZmViMzBiYzczYzRjOGQxNzFmNWU1MTMwNzNmMTkxM2I2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTQ4LDggKzQ4
LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1dlYlByZWZlcmVuY2VzLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDc3YjA4MjM4YzYzOWM3
N2RhZDEwNTljMjk4MTc5Y2VlNTcyNWYyOS4uYjc4MDNiMTU5MWI4MzdhM2FlMzI2Y2ZlYWU4YzY0
MGI2YjI3ODljMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtMjI4OCw2ICsyMjg4LDE3IEBAIHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250
cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogICAgIGNvbnRyb2xsZXIt
PmRlcmVmKCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1
bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPT0gMikgeworICAgICAgICBib29sIGNhblByb3ZpZGVBdWRpbyA9IEpTVmFsdWVU
b0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKKyAgICAgICAgYm9vbCBjYW5Qcm92aWRl
VmlkZW8gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAgICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVz
dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgICAgICBj
b250cm9sbGVyLT5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNhblByb3ZpZGVBdWRpbywgY2Fu
UHJvdmlkZVZpZGVvKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
d2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDUwLDYgKzI0NjEsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2V0VXNlck1lZGlh
UmVzdWx0Iiwgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0Nv
cHlCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQYWdlVmlz
aWJpbGl0eSIsIHNldFBhZ2VWaXNpYmlsaXR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0UE9TSVhMb2NhbGUiLCBzZXRQT1NJWExvY2FsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0NTI2NWRiNmRjNzBi
NmYxYmQ3NjA5NDA5YjUwZTM3ZGRlNjEyMDlhLi5mMmM0ZmRiZjMwN2RhYTYyNzg4NWRiNWFhNDA3
MTJmNGQ1NGI1OWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Q
cm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2Ft
bWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5n
UmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQg
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKTsKICAgICB2
b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTQyOGVm
YzkxZmNmYmY0NDFkNTJjYTVjNWQzM2NkMGJmNWQ4N2ZhOS4uNjI1YWVlZTJmMGVmZDRjMzkyZjBl
ZjNhZTBiNmJjZTg2ZGVjYzE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2lu
Y2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTE4Myw2ICsxODQsNyBAQCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkK
ICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
biIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwor
ICAgIGJpbmRNZXRob2QoInNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQiLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNl
dFBhZ2VWaXNpYmlsaXR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQYWdlVmlzaWJpbGl0
eSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFBsdWdpbnNFbmFibGVkKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpAQCAt
MTkxMCw2ICsxOTEyLDE3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgICAgIHdpbmRv
d0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0u
dG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3I8V2ViVmlld0hvc3QqPiB3aW5kb3dMaXN0ID0gbV9zaGVsbC0+d2lu
ZG93TGlzdCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93TGlzdC5zaXplKCk7
IGkrKykKKyAgICAgICAgd2luZG93TGlzdFtpXS0+dXNlck1lZGlhQ2xpZW50TW9jaygpLT5zZXRH
ZXRVc2VyTWVkaWFSZXN1bHQoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpLCBhcmd1bWVudHNbMV0u
dG9Cb29sZWFuKCkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFs
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA5OWJkMGM0NjllMWMxNTFlZjU0
MDY1M2FiNzcyZGNmYmRhMmVhMDA3Li5lZTViOTYzMDdiYzc3ZjRjM2ViN2EwMTgzNmM5NjE5MDk2
NWRlMjA3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTM3MSw2ICszNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBNZWRpYVN0cmVhbSByZWxhdGVkIGZ1bmN0
aW9ucy4KKyAgICB2b2lkIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2Vl
cCBwYXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENv
bnRyb2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGY0NDJhNjc2MzliMGY2MWU4OTA2NjgxOGIzMTU2M2ZkZTVlNmU3Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5oIgotCi0jaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgotI2luY2x1ZGUg
IldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNs
aWVudE1vY2s+IFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOwotfQotCi1ib29sIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2s6OklzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkKLXsKLSAg
ICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVhbVJlZ2lz
dHJ5Ojpsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3IodXJsKSk7Ci0gICAgaWYgKGRlc2NyaXB0
b3IuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yOwotICAgIGRlc2NyaXB0b3Iuc291cmNlcyhz
b3VyY2VWZWN0b3IpOwotICAgIFdlYlN0cmluZyB0cmFja0lkOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc291cmNlVmVjdG9yLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChzb3VyY2VW
ZWN0b3JbaV0udHlwZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pIHsKLSAg
ICAgICAgICAgIHRyYWNrSWQgPSBzb3VyY2VWZWN0b3JbaV0uaWQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cmFja0lkLmVxdWFscygibWVkaWFz
dHJlYW10ZXN0Iik7Ci19Ci0KLXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVz
ZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SZXF1ZXN0LCBjb25zdCBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzdHJlYW1Tb3VyY2VWZWN0b3IpCi17Ci0g
ICAgQVNTRVJUKCFzdHJlYW1SZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIFdlYlVzZXJNZWRpYVJl
cXVlc3QgcmVxdWVzdCA9IHN0cmVhbVJlcXVlc3Q7Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSAx
OwotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yKHNpemUp
OwotICAgIFdlYlN0cmluZyB0cmFja0lkKCJtZWRpYXN0cmVhbXRlc3QiKTsKLSAgICBXZWJTdHJp
bmcgdHJhY2tOYW1lKCJWaWRlb0NhcHR1cmUiKTsKLSAgICBzb3VyY2VWZWN0b3JbMF0uaW5pdGlh
bGl6ZSh0cmFja0lkLCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCB0cmFja05hbWUp
OwotICAgIHJlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZChzb3VyY2VWZWN0b3IpOwotfQotCi12b2lk
IFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDkxODM5YzYyODJhZGE5ZTQ1Nzg3
YjBkMWNjMDBhZmNjYmQ2OTBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlVzZXJNZWRp
YUNsaWVudE1vY2tfaAotI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLQotI2luY2x1
ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlVSTC5oIgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6
Ok1lZGlhU3RyZWFtVXRpbCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7Ci0gICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2so
KSB7IH0KLQotICAgIGJvb2wgSXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA3NDVjYmMw
ZTljNmE3NmEwMzY2MDNhODYxY2IyOWM3ZWZlNDAzNGEwLi4zZDZhYTcwNGVhOGE1MWQ5YTRmZWRi
M2YxNWUyODhlNjdiMjEwZTkwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCkBAIC0xNjQzLDE1ICsxNjQzLDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6
OmV4aXRGdWxsU2NyZWVuTm93KCkKICAgICB3ZWJWaWV3KCktPmRpZEV4aXRGdWxsU2NyZWVuKCk7
CiB9CiAKLXdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwqIFdlYlZpZXdIb3N0OjptZWRp
YVN0cmVhbVV0aWwoKQotewotICAgIHJldHVybiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Ci19Ci0K
IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIFdlYlZpZXdIb3N0Ojp0ZXN0
TWVkaWFTdHJlYW1DbGllbnQoKQogewogICAgIGlmICghbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQu
Z2V0KCkpCi0gICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIobmV3IHdl
YmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQobWVkaWFTdHJlYW1VdGlsKCkpKTsK
KyAgICAgICAgbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQgPSBhZG9wdFB0cihuZXcgd2Via2l0X3N1
cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCgpKTsKICAgICByZXR1cm4gbV90ZXN0TWVkaWFT
dHJlYW1DbGllbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCmluZGV4IDZmNzU5NzI4ZjAxODkzNjE1YWMwOTE1MWE5NTM3NjMxYzU3YjQy
NGUuLmEzNDBhMTFmMzQ1YjA4NWNiZWM1ZDg5MDNiZTc4YzBjZDRkNmEyYTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjQ1LDYgKzI0NSw5IEBA
IGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwg
cHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tz
IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgogICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKIAorICAgIC8vIFVzZXIgbWVkaWEgY2xp
ZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgIFdlYktpdDo6V2ViVXNlck1l
ZGlhQ2xpZW50TW9jayogdXNlck1lZGlhQ2xpZW50TW9jaygpOworCiAgICAgLy8gUGVuZGluZyB0
YXNrIGxpc3QsIE5vdGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gTWV0aG9kVGFz
ayBjbGFzcy4KICAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsg
fQogCkBAIC0zMDUsOCArMzA4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1v
Y2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJl
YW1VdGlsKiBtZWRpYVN0cmVhbVV0aWwoKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlh
U3RyZWFtQ2xpZW50KiB0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKTsKIAogICAgIC8vIENhdXNlcyBu
YXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBp
bnN0ZWFkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZDljOWEzNjNkZjVmZmM5MWViZWNjY2ZlYjJlYTc4OTkxZTc5MjIyMC4u
MTY3MzlkNjYwNzFlOTBjOTA4MDRkMWQ1ODJjMGQ1NDg3MzAwMTQyMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTAyLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29t
PgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3Vs
dCBtYW5pcHVsYXRpb24gdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMv
Z2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1Y2NlZWQpOgor
ICAgICAgICAoZmFpbCk6CisKIDIwMTItMDItMTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGNvcnJlY3Qgc3ZuOm1pbWUtdHlwZSBvZiBh
IHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJt
ZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDA2Nzky
ZGIzMmRlZmJkN2E2Mjk1MzQ5MGExMmJlYmVhYmJjODcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCkgcGFy
YW1ldGVyIHBhcnNpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFN0
cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBTdHJl
YW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5n
dGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDAKK1BBU1MgU3RyZWFt
IGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3Ro
IGlzIDAKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NzM3YjM3NWYwNjJhYTYyM2M3NGRmYjBlZGEyMTNhZTZiMzEwYTdkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJn
dW1lbnRzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCkgcGFy
YW1ldGVyIHBhcnNpbmcuIik7CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVz
dENvbnRyb2xsZXInKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdCh0cnVlLCB0cnVlKTsKKworZnVuY3Rpb24gc3VjY2VlZDEocykgeworICAgIHRlc3RQ
YXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4nKTsKKyAgICBzdHJlYW0gPSBz
OworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBz
aG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisKKyAgICBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbyIsIHN1Y2NlZWQyLCBmYWlsKTsKK30KKworZnVu
Y3Rpb24gc3VjY2VlZDIocykgeworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMg
c3VjY2Vzc2Z1bC4nKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVk
aW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCcsICcwJyk7CisKKyAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIHN1Y2NlZWQzLCBmYWlsKTsKK30KKworZnVuY3Rpb24gc3VjY2VlZDMocykgeworICAgIHRl
c3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4nKTsKKyAgICBzdHJlYW0g
PSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzAnKTsKKyAg
ICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdTaG91
bGQgbm90IGhhcHBlbicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCituYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkMSwgZmFpbCk7CisKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDM1NmQ0ZjBlNjI3MjMwZDZkNjNmMWU4MjRmOWY1MDNkMjViZWEwMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
LW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBOYXZpZ2F0
b3IuZ2V0VXNlck1lZGlhKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Tm90IGFsbG93ZWQKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTdmYjFjNzllZGQwODgxOWEwNWRhNDRjMmYwZThkOTQ3NzAxYTRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtbm90LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxs
b3dlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93
ZWQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1c2Vy
bWVkaWEtbm90LWFsbG93ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJlNzM4NDA0MTQyYzE1YzViYWYzYzNl
YzNiNDFhMDA3MWI3MTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpAQCAtMCww
ICsxLDIxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpIik7
CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGRlYnVnKCdUaGlzIHRl
c3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKwor
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChmYWxzZSwgZmFs
c2UpOworCitmdW5jdGlvbiBzdWNjZWVkKHN0cmVhbSkgeworICAgIHRlc3RGYWlsZWQoJ1Nob3Vs
ZCBub3QgaGFwcGVuJyk7Cit9CisKK2Z1bmN0aW9uIGZhaWwoKSB7CisgICAgdGVzdFBhc3NlZCgn
Tm90IGFsbG93ZWQnKTsKK30KKworbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8s
IHZpZGVvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJh
dWRpbyIsIHN1Y2NlZWQsIGZhaWwpOworbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlk
ZW8iLCBzdWNjZWVkLCBmYWlsKTsKKword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127381</attachid>
            <date>2012-02-16 08:00:55 -0800</date>
            <delta_ts>2012-02-17 01:12:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120216170053.patch</filename>
            <type>text/plain</type>
            <size>51713</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY1ZjJjOTdkNWNlMzc1
MjllYTVkYmI4OTc5YmMwMDlhMGNkMzhlYi4uZDY4ZDVmNGQ5N2Q3ZTI5YzVkOTc2NDc0NmU4NjRk
NzM0ZDkxZTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW2hlYXAgc25hcHNob3RdIEl0IGNvdWxk
IGJlIHVzZWZ1bCB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2VsZWN0ZWQgaGVhcCBvYmplY3QgZnJv
bSB0aGUgY29uc29sZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTExYjFiOGZjNTg4
MmI4NGM1YmQxMGE3NGE1Y2QxNjBjNzEzYzVhMi4uOGI0OTNlY2IyYjkyZmMyMWQyNTg1N2Q3ZDU0
ZjgxZjNkMGQ1ZTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBA
QAorMjAxMi0wMi0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFu
aXB1bGF0aW9uIHRvIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp+V2ViVXNlck1lZGlh
Q2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6Oldl
YlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAoV2ViTWVk
aWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50Pik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFS
ZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0Pik6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTAyLTE2ICBZb3NpZnVtaSBJ
bm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBCdWlsZCBGaXg6IFIxMDc4OTQg
YnJlYWtzIENocm9taXVtIExpbnV4IEJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGQ0MzA1YWVl
MWQ5MjY5NjY0NjhlNWU3NzM4ZDJkNmI2ZmEzYjJhZGQuLmEyZWExMDQzM2NiODQxZjcyZDJkZWRk
OGU4MGJjYTVkZmMxNjU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI1ODYsNiArMjU4Niw4IEBA
CiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaCcsCiAgICAgICAgICAg
ICAnbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudE1vY2suY3BwJywKKyAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwJywKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgnLAogICAg
ICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2Zjk3ZmUyN2QxNWI3YWViNDVlMzk0YTFlMzJlZWIwNzZkMDQyNDAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcApA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKworI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxVc2VyTWVkaWFDbGllbnRNb2NrPiBVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhQ2xpZW50TW9jaygpKTsKK30K
KworVXNlck1lZGlhQ2xpZW50TW9jazo6VXNlck1lZGlhQ2xpZW50TW9jaygpCisgICAgOiBtX2Fs
bG93QXVkaW8oZmFsc2UpCisgICAgLCBtX2FsbG93VmlkZW8oZmFsc2UpCit7Cit9CisKK3ZvaWQg
VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRp
bywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1fYWxsb3dBdWRpbyA9IGFsbG93QXVkaW87Cisg
ICAgbV9hbGxvd1ZpZGVvID0gYWxsb3dWaWRlbzsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRN
b2NrOjpyZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJwUmVx
dWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBw
cnBSZXF1ZXN0OworICAgIEFTU0VSVCghIXJlcXVlc3QpOworCisgICAgaWYgKCFtX2FsbG93QXVk
aW8gJiYgIW1fYWxsb3dWaWRlbykgeworICAgICAgICByZXF1ZXN0LT5mYWlsKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlczsKKworICAgIGlmIChyZXF1ZXN0LT5hdWRpbygpICYmIG1fYWxsb3dB
dWRpbykgeworICAgICAgICBTdHJpbmcgaWQgPSAibW9ja19hdWRpb19kZXZpY2UiOworICAgICAg
ICBTdHJpbmcgbmFtZSA9ICJBdWRpb0NhcHR1cmUiOworICAgICAgICBhdWRpb1NvdXJjZXMuYXBw
ZW5kKE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3RyZWFtU291cmNlOjpUeXBl
QXVkaW8sIG5hbWUpKTsKKyAgICB9CisKKyAgICBpZiAocmVxdWVzdC0+dmlkZW8oKSAmJiBtX2Fs
bG93VmlkZW8pIHsKKyAgICAgICAgU3RyaW5nIGlkID0gIm1vY2tfdmlkZW9fZGV2aWNlIjsKKyAg
ICAgICAgU3RyaW5nIG5hbWUgPSAiVmlkZW9DYXB0dXJlIjsKKyAgICAgICAgdmlkZW9Tb3VyY2Vz
LmFwcGVuZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGlkLCBNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZVZpZGVvLCBuYW1lKSk7CisgICAgfQorCisgICAgcmVxdWVzdC0+c3VjY2VlZChhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50TW9jazo6Y2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NzllMDMzNTMxNzE5ODc0MmE2OTVkMGQ4NTA4MmUyNDI3NmIxYzI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudE1vY2tfaAorI2Rl
ZmluZSBVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlh
Q2xpZW50TW9jaz4sIHB1YmxpYyBVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFVzZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOworICAgIH5Vc2VyTWVk
aWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICB2b2lkIHNldEdldFVzZXJNZWRpYVJlc3VsdChib29s
IGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRlbyk7CisKKyAgICAvLyBVc2VyTWVkaWFDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsICBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlh
UmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0Kik7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhQ2xp
ZW50TW9jaygpOworCisgICAgYm9vbCBtX2FsbG93QXVkaW87CisgICAgYm9vbCBtX2FsbG93Vmlk
ZW87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggYTQxYzZkMDczODYzMTA1MjhkOTM1MTliODQ4NjhlYzUzYmE3
ZDhiNi4uYTc2ZWZjYTA1ZDNkN2YwOTllYzk2OGM2YzgzYTYwODczZjM5YTU3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjY1LDYgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9h
ZGVyT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlZpZXdDbGllbnQuaCcsCkBAIC02NjcsNiArNjY4LDcgQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTFJlc3BvbnNlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXNwb25z
ZVByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxFcnJvci5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViVmlld0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZGVjODU5ODM5NmMzZGU3MGM3NWY5YzhkOGU5M2Zj
YzYyMmRhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNl
ck1lZGlhQ2xpZW50TW9ja19oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAorCisj
aW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNl
ck1lZGlhQ2xpZW50TW9jazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgV2ViVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2s+IGNyZWF0ZSgpOworICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywg
Ym9vbCBhbGxvd1ZpZGVvKTsKKworICAgIC8vIFdlYlVzZXJNZWRpYUNsaWVudAorICAgIFdFQktJ
VF9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291
cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2Vz
KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKworcHJpdmF0ZToKKyAgICBXZWJVc2VyTWVk
aWFDbGllbnRNb2NrKCkgeyB9CisgICAgdm9pZCBpbml0aWFsaXplKCk7CisKKyAgICBXZWJQcml2
YXRlUHRyPFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s+IG1fcHJpdmF0ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50TW9ja19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmgKaW5kZXggMzhmYjE4OThiNzM2NjJkOTgyODc2OTQ2ZmMwYmEzMWZhZjg4NzNhNC4uZmIy
MDYyODg1YmU2NGEzZTk5MTQ3Njc5OTZmZTkzMTc3ZDI0YzMyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaApAQCAtNzEsMTIg
KzcxLDEzIEBAIHB1YmxpYzoKICAgICAvLyBERVBSRUNBVEVECiAgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXF1ZXN0RmFpbGVkKCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RT
dWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3Vy
Y2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0RmFpbGVkKCkgY29uc3Q7CiAK
ICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0
IFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mKTsKICAgICBvcGVyYXRvciBX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0OworICAgIG9wZXJhdG9yIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4oKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oCmluZGV4IDdmY2M3YzI3
NTJjYjBmNmM1NjEyZGEyNmIzNDI1MmM3N2I0NzY4MDguLmNiMDg5Njc3YTUxYzJmZmM0MzVhYzRk
MjhjODQyNDlkYWE0Y2ZkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCiAgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdChjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+Jik7CisgICAgb3BlcmF0
b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4oKSBj
b25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcAppbmRleCBlYTg4
NjgwMDkyNDhjMjg2ODA0NDE4NDljY2RmY2E2ZmY3ZWI4ZjEzLi41YzZjOTY3ZjQzZTU3N2UyYmU0
ZDYyNTQyMTg1N2QwODc0N2IyYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcApAQCAtODIsNiAr
ODIsMTEgQEAgdm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVF1
ZXJ5KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmUKICAgICBtX3ByaXZhdGUtPmRpZENvbXBs
ZXRlUXVlcnkoYXVkaW8sIHZpZGVvKTsKIH0KIAorV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2su
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWQ2YjBmMGVjMzM2ODg0M2EzMTRhNWZhOGE5ODI2NWEyYzllZmVlOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRp
YUNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
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
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2su
aCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlh
Q2xpZW50TW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKKyNpbmNs
dWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNs
aWVudE1vY2s+IFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCit7CisgICAgT3duUHRy
PFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IG1vY2sgPSBhZG9wdFB0cihuZXcgV2ViVXNlck1lZGlh
Q2xpZW50TW9jaygpKTsKKyAgICBtb2NrLT5pbml0aWFsaXplKCk7CisgICAgcmV0dXJuIG1vY2su
cmVsZWFzZSgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmluaXRpYWxpemUo
KQoreworICAgIG1fcHJpdmF0ZSA9IFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0
ZSgpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJl
c3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRlbykKK3sKKyAgICBtX3ByaXZhdGUt
PnNldEdldFVzZXJNZWRpYVJlc3VsdChhbGxvd0F1ZGlvLCBhbGxvd1ZpZGVvKTsKK30KKwordm9p
ZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJN
ZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYg
dmlkZW9Tb3VyY2VzKQoreworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gYXVkaW9Tb3VyY2VzW2ldOworICAgICAgICBh
dWRpby5hcHBlbmQoY3Vycik7CisgICAgfQorICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZp
ZGVvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gdmlkZW9Tb3VyY2VzW2ldOwor
ICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7CisgICAgfQorICAgIG1fcHJpdmF0ZS0+cmVxdWVz
dFVzZXJNZWRpYShyZXF1ZXN0LCBhdWRpbywgdmlkZW8pOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX3ByaXZhdGUtPmNhbmNlbFVzZXJNZWRpYVJlcXVlc3Qo
cmVxdWVzdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlVzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggNWE3NmM4M2IwZGU4OGRkMDViYWVlOTQ0YmZjZmU5NWNl
MTFiNjEyNS4uOGRkMWY5ZmNhZmFkNjg4OTM2ZTEwYjY1NzI3MDk1YmFkNzU1MTJkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1lZGlhUmVxdWVzdDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBXZWJTZWN1cml0eU9yaWdpbihtX3By
aXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAK
LXZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykKK3ZvaWQgV2ViVXNlck1lZGlhUmVx
dWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
IHZpZGVvU291cmNlcykgY29uc3QKIHsKICAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4K
ICAgICBtX3ByaXZhdGUtPnN1Y2NlZWQoYXVkaW8sIHZpZGVvKTsKIH0KIAotdm9pZCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6
cmVxdWVzdEZhaWxlZCgpIGNvbnN0CiB7CiAgICAgbV9wcml2YXRlLT5mYWlsKCk7CiB9CkBAIC0x
NDgsNiArMTQ4LDExIEBAIFdlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFVzZXJNZWRpYVJl
cXVlc3QqKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCitXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmRhMmJiMTFkMzU3NDk3NTkxZmU5
OTMxMDkyNzY0MDc1YjY0ZDcyZC4uZTI4Mzk0NWUzYzZiZThjMjkyMGYwYThhN2Q3OTRiOTBmNmJj
NTkyYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBt
b2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Q2Fs
bGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFT
dHJlYW1DbGllbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKwogMjAxMi0wMi0xNiAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxlIGluc3BlY3RvciBv
biBXaW5DRS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDA3
MzZjMDM4MWIzNGM4OGUzMDdlNWZmZjNkNTRmZDY5MjBmODc1MGUuLmU2ZTBmMjVmZWIzMGJjNzNj
NGM4ZDE3MWY1ZTUxMzA3M2YxOTEzYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaQpAQCAtNDgsOCArNDgsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlBl
cm1pc3Npb25zLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaCcsCi0gICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAg
ICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCAwNzdiMDgyMzhjNjM5Yzc3ZGFkMTA1OWMyOTgxNzljZWU1NzI1ZjI5Li5iNzgwM2Ix
NTkxYjgzN2EzYWUzMjZjZmVhZThjNjQwYjZiMjc4OWMwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjg4LDYgKzIyODgsMTcgQEAgc3Rh
dGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBv
YmplY3QpCiAgICAgY29udHJvbGxlci0+ZGVyZWYoKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAyKSB7CisgICAgICAgIGJvb2wgY2Fu
UHJvdmlkZUF1ZGlvID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOwor
ICAgICAgICBib29sIGNhblByb3ZpZGVWaWRlbyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwg
YXJndW1lbnRzWzFdKTsKKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1
bHQoY2FuUHJvdmlkZUF1ZGlvLCBjYW5Qcm92aWRlVmlkZW8pOworICAgIH0KKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIC8vIE9iamVjdCBDcmVhdGlvbgog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjptYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKQEAgLTI0NTAsNiArMjQ2MSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVz
dWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0RHVtcFJl
Y3QiLCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgInNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQiLCBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2Fy
ZExpc3QiLCBzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldFBhZ2VWaXNpYmlsaXR5Iiwgc2V0UGFnZVZpc2liaWxpdHlDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQT1NJWExvY2FsZSIsIHNldFBPU0lYTG9jYWxlQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCmluZGV4IDQ1MjY1ZGI2ZGM3MGI2ZjFiZDc2MDk0MDliNTBlMzdkZGU2MTIwOWEuLmYyYzRm
ZGJmMzA3ZGFhNjI3ODg1ZGI1YWE0MDcxMmY0ZDU0YjU5YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwg
ZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Q
cm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSk7CisgICAgdm9pZCBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVk
aW8sIGJvb2wgdmlkZW8pOwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3Ry
aW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsK
ICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9p
ZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENv
bnRyb2xsZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
TGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcAppbmRleCAxNDkwMWFlZDYzYjhhNmVk
ZTBiMWE3MjM1YjU3NWU1NzUyNTUxNjlkLi41ZTM5MzIwYjFlMDBiMmViODVjOTczYjEyOTljOGVi
YzU5Y2FkNGM4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xh
eW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCkBAIC02OTgs
NiArNjk4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihib29sIGFsbG93KQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dl
b2xvY2F0aW9uUGVybWlzc2lvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpj
dXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLCBhbGxvdyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRl
bykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShjb25zdCBKU1N0cmluZ1JlZiBtb2RlKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTQyOGVmYzkxZmNmYmY0NDFk
NTJjYTVjNWQzM2NkMGJmNWQ4N2ZhOS4uNjI1YWVlZTJmMGVmZDRjMzkyZjBlZjNhZTBiNmJjZTg2
ZGVjYzE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIldlYlNj
cmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
V2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTE4Myw2ICsxODQsNyBAQCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOworICAgIGJpbmRNZXRo
b2QoInNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmls
aXR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBs
dWdpbnNFbmFibGVkKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpAQCAtMTkxMCw2ICsxOTEy
LDE3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdl
b2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBj
cHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc0Jv
b2woKSB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBW
ZWN0b3I8V2ViVmlld0hvc3QqPiB3aW5kb3dMaXN0ID0gbV9zaGVsbC0+d2luZG93TGlzdCgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93TGlzdC5zaXplKCk7IGkrKykKKyAgICAg
ICAgd2luZG93TGlzdFtpXS0+dXNlck1lZGlhQ2xpZW50TW9jaygpLT5zZXRHZXRVc2VyTWVkaWFS
ZXN1bHQoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpLCBhcmd1bWVudHNbMV0udG9Cb29sZWFuKCkp
OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA5OWJkMGM0NjllMWMxNTFlZjU0MDY1M2FiNzcyZGNm
YmRhMmVhMDA3Li5lZTViOTYzMDdiYzc3ZjRjM2ViN2EwMTgzNmM5NjE5MDk2NWRlMjA3IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTM3MSw2ICszNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAKKyAgICAvLyBNZWRpYVN0cmVhbSByZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICB2
b2lkIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOworCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0
aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAg
ICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY0NDJhNjc2
MzliMGY2MWU4OTA2NjgxOGIzMTU2M2ZkZTVlNmU3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgotCi0j
aW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRp
YVJlcXVlc3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IFdl
YlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOwotfQotCi1ib29sIFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OklzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkKLXsKLSAgICBXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IodXJsKSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4gc291cmNlVmVjdG9yOwotICAgIGRlc2NyaXB0b3Iuc291cmNlcyhzb3VyY2VWZWN0b3Ip
OwotICAgIFdlYlN0cmluZyB0cmFja0lkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291
cmNlVmVjdG9yLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChzb3VyY2VWZWN0b3JbaV0udHlw
ZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pIHsKLSAgICAgICAgICAgIHRy
YWNrSWQgPSBzb3VyY2VWZWN0b3JbaV0uaWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiB0cmFja0lkLmVxdWFscygibWVkaWFzdHJlYW10ZXN0Iik7
Ci19Ci0KLXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SZXF1ZXN0LCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JiBzdHJlYW1Tb3VyY2VWZWN0b3IpCi17Ci0gICAgQVNTRVJUKCFz
dHJlYW1SZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVz
dCA9IHN0cmVhbVJlcXVlc3Q7Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSAxOwotICAgIFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yKHNpemUpOwotICAgIFdlYlN0
cmluZyB0cmFja0lkKCJtZWRpYXN0cmVhbXRlc3QiKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tOYW1l
KCJWaWRlb0NhcHR1cmUiKTsKLSAgICBzb3VyY2VWZWN0b3JbMF0uaW5pdGlhbGl6ZSh0cmFja0lk
LCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCB0cmFja05hbWUpOwotICAgIHJlcXVl
c3QucmVxdWVzdFN1Y2NlZWRlZChzb3VyY2VWZWN0b3IpOwotfQotCi12b2lkIFdlYlVzZXJNZWRp
YUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVx
dWVzdCYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDkxODM5YzYyODJhZGE5ZTQ1Nzg3YjBkMWNjMDBhZmNj
YmQ2OTBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysg
L2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tf
aAotI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIldlYlVzZXJN
ZWRpYUNsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFt
VXRpbCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50
TW9jaz4gY3JlYXRlKCk7Ci0gICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLQotICAg
IGJvb2wgSXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1l
ZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0KLXByaXZhdGU6Ci0gICAg
V2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBiZWZhM2I3MTgwMjRhYzE1YTgy
N2M0OWY1OGZhZTA2ZjU1MGI2NjNlLi4wNGRmYWI3OTdjMzdmNWVjMTRlMWRkMTEwYmRhOWY0NmRk
YTc4MDViIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCkBAIC0xNjM2LDE1ICsxNjM2LDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmV4aXRGdWxsU2Ny
ZWVuTm93KCkKICAgICB3ZWJWaWV3KCktPmRpZEV4aXRGdWxsU2NyZWVuKCk7CiB9CiAKLXdlYmtp
dF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwqIFdlYlZpZXdIb3N0OjptZWRpYVN0cmVhbVV0aWwo
KQotewotICAgIHJldHVybiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Ci19Ci0KIHdlYmtpdF9zdXBw
b3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJlYW1D
bGllbnQoKQogewogICAgIGlmICghbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCkpCi0gICAg
ICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIobmV3IHdlYmtpdF9zdXBwb3J0
OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQobWVkaWFTdHJlYW1VdGlsKCkpKTsKKyAgICAgICAgbV90
ZXN0TWVkaWFTdHJlYW1DbGllbnQgPSBhZG9wdFB0cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RN
ZWRpYVN0cmVhbUNsaWVudCgpKTsKICAgICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CmluZGV4IDZmNzU5NzI4ZjAxODkzNjE1YWMwOTE1MWE5NTM3NjMxYzU3YjQyNGUuLmEzNDBhMTFm
MzQ1YjA4NWNiZWM1ZDg5MDNiZTc4YzBjZDRkNmEyYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjQ1LDYgKzI0NSw5IEBAIGNsYXNzIFdlYlZp
ZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdlYktp
dDo6V2ViVmlld0NsCiAgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRU
ZXN0Q29udHJvbGxlcgogICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9s
b2NhdGlvbkNsaWVudE1vY2soKTsKIAorICAgIC8vIFVzZXIgbWVkaWEgY2xpZW50IG1vY2tzIGZv
ciBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9j
ayogdXNlck1lZGlhQ2xpZW50TW9jaygpOworCiAgICAgLy8gUGVuZGluZyB0YXNrIGxpc3QsIE5v
dGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gTWV0aG9kVGFzayBjbGFzcy4KICAg
ICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCkBAIC0zMDUs
OCArMzA4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
OwogI2VuZGlmCiAKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRp
YUNsaWVudE1vY2soKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBtZWRp
YVN0cmVhbVV0aWwoKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50
KiB0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKTsKIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFj
dGlvbnMganVzdCBwcmludG91dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNw
cAppbmRleCAxOTk4YzJlYjhkNTQ4MTRmMTEyMTQyNjIxMzUwOGU4MDBkMGEwNjhlLi42MjlmNmI5
ZDIwMWY1NDU0NjlhNWRiNDI1ZGFlOGNiNDEzNzBkMDhkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTM3Niw2ICsz
NzYsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdChib29sLCBib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3Ry
ZWFtIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2NDU5LgorfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJl
ck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAx
MjY2Y2NiMTJjOGJmNDJiYzI5MDgxZmE4MWMwN2Y1ZjRmMTM4YzM3Li5mMTg1NGY0NGRlY2M5OTVi
YWRhZWE2MmMyNDE4ODgzNmRkOTMzMzNjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTUyMCw2ICs1MjAsMTIgQEAg
aW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVt
YmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHModmlldyk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBh
dWRpbywgYm9vbCB2aWRlbykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0
cmVhbSBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjQ1OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVu
Y2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZWRkM2M2MTkxYmNiYTAwMTI1
Y2U5MWY0ZjM1MzgxZjIxZDc4NDZmNC4uNTdlZjllNTRlZjcwYmIwZTVkYTU4Zjg4OGY3ZjlmYWRi
ZDE1ZTZmNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbQpAQCAtNTM5LDYgKzUzOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBbW1ttYWlu
RnJhbWUgd2ViVmlld10gVUlEZWxlZ2F0ZV0gZGlkU2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lv
bl07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGZvciBNZWRpYVN0cmVhbSBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQ1OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91
YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDVlOGQ2NTE5
MWU4NDU2MjE5MWFlN2ZmNTQ1MWY0NjQxZjgxOGYyYWIuLmJiMTY2MGVmMTc4ZTVjNmE2ZmE3YjNi
MTJlODA1MjkwOGNlNzhkZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC04OTAsNiArODkwLDEyIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvCiAgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihwYWdlLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQo
Ym9vbCBhdWRpbywgYm9vbCB2aWRlbykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBN
ZWRpYVN0cmVhbSBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NjQ1OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91Ymxl
IGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggNDc1YjkyNDA3NWM0
OTkxMDExMjVkNzdhMDAxZTU2YWIwZTVmN2ZmYi4uMjAzZTM2OGRkODdiYjBkMDdlZTRlODM2NGU5
MGY1ODBiOTk3MWFmNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaApAQCAtMjM1LDYgKzIzNSw4IEBAIHB1YmxpYyBzbG90czoKICAgICBi
b29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlb2xv
Y2F0aW9uUGVybWlzc2lvblNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAgIHZvaWQgc2V0
TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKTsKKwogICAgIHZv
aWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91Ymxl
IGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tT
cGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0
KGNvbnN0IFFTdHJpbmcmIGlucHV0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCA1MTg1YThmZDc1N2Fi
NThhY2VkZTQyOGVlNzg5NzBkZjRmMDg5MmNjLi5mMGM3YzQxMDY0MjM4NjIwZjNhNTIxZDA3OGRj
M2I3NTc4ZDczYzhmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTQzMiw2ICs0MzIsMTIgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5n
UmVmIG1lc3NhZ2UKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4MjY0LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0
VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAKaW5kZXggZmY3NDY0NDBlYzU0YzljODJhMzhkZGI5MTI3YWJiOGZhODZmNzk3NS4uOGEzODFm
YjdhZTQwOTg3MjA3MzVjMGM0ZWIwN2I0NmYwNjZlMGI1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTM3MCw2ICszNzAs
MTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIC0xOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wg
dmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0
IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmlu
Z1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5w
dXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlODg1NDMzMDAzZTU0NDY5NzE1YmQwNTliYWYzMTMx
OThiZThiNGEuLmUwMTI3NGQyMWE4MzE4MmI2YmQ1NmFiNjY0MmQwODA1MTZjOWZiZmQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMi0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdA
Z29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEg
bW9jayByZXN1bHQgbWFuaXB1bGF0aW9uIHRvIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
LW5vdC1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vc2Ny
aXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qczogQWRkZWQuCisgICAgICAgIChz
dWNjZWVkKToKKyAgICAgICAgKGZhaWwpOgorCiAyMDEyLTAyLTE2ICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZXhw
ZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwMDY3OTJkYjMyZGVmYmQ3YTYyOTUzNDkwYTEyYmViZWFiYmM4NzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVu
dHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIE5hdmlnYXRvci5nZXRVc2Vy
TWVkaWEoKSBwYXJhbWV0ZXIgcGFyc2luZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVk
aW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAx
CitQQVNTIFN0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlv
VHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMAor
UEFTUyBTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5hdWRpb1Ry
YWNrcy5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY3MzdiMzc1ZjA2MmFhNjIzYzc0ZGZiMGVkYTIxM2FlNmIzMTBh
N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS1hcmd1bWVudHMuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8L2JvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIE5hdmlnYXRvci5nZXRVc2Vy
TWVkaWEoKSBwYXJhbWV0ZXIgcGFyc2luZy4iKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRo
ZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KHRydWUsIHRydWUpOworCitmdW5jdGlvbiBzdWNjZWVkMShzKSB7
CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAg
IHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAn
MScpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKwor
ICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZDIsIGZhaWwp
OworfQorCitmdW5jdGlvbiBzdWNjZWVkMihzKSB7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNy
ZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUo
J3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0u
dmlkZW9UcmFja3MubGVuZ3RoJywgJzAnKTsKKworICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoInZpZGVvIiwgc3VjY2VlZDMsIGZhaWwpOworfQorCitmdW5jdGlvbiBzdWNjZWVkMyhz
KSB7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOwor
ICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgn
LCAnMCcpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBmYWlsKCkgeworICAgIHRlc3RG
YWlsZWQoJ1Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCB2aWRlbyIsIHN1Y2NlZWQxLCBmYWls
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzU2ZDRmMGU2MjcyMzBkNmQ2M2YxZTgyNGY5ZjUwM2Qy
NWJlYTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3RzIE5hdmlnYXRvci5nZXRVc2VyTWVkaWEoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dl
ZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1h
bGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1u
b3QtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhN2ZiMWM3OWVkZDA4ODE5YTA1ZGE0NGMyZjBl
OGQ5NDc3MDFhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZ2V0dXNlcm1l
ZGlhLW5vdC1hbGxvd2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRp
YS1ub3QtYWxsb3dlZC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRl
c3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmU3Mzg0MDQxNDJj
MTVjNWJhZjNjM2VjM2I0MWEwMDcxYjcxNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2Vk
LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNl
ck1lZGlhKCkiKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVi
dWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJv
bGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0
KGZhbHNlLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3RyZWFtKSB7CisgICAgdGVzdEZh
aWxlZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAgICB0
ZXN0UGFzc2VkKCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127548</attachid>
            <date>2012-02-17 01:13:42 -0800</date>
            <delta_ts>2012-02-17 05:27:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120217101338.patch</filename>
            <type>text/plain</type>
            <size>51777</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYwNTczMzJkNmI5OGM5
ZjQ0NDA4OWRjNmVlYjI5ZDlmZDk4NDIyNi4uY2IxYjRmMDYzM2NmZWM3OWJkZTM5OWU3Y2MyYmZi
OTU5OTFkNTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0xNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2Ugc3RhdGljIGNvdW50ZXJzIGZvciBl
c3RpbWF0aW9uIG9mIGFsbG9jYXRlZCBEb2N1bWVudHMsIE5vZGVzIGFuZCBKUyBFdmVudExpc3Rl
bmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMzZhMmJiZjkyZDQ5N2EzYzIyZjBj
NWJlODU5NDUwZTE5YWViNzIyLi5jMjcyNzkwODUyOTQwYzMzMTFiYTJlNDhjNzM2N2E3MWQ1Nzgx
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAy
LTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1l
ZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24g
dG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6V2ViVXNlck1lZGlh
Q2xpZW50TW9jayk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyTWVkaWFDbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDItMTYgIEFsZXhhbmRyZSBFbGlhcyAgPGFl
bGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQnVuZGxlIHBhZ2Ugc2NhbGUg
ZmFjdG9yIGFuZCBsaW1pdHMgaW4gQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
OGJlODBmMzYzYmJiYzI1NTQzYTRlYjhlOWZlMDY1MTQ3ODRlYjRhOC4uYTgzNDFlYmYzNzM1Mjli
OGQ2Y2RmYWM0ZDVmMGU0YmM1NjRiMWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjU4OCw2ICsy
NTg4LDggQEAKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywKICAg
ICAgICAgICAgICdtZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAg
ICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAnbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZmOTdmZTI3ZDE1YjdhZWI0NWUzOTRhMWUzMmVlYjA3NmQwNDI0MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1v
Y2suY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50TW9jay5o
IgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPFVzZXJNZWRpYUNsaWVudE1vY2s+IFVzZXJNZWRpYUNsaWVudE1vY2s6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFDbGllbnRNb2Nr
KCkpOworfQorCitVc2VyTWVkaWFDbGllbnRNb2NrOjpVc2VyTWVkaWFDbGllbnRNb2NrKCkKKyAg
ICA6IG1fYWxsb3dBdWRpbyhmYWxzZSkKKyAgICAsIG1fYWxsb3dWaWRlbyhmYWxzZSkKK3sKK30K
Kwordm9pZCBVc2VyTWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBh
bGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8pCit7CisgICAgbV9hbGxvd0F1ZGlvID0gYWxsb3dB
dWRpbzsKKyAgICBtX2FsbG93VmlkZW8gPSBhbGxvd1ZpZGVvOworfQorCit2b2lkIFVzZXJNZWRp
YUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJikKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVx
dWVzdCA9IHBycFJlcXVlc3Q7CisgICAgQVNTRVJUKCEhcmVxdWVzdCk7CisKKyAgICBpZiAoIW1f
YWxsb3dBdWRpbyAmJiAhbV9hbGxvd1ZpZGVvKSB7CisgICAgICAgIHJlcXVlc3QtPmZhaWwoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOworCisgICAgaWYgKHJlcXVlc3QtPmF1ZGlvKCkgJiYg
bV9hbGxvd0F1ZGlvKSB7CisgICAgICAgIFN0cmluZyBpZCA9ICJtb2NrX2F1ZGlvX2RldmljZSI7
CisgICAgICAgIFN0cmluZyBuYW1lID0gIkF1ZGlvQ2FwdHVyZSI7CisgICAgICAgIGF1ZGlvU291
cmNlcy5hcHBlbmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShpZCwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlR5cGVBdWRpbywgbmFtZSkpOworICAgIH0KKworICAgIGlmIChyZXF1ZXN0LT52aWRlbygp
ICYmIG1fYWxsb3dWaWRlbykgeworICAgICAgICBTdHJpbmcgaWQgPSAibW9ja192aWRlb19kZXZp
Y2UiOworICAgICAgICBTdHJpbmcgbmFtZSA9ICJWaWRlb0NhcHR1cmUiOworICAgICAgICB2aWRl
b1NvdXJjZXMuYXBwZW5kKE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3RyZWFt
U291cmNlOjpUeXBlVmlkZW8sIG5hbWUpKTsKKyAgICB9CisKKyAgICByZXF1ZXN0LT5zdWNjZWVk
KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRN
b2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3OWUwMzM1MzE3MTk4NzQyYTY5NWQwZDg1MDgyZTI0Mjc2YjFjMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRN
b2NrLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50TW9j
a19oCisjZGVmaW5lIFVzZXJNZWRpYUNsaWVudE1vY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFVzZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxV
c2VyTWVkaWFDbGllbnRNb2NrPiwgcHVibGljIFVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAg
flVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKworICAgIHZvaWQgc2V0R2V0VXNlck1lZGlhUmVz
dWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKTsKKworICAgIC8vIFVzZXJNZWRp
YUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiwgY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxV
c2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBVc2Vy
TWVkaWFDbGllbnRNb2NrKCk7CisKKyAgICBib29sIG1fYWxsb3dBdWRpbzsKKyAgICBib29sIG1f
YWxsb3dWaWRlbzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhNDFjNmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2
OGVjNTNiYTdkOGI2Li5hNzZlZmNhMDVkM2Q3ZjA5OWVjOTY4YzZjODNhNjA4NzNmMzlhNTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNjUsNiArMjY1LDcgQEAKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJVUkxMb2FkZXJPcHRpb25zLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1l
ZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVmlld0NsaWVudC5oJywKQEAgLTY2Nyw2ICs2NjgsNyBAQAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVS
TFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTEVycm9yLmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmll
d0ltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBkZWM4NTk4Mzk2YzNkZTcwYzc1Zjlj
OGQ4ZTkzZmNjNjIyZGE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
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
ZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9j
a19oCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQgewor
cHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlh
Q2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0K
KworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxv
d0F1ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gV2ViVXNlck1lZGlhQ2xpZW50Cisg
ICAgV0VCS0lUX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYg
YXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRl
b1NvdXJjZXMpOworICAgIFdFQktJVF9FWFBPUlQgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCitwcml2YXRlOgorICAgIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKworICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jaz4gbV9wcml2YXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGll
bnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJN
ZWRpYVJlcXVlc3QuaAppbmRleCAzOGZiMTg5OGI3MzY2MmQ5ODI4NzY5NDZmYzBiYTMxZmFmODg3
M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkxNDc2Nzk5NmZlOTMxNzdkMjRjMzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBA
IC03MSwxMiArNzEsMTMgQEAgcHVibGljOgogICAgIC8vIERFUFJFQ0FURUQKICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBh
dWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVv
U291cmNlcykgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKSBj
b25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlVzZXJNZWRpYVJlcXVl
c3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYpOwogICAgIG9w
ZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3Q7CisgICAgb3BlcmF0b3Ig
UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0OwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKaW5kZXgg
N2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3YjQ3NjgwOC4uY2IwODk2NzdhNTFjMmZm
YzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyAg
ICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCmlu
ZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0MTg0OWNjZGZjYTZmZjdlYjhmMTMuLjVjNmM5NjdmNDNl
NTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3YjJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCkBA
IC04Miw2ICs4MiwxMSBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmRpZENv
bXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZQogICAgIG1fcHJpdmF0ZS0+
ZGlkQ29tcGxldGVRdWVyeShhdWRpbywgdmlkZW8pOwogfQogCitXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDZiMGYwZWMzMzY4ODQzYTMxNGE1ZmE4YTk4MjY1YTJj
OWVmZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5o
IgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaz4gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAg
ICBPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbW9jayA9IGFkb3B0UHRyKG5ldyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrKCkpOworICAgIG1vY2stPmluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gbW9jay5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5p
dGlhbGl6ZSgpCit7CisgICAgbV9wcml2YXRlID0gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9j
azo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNl
ck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1f
cHJpdmF0ZS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0KGFsbG93QXVkaW8sIGFsbG93VmlkZW8pOwor
fQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3Qg
V2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1T
b3VyY2U+JiB2aWRlb1NvdXJjZXMpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVk
aW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07Cisg
ICAgICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3IgdmlkZW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJj
ZXNbaV07CisgICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRl
LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcHJpdmF0ZS0+Y2FuY2VsVXNlck1lZGlh
UmVxdWVzdChyZXF1ZXN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA1YTc2YzgzYjBkZTg4ZGQwNWJhZWU5NDRi
ZmNmZTk1Y2UxMWI2MTI1Li44ZGQxZjlmY2FmYWQ2ODg5MzZlMTBiNjU3MjcwOTViYWQ3NTUxMmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcApAQCAtODYsNyArODYsNyBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3Jp
Z2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKIH0KIAotdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQordm9pZCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0
cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYlVzZXJNZWRp
YVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPgogICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlkZW8pOwogfQogCi12b2lk
IFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQordm9pZCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkgY29uc3QKIHsKICAgICBtX3ByaXZhdGUtPmZhaWwoKTsK
IH0KQEAgLTE0OCw2ICsxNDgsMTEgQEAgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNl
ck1lZGlhUmVxdWVzdCooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAK
K1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVz
dD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYTFkMDc0ZDQxMGY1
YTMyZGUyYmU3NTY0Y2VkYWE1OTU2MTJhOGYzLi4zNDg4NjUzOWIxMzkzM2FmNDIyNGZiMWQzZGZk
OGYwZDRjYTliYjc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNl
ck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRl
c3RNZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorCiAyMDEyLTAyLTE2ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBN
YWtlIGluc3RhbGwgaXMgYnJva2VuIHdoZW4gYnVpbGRpbmcgd2l0aG91dCAtLWVuYWJsZS1ndGst
ZG9jCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAwNzM2YzAz
ODFiMzRjODhlMzA3ZTVmZmYzZDU0ZmQ2OTIwZjg3NTBlLi5lNmUwZjI1ZmViMzBiYzczYzRjOGQx
NzFmNWU1MTMwNzNmMTkxM2I2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKQEAgLTQ4LDggKzQ4LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQZXJtaXNz
aW9ucy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9X
ZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAg
IF0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMDc3YjA4MjM4YzYzOWM3N2RhZDEwNTljMjk4MTc5Y2VlNTcyNWYyOS4uYjc4MDNiMTU5MWI4
MzdhM2FlMzI2Y2ZlYWU4YzY0MGI2YjI3ODljMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjI4OCw2ICsyMjg4LDE3IEBAIHN0YXRpYyB2
b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0
KQogICAgIGNvbnRyb2xsZXItPmRlcmVmKCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1v
Y2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMikgeworICAgICAgICBib29sIGNhblByb3Zp
ZGVBdWRpbyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKKyAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlVmlkZW8gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3Vt
ZW50c1sxXSk7CisgICAgICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgICAgICBjb250cm9sbGVyLT5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNh
blByb3ZpZGVBdWRpbywgY2FuUHJvdmlkZVZpZGVvKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBA
IC0yNDUwLDYgKzI0NjEsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Iiwg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Iiwgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0
Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRQYWdlVmlzaWJpbGl0eSIsIHNldFBhZ2VWaXNpYmlsaXR5Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhMb2NhbGUiLCBzZXRQT1NJWExvY2FsZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApp
bmRleCA0NTI2NWRiNmRjNzBiNmYxYmQ3NjA5NDA5YjUwZTM3ZGRlNjEyMDlhLi5mMmM0ZmRiZjMw
N2RhYTYyNzg4NWRiNWFhNDA3MTJmNGQ1NGI1OWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
aW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBi
b29sIHZpZGVvKTsKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1Jl
ZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0
UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9s
bGVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91
dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMTQ5MDFhZWQ2M2I4YTZlZGUwYjFh
NzIzNWI1NzVlNTc1MjU1MTY5ZC4uNWUzOTMyMGIxZTAwYjJlYjg1Yzk3M2IxMjk5YzhlYmM1OWNh
ZDRjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcApAQCAtNjk4LDYgKzY5
OCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24oYm9vbCBhbGxvdykKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2Nh
dGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVu
dEluc3RhbmNlKCktPnBhZ2UoKSwgYWxsb3cpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29uc3QgSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDU0MjhlZmM5MWZjZmJmNDQxZDUyY2E1
YzVkMzNjZDBiZjVkODdmYTkuLjYyNWFlZWUyZjBlZmQ0YzM5MmYwZWYzYWUwYjZiY2U4NmRlY2Mx
ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJTY3JpcHRT
b3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKICNpbmNs
dWRlICJXZWJWaWV3LmgiCkBAIC0xODMsNiArMTg0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgi
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAg
ICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKKyAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGFnZVZpc2liaWxpdHkpOwogICAgIGJpbmRNZXRo
b2QoInNldFBsdWdpbnNFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5z
RW5hYmxlZCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTE5MTAsNiArMTkxMiwxNyBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2Nh
dGlvbkNsaWVudE1vY2soKS0+c2V0RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkg
fHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9y
PFdlYlZpZXdIb3N0Kj4gd2luZG93TGlzdCA9IG1fc2hlbGwtPndpbmRvd0xpc3QoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdpbmRvd0xpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgIHdp
bmRvd0xpc3RbaV0tPnVzZXJNZWRpYUNsaWVudE1vY2soKS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0
KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSwgYXJndW1lbnRzWzFdLnRvQm9vbGVhbigpKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmgKaW5kZXggOTliZDBjNDY5ZTFjMTUxZWY1NDA2NTNhYjc3MmRjZmJkYTJl
YTAwNy4uZWU1Yjk2MzA3YmM3N2Y0YzNlYjdhMDE4MzZjOTYxOTA5NjVkZTIwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CkBAIC0zNzEsNiArMzcxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCisgICAgLy8gTWVkaWFTdHJlYW0gcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgdm9pZCBz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKKwogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2Jq
ZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZv
aWQgYWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNDQyYTY3NjM5YjBm
NjFlODkwNjY4MThiMzE1NjNmZGU1ZTZlNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKLQotI2luY2x1
ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jaygpKTsKLX0KLQotYm9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
OjpJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJMJiB1cmwpCi17Ci0gICAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IoV2ViTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKHVybCkpOwotICAgIGlmIChkZXNjcmlwdG9yLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
IHNvdXJjZVZlY3RvcjsKLSAgICBkZXNjcmlwdG9yLnNvdXJjZXMoc291cmNlVmVjdG9yKTsKLSAg
ICBXZWJTdHJpbmcgdHJhY2tJZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZVZl
Y3Rvci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoc291cmNlVmVjdG9yW2ldLnR5cGUoKSA9
PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7Ci0gICAgICAgICAgICB0cmFja0lk
ID0gc291cmNlVmVjdG9yW2ldLmlkKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gdHJhY2tJZC5lcXVhbHMoIm1lZGlhc3RyZWFtdGVzdCIpOwotfQot
Ci12b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQotewotICAgIEFTU0VSVCghc3RyZWFt
UmVxdWVzdC5pc051bGwoKSk7Ci0KLSAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBz
dHJlYW1SZXF1ZXN0OwotICAgIGNvbnN0IHNpemVfdCBzaXplID0gMTsKLSAgICBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZlY3RvcihzaXplKTsKLSAgICBXZWJTdHJpbmcg
dHJhY2tJZCgibWVkaWFzdHJlYW10ZXN0Iik7Ci0gICAgV2ViU3RyaW5nIHRyYWNrTmFtZSgiVmlk
ZW9DYXB0dXJlIik7Ci0gICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUodHJhY2tJZCwgV2Vi
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgdHJhY2tOYW1lKTsKLSAgICByZXF1ZXN0LnJl
cXVlc3RTdWNjZWVkZWQoc291cmNlVmVjdG9yKTsKLX0KLQotdm9pZCBXZWJVc2VyTWVkaWFDbGll
bnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3Qm
KQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGQ5MTgzOWM2MjgyYWRhOWU0NTc4N2IwZDFjYzAwYWZjY2JkNjkw
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNk
ZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCi0KLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFD
bGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKLSNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVXNlck1l
ZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+
IGNyZWF0ZSgpOwotICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9Ci0KLSAgICBib29s
IElzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggYmVmYTNiNzE4MDI0YWMxNWE4MjdjNDlm
NThmYWUwNmY1NTBiNjYzZS4uMDRkZmFiNzk3YzM3ZjVlYzE0ZTFkZDExMGJkYTlmNDZkZGE3ODA1
YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApA
QCAtMTYzNiwxNSArMTYzNiwxMCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5v
dygpCiAgICAgd2ViVmlldygpLT5kaWRFeGl0RnVsbFNjcmVlbigpOwogfQogCi13ZWJraXRfc3Vw
cG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBXZWJWaWV3SG9zdDo6bWVkaWFTdHJlYW1VdGlsKCkKLXsK
LSAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50TW9jaygpOwotfQotCiB3ZWJraXRfc3VwcG9ydDo6
VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiBXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50
KCkKIHsKICAgICBpZiAoIW1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpKQotICAgICAgICBt
X3Rlc3RNZWRpYVN0cmVhbUNsaWVudCA9IGFkb3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVz
dE1lZGlhU3RyZWFtQ2xpZW50KG1lZGlhU3RyZWFtVXRpbCgpKSk7CisgICAgICAgIG1fdGVzdE1l
ZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIobmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFT
dHJlYW1DbGllbnQoKSk7CiAgICAgcmV0dXJuIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCA2Zjc1OTcyOGYwMTg5MzYxNWFjMDkxNTFhOTUzNzYzMWM1N2I0MjRlLi5hMzQwYTExZjM0NWIw
ODVjYmVjNWQ4OTAzYmU3OGMwY2Q0ZDZhMmE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTI0NSw2ICsyNDUsOSBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YlZpZXdDbAogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENv
bnRyb2xsZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CiAKKyAgICAvLyBVc2VyIG1lZGlhIGNsaWVudCBtb2NrcyBmb3IgTGF5
b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVz
ZXJNZWRpYUNsaWVudE1vY2soKTsKKwogICAgIC8vIFBlbmRpbmcgdGFzayBsaXN0LCBOb3RlIHRh
aHQgdGhlIG1ldGhvZCBpcyByZWZlcnJlZCBmcm9tIE1ldGhvZFRhc2sgY2xhc3MuCiAgICAgVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIApAQCAtMzA1LDggKzMw
OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKICNl
bmRpZgogCi0gICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGll
bnRNb2NrKCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCogbWVkaWFTdHJl
YW1VdGlsKCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVz
dE1lZGlhU3RyZWFtQ2xpZW50KCk7CiAKICAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25z
IGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5k
ZXggMTk5OGMyZWI4ZDU0ODE0ZjExMjE0MjYyMTM1MDhlODAwZDBhMDY4ZS4uNjI5ZjZiOWQyMDFm
NTQ1NDY5YTVkYjQyNWRhZThjYjQxMzcwZDA4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0zNzYsNiArMzc2LDEy
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihi
b29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQo
Ym9vbCwgYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQ1OS4KK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTI2NmNj
YjEyYzhiZjQyYmMyOTA4MWZhODFjMDdmNWY0ZjEzOGMzNy4uZjE4NTRmNDRkZWNjOTk1YmFkYWVh
NjJjMjQxODg4MzZkZDkzMzMzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MjAsNiArNTIwLDEyIEBAIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKHZpZXcpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8s
IGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0g
bGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBK
U1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVl
Y2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGVkZDNjNjE5MWJjYmEwMDEyNWNlOTFm
NGYzNTM4MWYyMWQ3ODQ2ZjQuLjU3ZWY5ZTU0ZWY3MGJiMGU1ZGE1OGY4ODhmN2Y5ZmFkYmQxNWU2
ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTUzOSw2ICs1MzksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1l
IHdlYlZpZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0
KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
TWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA1ZThkNjUxOTFlODQ1
NjIxOTFhZTdmZjU0NTFmNDY0MWY4MThmMmFiLi5iYjE2NjBlZjE3OGU1YzZhNmZhN2IzYjEyZTgw
NTI5MDhjZTc4ZGU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcApAQCAtODkwLDYgKzg5MCwxMiBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsbwogICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24ocGFnZSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wg
YXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFT
dHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDQ3NWI5MjQwNzVjNDk5MTAx
MTI1ZDc3YTAwMWU1NmFiMGU1ZjdmZmIuLjIwM2UzNjhkZDg3YmIwZDA3ZWU0ZTgzNjRlOTBmNTgw
Yjk5NzFhZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKQEAgLTIzNSw2ICsyMzUsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBp
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlv
blBlcm1pc3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lkIHNldE1vY2tH
ZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7CisKICAgICB2b2lkIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25z
dCBRU3RyaW5nJiBpbnB1dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggNTE4NWE4ZmQ3NTdhYjU4YWNl
ZGU0MjhlZTc4OTcwZGY0ZjA4OTJjYy4uZjBjN2M0MTA2NDIzODYyMGYzYTUyMWQwNzhkYzNiNzU3
OGQ3M2M4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCkBAIC00MzIsNiArNDMyLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBt
ZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJN
ZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5LgorfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmlu
ZGV4IGZmNzQ2NDQwZWM1NGM5YzgyYTM4ZGRiOTEyN2FiYjhmYTg2Zjc5NzUuLjhhMzgxZmI3YWU0
MDk4NzIwNzM1YzBjNGViMDdiNDZmMDY2ZTBiNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zNzAsNiArMzcwLDEyIEBA
IGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMoKQogICAgIHJldHVybiAtMTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVv
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0
cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
NDU5LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYg
bGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhMGM2ZmJmODhkZjQyNzViNTQ4NWI1NTcxYTkzNGM2N2M0YmQ5
M2VkLi5lMTdkZjEzODQ5OTk0YWQzYTAyZmExNTQ5OWMyMTA2ZjE3NzI1ZDBkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sg
cmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3Qt
YWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10
ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanM6IEFkZGVkLgorICAgICAgICAoc3VjY2Vl
ZCk6CisgICAgICAgIChmYWlsKToKKwogMjAxMi0wMi0xNyAgTm9lbCBHb3Jkb24gIDxub2VsLmdv
cmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZWJhc2VsaW5lIEpQRUcgaW1h
Z2UgcmVzdWx0cyBhZnRlciByMTA3Mzg5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDA2NzkyZGIzMmRlZmJkN2E2Mjk1MzQ5MGExMmJlYmVhYmJjODcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEt
YXJndW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBOYXZpZ2F0b3Iu
Z2V0VXNlck1lZGlhKCkgcGFyYW1ldGVyIHBhcnNpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIFN0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3Ry
ZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5n
dGggaXMgMQorUEFTUyBTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVh
bS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
IGlzIDAKK1BBU1MgU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0u
YXVkaW9UcmFja3MubGVuZ3RoIGlzIDAKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBp
cyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJn
dW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1h
cmd1bWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzM3YjM3NWYwNjJhYTYyM2M3NGRmYjBlZGEyMTNh
ZTZiMzEwYTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3Iu
Z2V0VXNlck1lZGlhKCkgcGFyYW1ldGVyIHBhcnNpbmcuIik7CisKK2lmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0
aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCh0cnVlLCB0cnVlKTsKKworZnVuY3Rpb24gc3VjY2Vl
ZDEocykgeworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4n
KTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcx
Jyk7CisKKyAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbyIsIHN1Y2NlZWQy
LCBmYWlsKTsKK30KKworZnVuY3Rpb24gc3VjY2VlZDIocykgeworICAgIHRlc3RQYXNzZWQoJ1N0
cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4nKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNo
b3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgn
c3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcwJyk7CisKKyAgICBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQzLCBmYWlsKTsKK30KKworZnVuY3Rpb24gc3Vj
Y2VlZDMocykgeworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1
bC4nKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3Mu
bGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcs
ICcxJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdTaG91bGQgbm90IGhhcHBlbicpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVk
MSwgZmFpbCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxs
b3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1NmQ0ZjBlNjI3MjMwZDZkNjNmMWU4MjRm
OWY1MDNkMjViZWEwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1MgTm90
IGFsbG93ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1ub3QtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtbm90LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdmYjFjNzllZGQwODgxOWEwNWRh
NDRjMmYwZThkOTQ3NzAxYTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2dl
dHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Nj
cmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJlNzM4
NDA0MTQyYzE1YzViYWYzYzNlYzNiNDFhMDA3MWI3MTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3Qt
YWxsb3dlZC5qcwpAQCAtMCwwICsxLDIxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9y
LmdldFVzZXJNZWRpYSgpIik7CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVz
dENvbnRyb2xsZXInKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdChmYWxzZSwgZmFsc2UpOworCitmdW5jdGlvbiBzdWNjZWVkKHN0cmVhbSkgeworICAg
IHRlc3RGYWlsZWQoJ1Nob3VsZCBub3QgaGFwcGVuJyk7Cit9CisKK2Z1bmN0aW9uIGZhaWwoKSB7
CisgICAgdGVzdFBhc3NlZCgnTm90IGFsbG93ZWQnKTsKK30KKworbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJhdWRpbyIsIHN1Y2NlZWQsIGZhaWwpOworbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgidmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKKword2luZG93LnN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127575</attachid>
            <date>2012-02-17 05:27:12 -0800</date>
            <delta_ts>2012-02-20 02:04:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120217142710.patch</filename>
            <type>text/plain</type>
            <size>51777</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYwNTczMzJkNmI5OGM5
ZjQ0NDA4OWRjNmVlYjI5ZDlmZDk4NDIyNi4uY2IxYjRmMDYzM2NmZWM3OWJkZTM5OWU3Y2MyYmZi
OTU5OTFkNTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0xNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2Ugc3RhdGljIGNvdW50ZXJzIGZvciBl
c3RpbWF0aW9uIG9mIGFsbG9jYXRlZCBEb2N1bWVudHMsIE5vZGVzIGFuZCBKUyBFdmVudExpc3Rl
bmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMzZhMmJiZjkyZDQ5N2EzYzIyZjBj
NWJlODU5NDUwZTE5YWViNzIyLi5jMjcyNzkwODUyOTQwYzMzMTFiYTJlNDhjNzM2N2E3MWQ1Nzgx
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAy
LTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1l
ZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24g
dG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6V2ViVXNlck1lZGlh
Q2xpZW50TW9jayk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyTWVkaWFDbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDItMTYgIEFsZXhhbmRyZSBFbGlhcyAgPGFl
bGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQnVuZGxlIHBhZ2Ugc2NhbGUg
ZmFjdG9yIGFuZCBsaW1pdHMgaW4gQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
OGJlODBmMzYzYmJiYzI1NTQzYTRlYjhlOWZlMDY1MTQ3ODRlYjRhOC4uYTgzNDFlYmYzNzM1Mjli
OGQ2Y2RmYWM0ZDVmMGU0YmM1NjRiMWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjU4OCw2ICsy
NTg4LDggQEAKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywKICAg
ICAgICAgICAgICdtZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAg
ICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAnbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZmOTdmZTI3ZDE1YjdhZWI0NWUzOTRhMWUzMmVlYjA3NmQwNDI0MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1v
Y2suY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50TW9jay5o
IgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPFVzZXJNZWRpYUNsaWVudE1vY2s+IFVzZXJNZWRpYUNsaWVudE1vY2s6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFDbGllbnRNb2Nr
KCkpOworfQorCitVc2VyTWVkaWFDbGllbnRNb2NrOjpVc2VyTWVkaWFDbGllbnRNb2NrKCkKKyAg
ICA6IG1fYWxsb3dBdWRpbyhmYWxzZSkKKyAgICAsIG1fYWxsb3dWaWRlbyhmYWxzZSkKK3sKK30K
Kwordm9pZCBVc2VyTWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBh
bGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8pCit7CisgICAgbV9hbGxvd0F1ZGlvID0gYWxsb3dB
dWRpbzsKKyAgICBtX2FsbG93VmlkZW8gPSBhbGxvd1ZpZGVvOworfQorCit2b2lkIFVzZXJNZWRp
YUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJikKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVx
dWVzdCA9IHBycFJlcXVlc3Q7CisgICAgQVNTRVJUKCEhcmVxdWVzdCk7CisKKyAgICBpZiAoIW1f
YWxsb3dBdWRpbyAmJiAhbV9hbGxvd1ZpZGVvKSB7CisgICAgICAgIHJlcXVlc3QtPmZhaWwoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOworCisgICAgaWYgKHJlcXVlc3QtPmF1ZGlvKCkgJiYg
bV9hbGxvd0F1ZGlvKSB7CisgICAgICAgIFN0cmluZyBpZCA9ICJtb2NrX2F1ZGlvX2RldmljZSI7
CisgICAgICAgIFN0cmluZyBuYW1lID0gIkF1ZGlvQ2FwdHVyZSI7CisgICAgICAgIGF1ZGlvU291
cmNlcy5hcHBlbmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShpZCwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlR5cGVBdWRpbywgbmFtZSkpOworICAgIH0KKworICAgIGlmIChyZXF1ZXN0LT52aWRlbygp
ICYmIG1fYWxsb3dWaWRlbykgeworICAgICAgICBTdHJpbmcgaWQgPSAibW9ja192aWRlb19kZXZp
Y2UiOworICAgICAgICBTdHJpbmcgbmFtZSA9ICJWaWRlb0NhcHR1cmUiOworICAgICAgICB2aWRl
b1NvdXJjZXMuYXBwZW5kKE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3RyZWFt
U291cmNlOjpUeXBlVmlkZW8sIG5hbWUpKTsKKyAgICB9CisKKyAgICByZXF1ZXN0LT5zdWNjZWVk
KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRN
b2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ3OWUwMzM1MzE3MTk4NzQyYTY5NWQwZDg1MDgyZTI0Mjc2YjFjMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRN
b2NrLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lZGlhQ2xpZW50TW9j
a19oCisjZGVmaW5lIFVzZXJNZWRpYUNsaWVudE1vY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFVzZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxV
c2VyTWVkaWFDbGllbnRNb2NrPiwgcHVibGljIFVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAg
flVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKworICAgIHZvaWQgc2V0R2V0VXNlck1lZGlhUmVz
dWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKTsKKworICAgIC8vIFVzZXJNZWRp
YUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiwgY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxV
c2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBVc2Vy
TWVkaWFDbGllbnRNb2NrKCk7CisKKyAgICBib29sIG1fYWxsb3dBdWRpbzsKKyAgICBib29sIG1f
YWxsb3dWaWRlbzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhNDFjNmQwNzM4NjMxMDUyOGQ5MzUxOWI4NDg2
OGVjNTNiYTdkOGI2Li5hNzZlZmNhMDVkM2Q3ZjA5OWVjOTY4YzZjODNhNjA4NzNmMzlhNTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNjUsNiArMjY1LDcgQEAKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJVUkxMb2FkZXJPcHRpb25zLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1l
ZGlhQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViVmlld0NsaWVudC5oJywKQEAgLTY2Nyw2ICs2NjgsNyBAQAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVVJMUmVzcG9uc2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVS
TFJlc3BvbnNlUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTEVycm9yLmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmll
d0ltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBkZWM4NTk4Mzk2YzNkZTcwYzc1Zjlj
OGQ4ZTkzZmNjNjIyZGE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
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
ZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9j
a19oCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQgewor
cHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlh
Q2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0K
KworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxv
d0F1ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gV2ViVXNlck1lZGlhQ2xpZW50Cisg
ICAgV0VCS0lUX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYg
YXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRl
b1NvdXJjZXMpOworICAgIFdFQktJVF9FWFBPUlQgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCitwcml2YXRlOgorICAgIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKworICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jaz4gbV9wcml2YXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGll
bnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJN
ZWRpYVJlcXVlc3QuaAppbmRleCAzOGZiMTg5OGI3MzY2MmQ5ODI4NzY5NDZmYzBiYTMxZmFmODg3
M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkxNDc2Nzk5NmZlOTMxNzdkMjRjMzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBA
IC03MSwxMiArNzEsMTMgQEAgcHVibGljOgogICAgIC8vIERFUFJFQ0FURUQKICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBh
dWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVv
U291cmNlcykgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKSBj
b25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlVzZXJNZWRpYVJlcXVl
c3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYpOwogICAgIG9w
ZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3Q7CisgICAgb3BlcmF0b3Ig
UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0OwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKaW5kZXgg
N2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3YjQ3NjgwOC4uY2IwODk2NzdhNTFjMmZm
YzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyAg
ICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xp
ZW50PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCmlu
ZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0MTg0OWNjZGZjYTZmZjdlYjhmMTMuLjVjNmM5NjdmNDNl
NTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3YjJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCkBA
IC04Miw2ICs4MiwxMSBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmRpZENv
bXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZQogICAgIG1fcHJpdmF0ZS0+
ZGlkQ29tcGxldGVRdWVyeShhdWRpbywgdmlkZW8pOwogfQogCitXZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDZiMGYwZWMzMzY4ODQzYTMxNGE1ZmE4YTk4MjY1YTJj
OWVmZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5o
IgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaz4gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAg
ICBPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbW9jayA9IGFkb3B0UHRyKG5ldyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrKCkpOworICAgIG1vY2stPmluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gbW9jay5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5p
dGlhbGl6ZSgpCit7CisgICAgbV9wcml2YXRlID0gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9j
azo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNl
ck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1f
cHJpdmF0ZS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0KGFsbG93QXVkaW8sIGFsbG93VmlkZW8pOwor
fQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3Qg
V2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1T
b3VyY2U+JiB2aWRlb1NvdXJjZXMpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVk
aW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07Cisg
ICAgICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3IgdmlkZW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJj
ZXNbaV07CisgICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRl
LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcHJpdmF0ZS0+Y2FuY2VsVXNlck1lZGlh
UmVxdWVzdChyZXF1ZXN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA1YTc2YzgzYjBkZTg4ZGQwNWJhZWU5NDRi
ZmNmZTk1Y2UxMWI2MTI1Li44ZGQxZjlmY2FmYWQ2ODg5MzZlMTBiNjU3MjcwOTViYWQ3NTUxMmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1
ZXN0LmNwcApAQCAtODYsNyArODYsNyBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3Jp
Z2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKIH0KIAotdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQordm9pZCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0
cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYlVzZXJNZWRp
YVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPgogICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlkZW8pOwogfQogCi12b2lk
IFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQordm9pZCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkgY29uc3QKIHsKICAgICBtX3ByaXZhdGUtPmZhaWwoKTsK
IH0KQEAgLTE0OCw2ICsxNDgsMTEgQEAgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNl
ck1lZGlhUmVxdWVzdCooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAK
K1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVz
dD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYTFkMDc0ZDQxMGY1
YTMyZGUyYmU3NTY0Y2VkYWE1OTU2MTJhOGYzLi4zNDg4NjUzOWIxMzkzM2FmNDIyNGZiMWQzZGZk
OGYwZDRjYTliYjc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNl
ck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRl
c3RNZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorCiAyMDEyLTAyLTE2ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBN
YWtlIGluc3RhbGwgaXMgYnJva2VuIHdoZW4gYnVpbGRpbmcgd2l0aG91dCAtLWVuYWJsZS1ndGst
ZG9jCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAwNzM2YzAz
ODFiMzRjODhlMzA3ZTVmZmYzZDU0ZmQ2OTIwZjg3NTBlLi5lNmUwZjI1ZmViMzBiYzczYzRjOGQx
NzFmNWU1MTMwNzNmMTkxM2I2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKQEAgLTQ4LDggKzQ4LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQZXJtaXNz
aW9ucy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9X
ZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAg
IF0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMDc3YjA4MjM4YzYzOWM3N2RhZDEwNTljMjk4MTc5Y2VlNTcyNWYyOS4uYjc4MDNiMTU5MWI4
MzdhM2FlMzI2Y2ZlYWU4YzY0MGI2YjI3ODljMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjI4OCw2ICsyMjg4LDE3IEBAIHN0YXRpYyB2
b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0
KQogICAgIGNvbnRyb2xsZXItPmRlcmVmKCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1v
Y2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMikgeworICAgICAgICBib29sIGNhblByb3Zp
ZGVBdWRpbyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKKyAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlVmlkZW8gPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3Vt
ZW50c1sxXSk7CisgICAgICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgICAgICBjb250cm9sbGVyLT5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNh
blByb3ZpZGVBdWRpbywgY2FuUHJvdmlkZVZpZGVvKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBA
IC0yNDUwLDYgKzI0NjEsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Iiwg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Iiwgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0
Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRQYWdlVmlzaWJpbGl0eSIsIHNldFBhZ2VWaXNpYmlsaXR5Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhMb2NhbGUiLCBzZXRQT1NJWExvY2FsZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApp
bmRleCA0NTI2NWRiNmRjNzBiNmYxYmQ3NjA5NDA5YjUwZTM3ZGRlNjEyMDlhLi5mMmM0ZmRiZjMw
N2RhYTYyNzg4NWRiNWFhNDA3MTJmNGQ1NGI1OWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
aW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBi
b29sIHZpZGVvKTsKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1Jl
ZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0
UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9s
bGVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91
dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMTQ5MDFhZWQ2M2I4YTZlZGUwYjFh
NzIzNWI1NzVlNTc1MjU1MTY5ZC4uNWUzOTMyMGIxZTAwYjJlYjg1Yzk3M2IxMjk5YzhlYmM1OWNh
ZDRjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcApAQCAtNjk4LDYgKzY5
OCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24oYm9vbCBhbGxvdykKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2Nh
dGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVu
dEluc3RhbmNlKCktPnBhZ2UoKSwgYWxsb3cpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29uc3QgSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDU0MjhlZmM5MWZjZmJmNDQxZDUyY2E1
YzVkMzNjZDBiZjVkODdmYTkuLjYyNWFlZWUyZjBlZmQ0YzM5MmYwZWYzYWUwYjZiY2U4NmRlY2Mx
ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJTY3JpcHRT
b3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKICNpbmNs
dWRlICJXZWJWaWV3LmgiCkBAIC0xODMsNiArMTg0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgi
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAg
ICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKKyAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGFnZVZpc2liaWxpdHkpOwogICAgIGJpbmRNZXRo
b2QoInNldFBsdWdpbnNFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5z
RW5hYmxlZCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTE5MTAsNiArMTkxMiwxNyBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2Nh
dGlvbkNsaWVudE1vY2soKS0+c2V0RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkg
fHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9y
PFdlYlZpZXdIb3N0Kj4gd2luZG93TGlzdCA9IG1fc2hlbGwtPndpbmRvd0xpc3QoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdpbmRvd0xpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgIHdp
bmRvd0xpc3RbaV0tPnVzZXJNZWRpYUNsaWVudE1vY2soKS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0
KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSwgYXJndW1lbnRzWzFdLnRvQm9vbGVhbigpKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmgKaW5kZXggOTliZDBjNDY5ZTFjMTUxZWY1NDA2NTNhYjc3MmRjZmJkYTJl
YTAwNy4uZWU1Yjk2MzA3YmM3N2Y0YzNlYjdhMDE4MzZjOTYxOTA5NjVkZTIwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CkBAIC0zNzEsNiArMzcxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCisgICAgLy8gTWVkaWFTdHJlYW0gcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgdm9pZCBz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKKwogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2Jq
ZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZv
aWQgYWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNDQyYTY3NjM5YjBm
NjFlODkwNjY4MThiMzE1NjNmZGU1ZTZlNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKLQotI2luY2x1
ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jaygpKTsKLX0KLQotYm9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
OjpJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJMJiB1cmwpCi17Ci0gICAgV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IoV2ViTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKHVybCkpOwotICAgIGlmIChkZXNjcmlwdG9yLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
IHNvdXJjZVZlY3RvcjsKLSAgICBkZXNjcmlwdG9yLnNvdXJjZXMoc291cmNlVmVjdG9yKTsKLSAg
ICBXZWJTdHJpbmcgdHJhY2tJZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZVZl
Y3Rvci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoc291cmNlVmVjdG9yW2ldLnR5cGUoKSA9
PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7Ci0gICAgICAgICAgICB0cmFja0lk
ID0gc291cmNlVmVjdG9yW2ldLmlkKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gdHJhY2tJZC5lcXVhbHMoIm1lZGlhc3RyZWFtdGVzdCIpOwotfQot
Ci12b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQotewotICAgIEFTU0VSVCghc3RyZWFt
UmVxdWVzdC5pc051bGwoKSk7Ci0KLSAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBz
dHJlYW1SZXF1ZXN0OwotICAgIGNvbnN0IHNpemVfdCBzaXplID0gMTsKLSAgICBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZlY3RvcihzaXplKTsKLSAgICBXZWJTdHJpbmcg
dHJhY2tJZCgibWVkaWFzdHJlYW10ZXN0Iik7Ci0gICAgV2ViU3RyaW5nIHRyYWNrTmFtZSgiVmlk
ZW9DYXB0dXJlIik7Ci0gICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUodHJhY2tJZCwgV2Vi
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgdHJhY2tOYW1lKTsKLSAgICByZXF1ZXN0LnJl
cXVlc3RTdWNjZWVkZWQoc291cmNlVmVjdG9yKTsKLX0KLQotdm9pZCBXZWJVc2VyTWVkaWFDbGll
bnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3Qm
KQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGQ5MTgzOWM2MjgyYWRhOWU0NTc4N2IwZDFjYzAwYWZjY2JkNjkw
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNk
ZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCi0KLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFD
bGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKLSNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVXNlck1l
ZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+
IGNyZWF0ZSgpOwotICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9Ci0KLSAgICBib29s
IElzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggYmVmYTNiNzE4MDI0YWMxNWE4MjdjNDlm
NThmYWUwNmY1NTBiNjYzZS4uMDRkZmFiNzk3YzM3ZjVlYzE0ZTFkZDExMGJkYTlmNDZkZGE3ODA1
YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApA
QCAtMTYzNiwxNSArMTYzNiwxMCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5v
dygpCiAgICAgd2ViVmlldygpLT5kaWRFeGl0RnVsbFNjcmVlbigpOwogfQogCi13ZWJraXRfc3Vw
cG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBXZWJWaWV3SG9zdDo6bWVkaWFTdHJlYW1VdGlsKCkKLXsK
LSAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50TW9jaygpOwotfQotCiB3ZWJraXRfc3VwcG9ydDo6
VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiBXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50
KCkKIHsKICAgICBpZiAoIW1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpKQotICAgICAgICBt
X3Rlc3RNZWRpYVN0cmVhbUNsaWVudCA9IGFkb3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVz
dE1lZGlhU3RyZWFtQ2xpZW50KG1lZGlhU3RyZWFtVXRpbCgpKSk7CisgICAgICAgIG1fdGVzdE1l
ZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIobmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFT
dHJlYW1DbGllbnQoKSk7CiAgICAgcmV0dXJuIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCA2Zjc1OTcyOGYwMTg5MzYxNWFjMDkxNTFhOTUzNzYzMWM1N2I0MjRlLi5hMzQwYTExZjM0NWIw
ODVjYmVjNWQ4OTAzYmU3OGMwY2Q0ZDZhMmE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTI0NSw2ICsyNDUsOSBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YlZpZXdDbAogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENv
bnRyb2xsZXIKICAgICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CiAKKyAgICAvLyBVc2VyIG1lZGlhIGNsaWVudCBtb2NrcyBmb3IgTGF5
b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVz
ZXJNZWRpYUNsaWVudE1vY2soKTsKKwogICAgIC8vIFBlbmRpbmcgdGFzayBsaXN0LCBOb3RlIHRh
aHQgdGhlIG1ldGhvZCBpcyByZWZlcnJlZCBmcm9tIE1ldGhvZFRhc2sgY2xhc3MuCiAgICAgVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIApAQCAtMzA1LDggKzMw
OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKICNl
bmRpZgogCi0gICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGll
bnRNb2NrKCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCogbWVkaWFTdHJl
YW1VdGlsKCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVz
dE1lZGlhU3RyZWFtQ2xpZW50KCk7CiAKICAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25z
IGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5k
ZXggMTk5OGMyZWI4ZDU0ODE0ZjExMjE0MjYyMTM1MDhlODAwZDBhMDY4ZS4uNjI5ZjZiOWQyMDFm
NTQ1NDY5YTVkYjQyNWRhZThjYjQxMzcwZDA4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0zNzYsNiArMzc2LDEy
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihi
b29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQo
Ym9vbCwgYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQ1OS4KK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTI2NmNj
YjEyYzhiZjQyYmMyOTA4MWZhODFjMDdmNWY0ZjEzOGMzNy4uZjE4NTRmNDRkZWNjOTk1YmFkYWVh
NjJjMjQxODg4MzZkZDkzMzMzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MjAsNiArNTIwLDEyIEBAIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKHZpZXcpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8s
IGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0g
bGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBK
U1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVl
Y2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGVkZDNjNjE5MWJjYmEwMDEyNWNlOTFm
NGYzNTM4MWYyMWQ3ODQ2ZjQuLjU3ZWY5ZTU0ZWY3MGJiMGU1ZGE1OGY4ODhmN2Y5ZmFkYmQxNWU2
ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTUzOSw2ICs1MzksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1l
IHdlYlZpZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0
KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
TWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA1ZThkNjUxOTFlODQ1
NjIxOTFhZTdmZjU0NTFmNDY0MWY4MThmMmFiLi5iYjE2NjBlZjE3OGU1YzZhNmZhN2IzYjEyZTgw
NTI5MDhjZTc4ZGU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcApAQCAtODkwLDYgKzg5MCwxMiBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsbwogICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24ocGFnZSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wg
YXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFT
dHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDQ3NWI5MjQwNzVjNDk5MTAx
MTI1ZDc3YTAwMWU1NmFiMGU1ZjdmZmIuLjIwM2UzNjhkZDg3YmIwZDA3ZWU0ZTgzNjRlOTBmNTgw
Yjk5NzFhZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKQEAgLTIzNSw2ICsyMzUsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBp
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlv
blBlcm1pc3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lkIHNldE1vY2tH
ZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7CisKICAgICB2b2lkIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25z
dCBRU3RyaW5nJiBpbnB1dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggNTE4NWE4ZmQ3NTdhYjU4YWNl
ZGU0MjhlZTc4OTcwZGY0ZjA4OTJjYy4uZjBjN2M0MTA2NDIzODYyMGYzYTUyMWQwNzhkYzNiNzU3
OGQ3M2M4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCkBAIC00MzIsNiArNDMyLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBt
ZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJN
ZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5LgorfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmlu
ZGV4IGZmNzQ2NDQwZWM1NGM5YzgyYTM4ZGRiOTEyN2FiYjhmYTg2Zjc5NzUuLjhhMzgxZmI3YWU0
MDk4NzIwNzM1YzBjNGViMDdiNDZmMDY2ZTBiNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zNzAsNiArMzcwLDEyIEBA
IGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMoKQogICAgIHJldHVybiAtMTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVv
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0
cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
NDU5LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYg
bGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhMGM2ZmJmODhkZjQyNzViNTQ4NWI1NTcxYTkzNGM2N2M0YmQ5
M2VkLi5lMTdkZjEzODQ5OTk0YWQzYTAyZmExNTQ5OWMyMTA2ZjE3NzI1ZDBkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sg
cmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3Qt
YWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10
ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanM6IEFkZGVkLgorICAgICAgICAoc3VjY2Vl
ZCk6CisgICAgICAgIChmYWlsKToKKwogMjAxMi0wMi0xNyAgTm9lbCBHb3Jkb24gIDxub2VsLmdv
cmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZWJhc2VsaW5lIEpQRUcgaW1h
Z2UgcmVzdWx0cyBhZnRlciByMTA3Mzg5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDA2NzkyZGIzMmRlZmJkN2E2Mjk1MzQ5MGExMmJlYmVhYmJjODcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEt
YXJndW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBOYXZpZ2F0b3Iu
Z2V0VXNlck1lZGlhKCkgcGFyYW1ldGVyIHBhcnNpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIFN0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3Ry
ZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5n
dGggaXMgMQorUEFTUyBTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVh
bS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
IGlzIDAKK1BBU1MgU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0u
YXVkaW9UcmFja3MubGVuZ3RoIGlzIDAKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBp
cyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJn
dW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1h
cmd1bWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzM3YjM3NWYwNjJhYTYyM2M3NGRmYjBlZGEyMTNh
ZTZiMzEwYTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3Iu
Z2V0VXNlck1lZGlhKCkgcGFyYW1ldGVyIHBhcnNpbmcuIik7CisKK2lmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0
aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCh0cnVlLCB0cnVlKTsKKworZnVuY3Rpb24gc3VjY2Vl
ZDEocykgeworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4n
KTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcx
Jyk7CisKKyAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbyIsIHN1Y2NlZWQy
LCBmYWlsKTsKK30KKworZnVuY3Rpb24gc3VjY2VlZDIocykgeworICAgIHRlc3RQYXNzZWQoJ1N0
cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4nKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNo
b3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgn
c3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcwJyk7CisKKyAgICBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQzLCBmYWlsKTsKK30KKworZnVuY3Rpb24gc3Vj
Y2VlZDMocykgeworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1
bC4nKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3Mu
bGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcs
ICcxJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdTaG91bGQgbm90IGhhcHBlbicpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVk
MSwgZmFpbCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxs
b3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1NmQ0ZjBlNjI3MjMwZDZkNjNmMWU4MjRm
OWY1MDNkMjViZWEwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1MgTm90IGFsbG93ZWQKK1BBU1MgTm90
IGFsbG93ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1ub3QtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtbm90LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdmYjFjNzllZGQwODgxOWEwNWRh
NDRjMmYwZThkOTQ3NzAxYTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2dl
dHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Nj
cmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJlNzM4
NDA0MTQyYzE1YzViYWYzYzNlYzNiNDFhMDA3MWI3MTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3Qt
YWxsb3dlZC5qcwpAQCAtMCwwICsxLDIxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9y
LmdldFVzZXJNZWRpYSgpIik7CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVz
dENvbnRyb2xsZXInKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdChmYWxzZSwgZmFsc2UpOworCitmdW5jdGlvbiBzdWNjZWVkKHN0cmVhbSkgeworICAg
IHRlc3RGYWlsZWQoJ1Nob3VsZCBub3QgaGFwcGVuJyk7Cit9CisKK2Z1bmN0aW9uIGZhaWwoKSB7
CisgICAgdGVzdFBhc3NlZCgnTm90IGFsbG93ZWQnKTsKK30KKworbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJhdWRpbyIsIHN1Y2NlZWQsIGZhaWwpOworbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgidmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKKword2luZG93LnN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127785</attachid>
            <date>2012-02-20 02:03:15 -0800</date>
            <delta_ts>2012-02-23 01:58:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120220110313.patch</filename>
            <type>text/plain</type>
            <size>52656</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTlhNDZmZGE3OGIwNWNj
MWYwODM0YzFmZjdkOWI4NTdhMjJkZTBkMC4uM2RlZWM1OGRjZWZiYTYyOGM0Y2M4OWExZjBhOWRk
NjlmNWY1NmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0yMCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW1dlYlNvY2tldF0gQWRkIGRlZmxhdGVyL2luZmxhdGVyIGNsYXNz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTk4MjBkOWQ3YzQwY2JlYjM5ZTY1NmEy
ZDc5NTU5ZDEwYzA2NmJlYy4uNjU2YzFhM2ZjMDYxZTg2NmJkMDk5ZGQ5ZWE0MmFjNmI0ZTU1MWVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wMi0x
NiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRp
YVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFuaXB1bGF0aW9uIHRv
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp+V2ViVXNlck1lZGlhQ2xpZW50TW9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OldlYlVzZXJNZWRpYUNs
aWVudE1vY2spOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVy
YXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Pik6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KToKKyAg
ICAgICAgKiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0Pik6
CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTAyLTIwICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbV2ViU29ja2V0XSBBZGQgZGVmbGF0ZXIvaW5m
bGF0ZXIgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIzMzdjMDk4YTFjYmZkYjRlNmNjOGRh
YTlmMDVkYjI5ZjY3M2ExZGQuLjI4MzFmODFjNzQ0NmQ3YzM3NTNiZDVjYmEwZDlhMjdjZGI2YmIw
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI1ODgsNiArMjU4OCw4IEBACiAgICAgICAgICAgICAn
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaCcsCiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0v
U2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q2xpZW50LmgnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2su
Y3BwJywKKyAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmgnLAog
ICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAg
ICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Zjk3ZmUyN2QxNWI3
YWViNDVlMzk0YTFlMzJlZWIwNzZkMDQyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxVc2VyTWVk
aWFDbGllbnRNb2NrPiBVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVXNlck1lZGlhQ2xpZW50TW9jaygpKTsKK30KKworVXNlck1lZGlhQ2xp
ZW50TW9jazo6VXNlck1lZGlhQ2xpZW50TW9jaygpCisgICAgOiBtX2FsbG93QXVkaW8oZmFsc2Up
CisgICAgLCBtX2FsbG93VmlkZW8oZmFsc2UpCit7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50
TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1Zp
ZGVvKQoreworICAgIG1fYWxsb3dBdWRpbyA9IGFsbG93QXVkaW87CisgICAgbV9hbGxvd1ZpZGVv
ID0gYWxsb3dWaWRlbzsKK30KKwordm9pZCBVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNl
ck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJwUmVxdWVzdCwgY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpCit7
CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAg
IEFTU0VSVCghIXJlcXVlc3QpOworCisgICAgaWYgKCFtX2FsbG93QXVkaW8gJiYgIW1fYWxsb3dW
aWRlbykgeworICAgICAgICByZXF1ZXN0LT5mYWlsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
czsKKworICAgIGlmIChyZXF1ZXN0LT5hdWRpbygpICYmIG1fYWxsb3dBdWRpbykgeworICAgICAg
ICBTdHJpbmcgaWQgPSAibW9ja19hdWRpb19kZXZpY2UiOworICAgICAgICBTdHJpbmcgbmFtZSA9
ICJBdWRpb0NhcHR1cmUiOworICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKE1lZGlhU3RyZWFt
U291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW8sIG5hbWUpKTsK
KyAgICB9CisKKyAgICBpZiAocmVxdWVzdC0+dmlkZW8oKSAmJiBtX2FsbG93VmlkZW8pIHsKKyAg
ICAgICAgU3RyaW5nIGlkID0gIm1vY2tfdmlkZW9fZGV2aWNlIjsKKyAgICAgICAgU3RyaW5nIG5h
bWUgPSAiVmlkZW9DYXB0dXJlIjsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChNZWRpYVN0
cmVhbVNvdXJjZTo6Y3JlYXRlKGlkLCBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCBuYW1l
KSk7CisgICAgfQorCisgICAgcmVxdWVzdC0+c3VjY2VlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlcyk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVx
dWVzdChVc2VyTWVkaWFSZXF1ZXN0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzllMDMzNTMxNzE5
ODc0MmE2OTVkMGQ4NTA4MmUyNDI3NmIxYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudE1vY2tfaAorI2RlZmluZSBVc2VyTWVkaWFD
bGllbnRNb2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVc2VyTWVk
aWFDbGllbnRNb2NrIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhQ2xpZW50TW9jaz4sIHB1
YmxpYyBVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVz
ZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOworICAgIH5Vc2VyTWVkaWFDbGllbnRNb2NrKCkg
eyB9CisKKyAgICB2b2lkIHNldEdldFVzZXJNZWRpYVJlc3VsdChib29sIGFsbG93QXVkaW8sIGJv
b2wgYWxsb3dWaWRlbyk7CisKKyAgICAvLyBVc2VyTWVkaWFDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgcGFnZURlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlh
KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiBhdWRpb1NvdXJjZXMsICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9T
b3VyY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0Kik7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhQ2xpZW50TW9jaygpOworCisg
ICAgYm9vbCBtX2FsbG93QXVkaW87CisgICAgYm9vbCBtX2FsbG93VmlkZW87Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggYTQxYzZkMDczODYzMTA1MjhkOTM1MTliODQ4NjhlYzUzYmE3ZDhiNi4uYTc2ZWZjYTA1
ZDNkN2YwOTllYzk2OGM2YzgzYTYwODczZjM5YTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtMjY1LDYgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyT3B0aW9ucy5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXdDbGllbnQuaCcs
CkBAIC02NjcsNiArNjY4LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNl
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXNwb25zZVByaXZhdGUuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxFcnJvci5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
VXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI4MjY4ZTEyZGQ2YWQxNGVlNmVmZjJjZmE2OTdlNWE5MTY5Yzc4ZDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
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
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50TW9j
a19oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiV2ViVXNl
ck1lZGlhQ2xpZW50LmgiCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3Ry
aW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhQ2xpZW50TW9j
azsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2sgOiBwdWJsaWMgV2ViVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOwor
ICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVv
KTsKKworICAgIC8vIFdlYlVzZXJNZWRpYUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRp
YVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCitwcml2YXRlOgor
ICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKyAgICB2b2lkIGluaXRpYWxpemUoKTsK
KworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jaz4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVk
aWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzOGZiMTg5OGI3MzY2MmQ5ODI4NzY5NDZmYzBiYTMx
ZmFmODg3M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkxNDc2Nzk5NmZlOTMxNzdkMjRjMzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVz
dC5oCkBAIC03MSwxMiArNzEsMTMgQEAgcHVibGljOgogICAgIC8vIERFUFJFQ0FURUQKICAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2Nl
ZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMs
IGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
IHZpZGVvU291cmNlcykgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWls
ZWQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlVzZXJNZWRp
YVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYpOwog
ICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29uc3Q7CisgICAgb3Bl
cmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0OwogI2Vu
ZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgK
aW5kZXggN2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3YjQ3NjgwOC4uY2IwODk2Nzdh
NTFjMmZmYzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4m
KTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qu
Y3BwCmluZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0MTg0OWNjZGZjYTZmZjdlYjhmMTMuLjVjNmM5
NjdmNDNlNTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3YjJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qu
Y3BwCkBAIC04Miw2ICs4MiwxMSBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6
OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZQogICAgIG1fcHJp
dmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShhdWRpbywgdmlkZW8pOwogfQogCitXZWJNZWRpYVN0cmVh
bVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDZiMGYwZWMzMzY4ODQzYTMxNGE1ZmE4YTk4
MjY1YTJjOWVmZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdp
c3RyeS5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8
V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkK
K3sKKyAgICBPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbW9jayA9IGFkb3B0UHRyKG5l
dyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOworICAgIG1vY2stPmluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gbW9jay5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9j
azo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9wcml2YXRlID0gV2ViQ29yZTo6VXNlck1lZGlhQ2xp
ZW50TW9jazo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0
R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKQorewor
ICAgIG1fcHJpdmF0ZS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0KGFsbG93QXVkaW8sIGFsbG93Vmlk
ZW8pOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3IgYXVkaW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNb
aV07CisgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3IgdmlkZW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJj
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRl
b1NvdXJjZXNbaV07CisgICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9w
cml2YXRlLT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3Zv
aWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcHJpdmF0ZS0+Y2FuY2VsVXNl
ck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA1YTc2YzgzYjBkZTg4ZGQwNWJh
ZWU5NDRiZmNmZTk1Y2UxMWI2MTI1Li44ZGQxZjlmY2FmYWQ2ODg5MzZlMTBiNjU3MjcwOTViYWQ3
NTUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVk
aWFSZXF1ZXN0LmNwcApAQCAtODYsNyArODYsNyBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3Vy
aXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKIH0KIAotdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVk
KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQordm9pZCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYlVz
ZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlh
U3RyZWFtU291cmNlPgogICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlkZW8pOwogfQog
Ci12b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQordm9pZCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkgY29uc3QKIHsKICAgICBtX3ByaXZhdGUtPmZh
aWwoKTsKIH0KQEAgLTE0OCw2ICsxNDgsMTEgQEAgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0
b3IgVXNlck1lZGlhUmVxdWVzdCooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7
CiB9CiAKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMzg3YzM0
NmRhODA3ZmI1ZGEzZDQwZjE3OTAwNzdjMDk4NDhhMDVjLi45MGM3YjNkMjIyYjE1YmJiNDhmODg0
ZGNjZGVhMGE1MTJhZTYzNDcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDItMTYgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQg
Z2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tHZXRVc2Vy
TWVkaWFSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1
bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorCiAyMDEyLTAyLTIw
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXgg
V2ViS2l0MkdUSysgZm9yICdtYWtlIGRpc3RjaGVjaycuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQppbmRleCAwNzM2YzAzODFiMzRjODhlMzA3ZTVmZmYzZDU0ZmQ2OTIw
Zjg3NTBlLi5lNmUwZjI1ZmViMzBiYzczYzRjOGQxNzFmNWU1MTMwNzNmMTkxM2I2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTQ4LDggKzQ4LDYgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZl
cmVuY2VzLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2su
Y3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDc3YjA4MjM4YzYzOWM3N2RhZDEwNTlj
Mjk4MTc5Y2VlNTcyNWYyOS4uYjc4MDNiMTU5MWI4MzdhM2FlMzI2Y2ZlYWU4YzY0MGI2YjI3ODlj
MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtMjI4OCw2ICsyMjg4LDE3IEBAIHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2Jq
ZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogICAgIGNvbnRyb2xsZXItPmRlcmVmKCk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PT0gMikgeworICAgICAgICBib29sIGNhblByb3ZpZGVBdWRpbyA9IEpTVmFsdWVUb0Jvb2xlYW4o
Y29udGV4dCwgYXJndW1lbnRzWzBdKTsKKyAgICAgICAgYm9vbCBjYW5Qcm92aWRlVmlkZW8gPSBK
U1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAgICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgICAgICBjb250cm9sbGVy
LT5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNhblByb3ZpZGVBdWRpbywgY2FuUHJvdmlkZVZp
ZGVvKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
fQorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFr
ZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDUwLDYgKzI0NjEsNyBAQCBKU1N0YXRp
Y0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAg
ICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Iiwg
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9y
d2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQYWdlVmlzaWJpbGl0eSIs
IHNldFBhZ2VWaXNpYmlsaXR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhM
b2NhbGUiLCBzZXRQT1NJWExvY2FsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0NTI2NWRiNmRjNzBiNmYxYmQ3NjA5
NDA5YjUwZTM3ZGRlNjEyMDlhLi5mMmM0ZmRiZjMwN2RhYTYyNzg4NWRiNWFhNDA3MTJmNGQ1NGI1
OWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3Nh
Z2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dl
dFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKTsKICAgICB2b2lkIGFkZE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1w
UmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5j
cHAKaW5kZXggMTQ5MDFhZWQ2M2I4YTZlZGUwYjFhNzIzNWI1NzVlNTc1MjU1MTY5ZC4uNWUzOTMy
MGIxZTAwYjJlYjg1Yzk3M2IxMjk5YzhlYmM1OWNhZDRjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xs
ZXJCbGFja0JlcnJ5LmNwcApAQCAtNjk4LDYgKzY5OCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgYWxsb3cp
OwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVz
dWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29u
c3QgSlNTdHJpbmdSZWYgbW9kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDNjM2I4M2JhMjlkNGM1ODA5NDRjNmJhYTI3MDQ3NGY4NDIxNTY3NmQuLmIxZDU0NjVj
OGQxZTdmZDQ5NDEyYjgxMWFmYzkyMjM2ZmY1ZGFhYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTU1LDYg
KzU1LDcgQEAKICNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCkBAIC0xODMsNiAr
MTg0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RT
aGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOwogICAgIGJp
bmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KTsKICAgICBi
aW5kTWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
UGFnZVZpc2liaWxpdHkpOwogICAgIGJpbmRNZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7CiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKQEAgLTE5MTIsNiArMTkxNCwxNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQog
ICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0RXJyb3Io
YXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sx
XSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlh
UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PCAyIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkgfHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFdlYlZpZXdIb3N0Kj4gd2luZG93TGlzdCA9
IG1fc2hlbGwtPndpbmRvd0xpc3QoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdpbmRv
d0xpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgIHdpbmRvd0xpc3RbaV0tPnVzZXJNZWRpYUNsaWVu
dE1vY2soKS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSwg
YXJndW1lbnRzWzFdLnRvQm9vbGVhbigpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOTliZDBj
NDY5ZTFjMTUxZWY1NDA2NTNhYjc3MmRjZmJkYTJlYTAwNy4uZWU1Yjk2MzA3YmM3N2Y0YzNlYjdh
MDE4MzZjOTYxOTA5NjVkZTIwNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zNzEsNiArMzcxLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gTWVkaWFTdHJlYW0g
cmVsYXRlZCBmdW5jdGlvbnMuCisgICAgdm9pZCBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIEVtcHR5IHN0dWIg
bWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFs
IExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBmNDQyYTY3NjM5YjBmNjFlODkwNjY4MThiMzE1NjNmZGU1ZTZlNzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlVz
ZXJNZWRpYUNsaWVudE1vY2suaCIKLQotI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnku
aCIKLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQot
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpKTsKLX0K
LQotYm9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJM
JiB1cmwpCi17Ci0gICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yIGRlc2NyaXB0b3IoV2ViTWVk
aWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVkaWFTdHJlYW1EZXNjcmlwdG9yKHVybCkpOwotICAg
IGlmIChkZXNjcmlwdG9yLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZlY3RvcjsKLSAgICBkZXNjcmlw
dG9yLnNvdXJjZXMoc291cmNlVmVjdG9yKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tJZDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZVZlY3Rvci5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAoc291cmNlVmVjdG9yW2ldLnR5cGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlw
ZVZpZGVvKSB7Ci0gICAgICAgICAgICB0cmFja0lkID0gc291cmNlVmVjdG9yW2ldLmlkKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJhY2tJZC5l
cXVhbHMoIm1lZGlhc3RyZWFtdGVzdCIpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVx
dWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNl
VmVjdG9yKQotewotICAgIEFTU0VSVCghc3RyZWFtUmVxdWVzdC5pc051bGwoKSk7Ci0KLSAgICBX
ZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBzdHJlYW1SZXF1ZXN0OwotICAgIGNvbnN0IHNp
emVfdCBzaXplID0gMTsKLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJj
ZVZlY3RvcihzaXplKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tJZCgibWVkaWFzdHJlYW10ZXN0Iik7
Ci0gICAgV2ViU3RyaW5nIHRyYWNrTmFtZSgiVmlkZW9DYXB0dXJlIik7Ci0gICAgc291cmNlVmVj
dG9yWzBdLmluaXRpYWxpemUodHJhY2tJZCwgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRl
bywgdHJhY2tOYW1lKTsKLSAgICByZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoc291cmNlVmVjdG9y
KTsKLX0KLQotdm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5MTgzOWM2
MjgyYWRhOWU0NTc4N2IwZDFjYzAwYWZjY2JkNjkwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9j
a19oCi0KLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJVUkwuaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlh
X3N0cmVhbV9jbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJV
c2VyTWVkaWFDbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHdl
YmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOwotICAgIH5XZWJVc2VyTWVk
aWFDbGllbnRNb2NrKCkgeyB9Ci0KLSAgICBib29sIElzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVx
dWVzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50
TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
aW5kZXggYmVmYTNiNzE4MDI0YWMxNWE4MjdjNDlmNThmYWUwNmY1NTBiNjYzZS4uMDRkZmFiNzk3
YzM3ZjVlYzE0ZTFkZDExMGJkYTlmNDZkZGE3ODA1YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTYzNiwxNSArMTYzNiwxMCBAQCB2b2lk
IFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdygpCiAgICAgd2ViVmlldygpLT5kaWRFeGl0
RnVsbFNjcmVlbigpOwogfQogCi13ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBXZWJW
aWV3SG9zdDo6bWVkaWFTdHJlYW1VdGlsKCkKLXsKLSAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50
TW9jaygpOwotfQotCiB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiBXZWJW
aWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkKIHsKICAgICBpZiAoIW1fdGVzdE1lZGlh
U3RyZWFtQ2xpZW50LmdldCgpKQotICAgICAgICBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudCA9IGFk
b3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KG1lZGlhU3Ry
ZWFtVXRpbCgpKSk7CisgICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIo
bmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQoKSk7CiAgICAgcmV0dXJu
IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA2Zjc1OTcyOGYwMTg5MzYxNWFjMDkxNTFh
OTUzNzYzMWM1N2I0MjRlLi5hMzQwYTExZjM0NWIwODVjYmVjNWQ4OTAzYmU3OGMwY2Q0ZDZhMmE2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTI0
NSw2ICsyNDUsOSBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxs
Q2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIC8vIEdlb2xvY2F0aW9u
IGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKICAgICBXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CiAKKyAgICAvLyBV
c2VyIG1lZGlhIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsKKwogICAg
IC8vIFBlbmRpbmcgdGFzayBsaXN0LCBOb3RlIHRhaHQgdGhlIG1ldGhvZCBpcyByZWZlcnJlZCBm
cm9tIE1ldGhvZFRhc2sgY2xhc3MuCiAgICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4g
Jm1fdGFza0xpc3Q7IH0KIApAQCAtMzA1LDggKzMwOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0gICAgV2ViS2l0OjpXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Ci0gICAgd2Via2l0X3N1cHBv
cnQ6Ok1lZGlhU3RyZWFtVXRpbCogbWVkaWFTdHJlYW1VdGlsKCk7CiAgICAgd2Via2l0X3N1cHBv
cnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7CiAKICAg
ICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVk
IG5hdmlnYXRpb24gaW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9M
YXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5kZXggMTk5OGMyZWI4ZDU0ODE0ZjExMjE0MjYy
MTM1MDhlODAwZDBhMDY4ZS4uNjI5ZjZiOWQyMDFmNTQ1NDY5YTVkYjQyNWRhZThjYjQxMzcwZDA4
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9s
bGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRy
b2xsZXJFZmwuY3BwCkBAIC0zNzYsNiArMzc2LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCwgYm9vbCkKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQ1OS4KK30KKwogaW50IExh
eW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5
b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTI2NmNjYjEyYzhiZjQyYmMyOTA4MWZhODFjMDdmNWY0
ZjEzOGMzNy4uZjE4NTRmNDRkZWNjOTk1YmFkYWVhNjJjMjQxODg4MzZkZDkzMzMzYyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC01MjAsNiArNTIwLDEyIEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVy
T2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQogICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKHZpZXcpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1Jl
ZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CmluZGV4IGVkZDNjNjE5MWJjYmEwMDEyNWNlOTFmNGYzNTM4MWYyMWQ3ODQ2ZjQuLjU3ZWY5ZTU0
ZWY3MGJiMGU1ZGE1OGY4ODhmN2Y5ZmFkYmQxNWU2ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTUzOSw2ICs1Mzks
MTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIFVJRGVsZWdhdGVdIGRpZFNl
dE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgor
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTku
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5n
dWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAppbmRleCA1ZThkNjUxOTFlODQ1NjIxOTFhZTdmZjU0NTFmNDY0MWY4MThmMmFi
Li5iYjE2NjBlZjE3OGU1YzZhNmZhN2IzYjEyZTgwNTI5MDhjZTc4ZGU1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtODkw
LDYgKzg5MCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsbwogICAgICAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24ocGFnZSwgbGF0aXR1ZGUs
IGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25z
dCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5n
dWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCmluZGV4IDQ3NWI5MjQwNzVjNDk5MTAxMTI1ZDc3YTAwMWU1NmFiMGU1ZjdmZmIuLjIw
M2UzNjhkZDg3YmIwZDA3ZWU0ZTgzNjRlOTBmNTgwYjk5NzFhZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIzNSw2ICsyMzUs
OCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7IH0KICAgICBib29s
IGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uOyB9CiAKKyAgICB2b2lkIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRp
bywgYm9vbCB2aWRlbyk7CisKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25z
dCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5n
dWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpOwog
ICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25zdCBRU3RyaW5nJiBpbnB1dEVsZW1lbnQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKaW5kZXggNTE4NWE4ZmQ3NTdhYjU4YWNlZGU0MjhlZTc4OTcwZGY0ZjA4OTJjYy4uZjBj
N2M0MTA2NDIzODYyMGYzYTUyMWQwNzhkYzNiNzU3OGQ3M2M4ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC00MzIs
NiArNDMyLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29s
IHZpZGVvKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91
dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2NDU5LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBhbGxvdykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBH
ZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGZmNzQ2NDQwZWM1NGM5YzgyYTM4ZGRi
OTEyN2FiYjhmYTg2Zjc5NzUuLjhhMzgxZmI3YWU0MDk4NzIwNzM1YzBjNGViMDdiNDZmMDY2ZTBi
NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCkBAIC0zNzAsNiArMzcwLDEyIEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQogICAgIHJldHVy
biAtMTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5LgorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBk
b3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGY3YzA1
Y2NlODIxZmQ4Zjc1MmI3ZWJhZWQ3MTE1ODMxNjdlMWM4Li41OTNjZTllNzIzNDYzMjczOTAyM2U1
NGZiOWZmZDhiOTYxYzgwOWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMjAgIFRv
bW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJl
YW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUg
TGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1hcmd1bWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93
ZWQuanM6IEFkZGVkLgorICAgICAgICAoc3VjY2VlZCk6CisgICAgICAgIChmYWlsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbDoK
KwogMjAxMi0wMi0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIGJhc2VsaW5lcyBmb3IgYSBuZXcgZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
Z2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEwMDY3OTJkYjMyZGVmYmQ3YTYyOTUzNDkwYTEyYmViZWFiYmM4NzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIE5hdmlnYXRvci5nZXRVc2VyTWVk
aWEoKSBwYXJhbWV0ZXIgcGFyc2luZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQ
QVNTIFN0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlvVHJh
Y2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMAorUEFT
UyBTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNr
cy5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3MzdiMzc1ZjA2MmFhNjIzYzc0ZGZiMGVkYTIxM2FlNmIzMTBhN2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJt
ZWRpYS1hcmd1bWVudHMuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
L2JvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIE5hdmlnYXRvci5nZXRVc2VyTWVk
aWEoKSBwYXJhbWV0ZXIgcGFyc2luZy4iKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0
VXNlck1lZGlhUmVzdWx0KHRydWUsIHRydWUpOworCitmdW5jdGlvbiBzdWNjZWVkMShzKSB7Cisg
ICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAgIHN0
cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScp
OworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKworICAg
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZDIsIGZhaWwpOwor
fQorCitmdW5jdGlvbiBzdWNjZWVkMihzKSB7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0
aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0
cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlk
ZW9UcmFja3MubGVuZ3RoJywgJzAnKTsKKworICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiwgc3VjY2VlZDMsIGZhaWwpOworfQorCitmdW5jdGlvbiBzdWNjZWVkMyhzKSB7
CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAg
IHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAn
MCcpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBmYWlsKCkgeworICAgIHRlc3RGYWls
ZWQoJ1Nob3VsZCBub3QgaGFwcGVuJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCB2aWRlbyIsIHN1Y2NlZWQxLCBmYWlsKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMzU2ZDRmMGU2MjcyMzBkNmQ2M2YxZTgyNGY5ZjUwM2QyNWJl
YTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Rz
IE5hdmlnYXRvci5nZXRVc2VyTWVkaWEoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dlZAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxv
d2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3Qt
YWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhN2ZiMWM3OWVkZDA4ODE5YTA1ZGE0NGMyZjBlOGQ5
NDc3MDFhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlh
LW5vdC1hbGxvd2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1u
b3QtYWxsb3dlZC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3Rz
L2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmU3Mzg0MDQxNDJjMTVj
NWJhZjNjM2VjM2I0MWEwMDcxYjcxNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpz
CkBAIC0wLDAgKzEsMjEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1l
ZGlhKCkiKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWco
J1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxl
cicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGZh
bHNlLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3RyZWFtKSB7CisgICAgdGVzdEZhaWxl
ZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAgICB0ZXN0
UGFzc2VkKCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVk
aWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAppbmRleCA1ZjI5ZmQ1ZTIzODQ3
NjRkMThlNjg5MGI0YWFlMmNjZTRkYWU4NTk3Li5iZTY0OGIyMWUwYWU3MjRhNDY5NTY4ZWFhZGRj
YTkzNzc2ZmZlZTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9t
ZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApAQCAtMSw0ICsxLDQg
QEAKLTwhRE9DVFlQRSBIVE1MIj4KKzwhRE9DVFlQRSBIVE1MPgogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CkBAIC03LDYg
KzcsMTEgQEAKIAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCitpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUg
cnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CisKK2xheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQodHJ1ZSwgdHJ1ZSk7CisKIHZhciBwcmV2
aWV3VVJMID0gIiI7CiB2YXIgbG9jYWxTdHJlYW0gPSBudWxsOwogCkBAIC02MSw2ICs2Niw2IEBA
IGZ1bmN0aW9uIHBsYXlQcmV2aWV3KCkKIAogPGJvZHkgb25sb2FkPSJwbGF5UHJldmlldygpIj4K
IDx2aWRlbyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCIgYXV0b3BsYXk9ImF1dG9wbGF5Ij48L3Zp
ZGVvPgotPC9ib2R5PiAKLTwvaHRtbD4gCis8L2JvZHk+Cis8L2h0bWw+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128437</attachid>
            <date>2012-02-23 01:58:40 -0800</date>
            <delta_ts>2012-02-27 04:29:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120223105838.patch</filename>
            <type>text/plain</type>
            <size>53790</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkNDY4ZDQyODkxMzc5
YjNlNjA3MTU2N2ViMzNhNmYwZTY4ZWM1ZS4uMjhjZWU4MDA5YzBhZGRhMGM3MTAzYmEzOWExYjA1
YzVmNDlhOTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTIzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVz
dHJveWVkKToKKwogMjAxMi0wMi0yMiAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub0BzaXNhLnNhbXN1
bmcuY29tPgogCiAgICAgICAgIEV2ZXJ5IGNhbGwgdG8gUmVuZGVyT2JqZWN0OjpzZXRBbmltYXRh
YmxlU3R5bGUoKSBpdGVyYXRlcyB0aHJvdWdoIGFsbCBtX2NvbXBvc2l0ZUFuaW1hdGlvbnM6IHBv
dGVudGlhbGx5IE8oTl4yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkN2I3NDRkZmRm
NzE5OTc1Yjk1MmM5MDk4ZDQ4YjU0Njc2NjA3M2UxLi40MWUzYzc3YjIwMjkwYTA2YzYwM2JmZjI4
OWUwMTA4ZDI2MTg3YmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDEyLTAyLTIzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBt
YW5pcHVsYXRpb24gdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVk
aWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6
V2ViVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJl
cXVlc3QuaDoKKyAgICAgICAgKFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ+KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFVzZXJN
ZWRpYVJlcXVlc3Q+KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDItMjIgIEhhamltZSBN
b3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTk9USUZJQ0FUSU9OUyBz
aG91bGQgYmUgaW1wbGVtZW50ZWQgYXMgUGFnZVN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBmZGM2MGU0MTY5OWQ1MGYwYTc3YTA5Y2JmYjMyOWVjZjI3M2EyNWJlLi5hMTYxYzQ1YWFjMDQ5
MDhlZDE1NTI0OTQxYjAwNzM5MzdjMWU0OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTk1LDgg
KzI1OTUsMTAgQEAKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywK
ICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAg
ICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCi0gICAgICAgICAgICAnbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGll
bnRNb2NrLmNwcCcsCisgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9j
ay5oJywKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAg
ICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKICAgICAgICAgICAg
ICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmY5N2Zl
MjdkMTViN2FlYjQ1ZTM5NGExZTMyZWViMDc2ZDA0MjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
CisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8
VXNlck1lZGlhQ2xpZW50TW9jaz4gVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRpYUNsaWVudE1vY2soKSk7Cit9CisKK1VzZXJN
ZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVudE1vY2soKQorICAgIDogbV9hbGxvd0F1ZGlv
KGZhbHNlKQorICAgICwgbV9hbGxvd1ZpZGVvKGZhbHNlKQoreworfQorCit2b2lkIFVzZXJNZWRp
YUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wg
YWxsb3dWaWRlbykKK3sKKyAgICBtX2FsbG93QXVkaW8gPSBhbGxvd0F1ZGlvOworICAgIG1fYWxs
b3dWaWRlbyA9IGFsbG93VmlkZW87Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50TW9jazo6cmVx
dWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImKQoreworICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gcHJwUmVxdWVz
dDsKKyAgICBBU1NFUlQoISFyZXF1ZXN0KTsKKworICAgIGlmICghbV9hbGxvd0F1ZGlvICYmICFt
X2FsbG93VmlkZW8pIHsKKyAgICAgICAgcmVxdWVzdC0+ZmFpbCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXM7CisKKyAgICBpZiAocmVxdWVzdC0+YXVkaW8oKSAmJiBtX2FsbG93QXVkaW8pIHsK
KyAgICAgICAgU3RyaW5nIGlkID0gIm1vY2tfYXVkaW9fZGV2aWNlIjsKKyAgICAgICAgU3RyaW5n
IG5hbWUgPSAiQXVkaW9DYXB0dXJlIjsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChNZWRp
YVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGlkLCBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvLCBu
YW1lKSk7CisgICAgfQorCisgICAgaWYgKHJlcXVlc3QtPnZpZGVvKCkgJiYgbV9hbGxvd1ZpZGVv
KSB7CisgICAgICAgIFN0cmluZyBpZCA9ICJtb2NrX3ZpZGVvX2RldmljZSI7CisgICAgICAgIFN0
cmluZyBuYW1lID0gIlZpZGVvQ2FwdHVyZSI7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQo
TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShpZCwgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRl
bywgbmFtZSkpOworICAgIH0KKworICAgIHJlcXVlc3QtPnN1Y2NlZWQoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc5ZTAz
MzUzMTcxOTg3NDJhNjk1ZDBkODUwODJlMjQyNzZiMWMyNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
ICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMK
KyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgVXNl
ck1lZGlhQ2xpZW50TW9ja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiVXNlck1lZGlhQ2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYUNsaWVudE1v
Y2s+LCBwdWJsaWMgVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFDbGllbnRNb2NrPiBjcmVhdGUoKTsKKyAgICB+VXNlck1lZGlhQ2xpZW50
TW9jaygpIHsgfQorCisgICAgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1
ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gVXNlck1lZGlhQ2xpZW50CisgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVz
ZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcyk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3Qo
VXNlck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudE1vY2so
KTsKKworICAgIGJvb2wgbV9hbGxvd0F1ZGlvOworICAgIGJvb2wgbV9hbGxvd1ZpZGVvOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IGE0MWM2ZDA3Mzg2MzEwNTI4ZDkzNTE5Yjg0ODY4ZWM1M2JhN2Q4YjYuLmE3
NmVmY2EwNWQzZDdmMDk5ZWM5NjhjNmM4M2E2MDg3M2YzOWE1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTI2NSw2ICsyNjUsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTExvYWRlck9wdGlv
bnMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgnLApAQCAtNjY3LDYgKzY2OCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxS
ZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2VQcml2YXRl
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZp
ZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDQzMDNhYWQ4NzM2NzAwOWNlZWI4Nzg3YjNiNDE5OGU5NzFjYjZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
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
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNs
aWVudE1vY2tfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZh
dGVQdHIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVk
aWFDbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBhc3NPd25QdHI8
V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVu
dE1vY2soKSB7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1
bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gV2ViVXNlck1l
ZGlhQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNl
ck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1
ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9T
b3VyY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisKK3ByaXZhdGU6CisgICAgV2ViVXNlck1lZGlhQ2xpZW50
TW9jaygpIHsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgV2ViUHJpdmF0ZVB0cjxX
ZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAv
LyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzOGZiMTg5OGI3MzY2MmQ5ODI4
NzY5NDZmYzBiYTMxZmFmODg3M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkxNDc2Nzk5NmZlOTMxNzdk
MjRjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5oCkBAIC03MSwxMiArNzEsMTMgQEAgcHVibGljOgogICAgIC8vIERFUFJF
Q0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBh
dWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVv
U291cmNlcyk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKTsKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0
cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHJlcXVlc3RGYWlsZWQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAg
IFdlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0PiYpOwogICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pigp
IGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZXNSZXF1ZXN0LmgKaW5kZXggN2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3YjQ3Njgw
OC4uY2IwODk2NzdhNTFjMmZmYzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4mKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuY3BwCmluZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0MTg0OWNjZGZjYTZmZjdl
YjhmMTMuLjVjNmM5NjdmNDNlNTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3YjJhZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZQogICAgIG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShhdWRpbywgdmlkZW8pOwogfQogCitX
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTUxMWJkNmZlYTk2N2M2
MGYwMmUwYWI5NmQyZmE1ZWE3NzNkZjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKyNpbmNsdWRlICJXZWJN
ZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2VyTWVkaWFDbGllbnRN
b2NrOjpjcmVhdGUoKQoreworICAgIE93blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtb2Nr
ID0gYWRvcHRQdHIobmV3IFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSk7CisgICAgbW9jay0+aW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBtb2NrLnJlbGVhc2UoKTsKK30KKwordm9pZCBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUgPSBXZWJDb3Jl
OjpVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFD
bGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFs
bG93VmlkZW8pCit7CisgICAgbV9wcml2YXRlLT5zZXRHZXRVc2VyTWVkaWFSZXN1bHQoYWxsb3dB
dWRpbywgYWxsb3dWaWRlbyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVx
dWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykKK3sKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciBhdWRpbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlv
U291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9
IGF1ZGlvU291cmNlc1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAgIH0KKyAg
ICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZpZGVvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJj
ZSogY3VyciA9IHZpZGVvU291cmNlc1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOwor
ICAgIH0KKyAgICBtX3ByaXZhdGUtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCwgYXVkaW8sIHZp
ZGVvKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFS
ZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgbV9wcml2
YXRlLT5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDVhNzZj
ODNiMGRlODhkZDA1YmFlZTk0NGJmY2ZlOTVjZTExYjYxMjUuLjhkZDFmOWZjYWZhZDY4ODkzNmUx
MGI2NTcyNzA5NWJhZDc1NTEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdlYlNlY3VyaXR5
T3JpZ2luIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICBy
ZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4obV9wcml2YXRlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJl
cXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVk
aW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1Nv
dXJjZXMpCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpIGNvbnN0CiB7CiAgICAg
aWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+CiAgICAgbV9wcml2YXRlLT5zdWNjZWVkKGF1ZGlv
LCB2aWRlbyk7CiB9CiAKLXZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCgp
Cit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKSBjb25zdAogewogICAg
IG1fcHJpdmF0ZS0+ZmFpbCgpOwogfQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0OjpvcGVyYXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKIH0KIAorV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGZlMzQ3MjA5ZDFmOGE3MWE5YWYxMDRjZTY0MzY1NjBkNDA1NjZhMjYuLmFiNWQ0Mjgw
Y2I1ZDFjZGU2N2I5YzFiYWUzNjYyMWE4MTc0NzA3YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wMi0yMyAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFuaXB1bGF0aW9uIHRvIHRo
ZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJs
YWNrQmVycnkuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRV
c2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlv
dXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAg
ICAgIChXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmlld0hvc3Qp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1l
ZGlhUmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVz
ZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
dFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6
CisKIDIwMTItMDItMjMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEZ1bGxTY3JlZW4gc2lnbmFscwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMDczNmMwMzgxYjM0Yzg4ZTMwN2U1ZmZmM2Q1NGZkNjky
MGY4NzUwZS4uZTZlMGYyNWZlYjMwYmM3M2M0YzhkMTcxZjVlNTEzMDczZjE5MTNiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC00OCw4ICs0OCw2IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQcmVm
ZXJlbmNlcy5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1dlYlZpZXdIb3N0LmgnLAogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDA3N2IwODIzOGM2MzljNzdkYWQxMDU5
YzI5ODE3OWNlZTU3MjVmMjkuLmI3ODAzYjE1OTFiODM3YTNhZTMyNmNmZWFlOGM2NDBiNmIyNzg5
YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTIyODgsNiArMjI4OCwxNyBAQCBzdGF0aWMgdm9pZCBsYXlvdXRUZXN0Q29udHJvbGxlck9i
amVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICBjb250cm9sbGVyLT5kZXJlZigp
OwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Q2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50
ID09IDIpIHsKKyAgICAgICAgYm9vbCBjYW5Qcm92aWRlQXVkaW8gPSBKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIGFyZ3VtZW50c1swXSk7CisgICAgICAgIGJvb2wgY2FuUHJvdmlkZVZpZGVvID0g
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pOworICAgICAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9s
bGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICAgICAgY29udHJvbGxl
ci0+c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChjYW5Qcm92aWRlQXVkaW8sIGNhblByb3ZpZGVW
aWRlbyk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogLy8gT2JqZWN0IENyZWF0aW9uCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1h
a2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd09i
amVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjQ1MCw2ICsyNDYxLDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQiLCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCIs
IHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3NDb3B5QmFja0Zv
cndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGFnZVZpc2liaWxpdHki
LCBzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBPU0lY
TG9jYWxlIiwgc2V0UE9TSVhMb2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNDUyNjVkYjZkYzcwYjZmMWJkNzYw
OTQwOWI1MGUzN2RkZTYxMjA5YS4uZjJjNGZkYmYzMDdkYWE2Mjc4ODVkYjVhYTQwNzEyZjRkNTRi
NTliZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBA
IC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0
aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJl
dGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKICAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNz
YWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKKyAgICB2b2lkIHNldE1vY2tH
ZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7CiAgICAgdm9pZCBhZGRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5j
ZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpOwogICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnku
Y3BwCmluZGV4IDE0OTAxYWVkNjNiOGE2ZWRlMGIxYTcyMzViNTc1ZTU3NTI1NTE2OWQuLjVlMzkz
MjBiMWUwMGIyZWI4NWM5NzNiMTI5OWM4ZWJjNTljYWQ0YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9s
bGVyQmxhY2tCZXJyeS5jcHAKQEAgLTY5OCw2ICs2OTgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCksIGFsbG93
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKGNv
bnN0IEpTU3RyaW5nUmVmIG1vZGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCAzYzNiODNiYTI5ZDRjNTgwOTQ0YzZiYWEyNzA0NzRmODQyMTU2NzZkLi5iMWQ1NDY1
YzhkMWU3ZmQ0OTQxMmI4MTFhZmM5MjIzNmZmNWRhYWE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01NSw2
ICs1NSw3IEBACiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiV2ViU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlVz
ZXJNZWRpYUNsaWVudE1vY2suaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgpAQCAtMTgzLDYg
KzE4NCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0
U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbik7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk7CiAgICAg
YmluZE1ldGhvZCgic2V0UGFnZVZpc2liaWxpdHkiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFBhZ2VWaXNpYmlsaXR5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5hYmxlZCIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGx1Z2luc0VuYWJsZWQpOwogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCkBAIC0xOTEyLDYgKzE5MTQsMTcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWUK
ICAgICAgICAgd2luZG93TGlzdFtpXS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldEVycm9y
KGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MV0pKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
IDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpIHx8ICFhcmd1bWVudHNbMV0uaXNCb29sKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxXZWJWaWV3SG9zdCo+IHdpbmRvd0xpc3Qg
PSBtX3NoZWxsLT53aW5kb3dMaXN0KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3aW5k
b3dMaXN0LnNpemUoKTsgaSsrKQorICAgICAgICB3aW5kb3dMaXN0W2ldLT51c2VyTWVkaWFDbGll
bnRNb2NrKCktPnNldEdldFVzZXJNZWRpYVJlc3VsdChhcmd1bWVudHNbMF0udG9Cb29sZWFuKCks
IGFyZ3VtZW50c1sxXS50b0Jvb2xlYW4oKSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDk5YmQw
YzQ2OWUxYzE1MWVmNTQwNjUzYWI3NzJkY2ZiZGEyZWEwMDcuLmVlNWI5NjMwN2JjNzdmNGMzZWI3
YTAxODM2Yzk2MTkwOTY1ZGUyMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzcxLDYgKzM3MSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIE1lZGlhU3RyZWFt
IHJlbGF0ZWQgZnVuY3Rpb25zLgorICAgIHZvaWQgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBFbXB0eSBzdHVi
IG1ldGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2Jh
bCBMYXlvdXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyNGZjMTQ0Y2JjMzc0NmM4ZTllYTI2NTExNjZmMDgzYTliMDU4Yzkw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgotCi0jaW5j
bHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJl
cXVlc3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOwotfQotCi1ib29sIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2s6OklzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkKLXsKLSAgICBXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXBNZWRp
YVN0cmVhbURlc2NyaXB0b3IodXJsKSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4gc291cmNlVmVjdG9yOwotICAgIGRlc2NyaXB0b3Iuc291cmNlcyhzb3VyY2VWZWN0b3IpOwot
ICAgIFdlYlN0cmluZyB0cmFja0lkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNl
VmVjdG9yLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChzb3VyY2VWZWN0b3JbaV0udHlwZSgp
ID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pIHsKLSAgICAgICAgICAgIHRyYWNr
SWQgPSBzb3VyY2VWZWN0b3JbaV0uaWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiB0cmFja0lkLmVxdWFscygibWVkaWFzdHJlYW10ZXN0Iik7Ci19
Ci0KLXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25zdCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SZXF1ZXN0LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JiBzdHJlYW1Tb3VyY2VWZWN0b3IpCi17Ci0gICAgQVNTRVJUKCFzdHJl
YW1SZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVzdCA9
IHN0cmVhbVJlcXVlc3Q7Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSAxOwotICAgIFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yKHNpemUpOwotICAgIFdlYlN0cmlu
ZyB0cmFja0lkKCJtZWRpYXN0cmVhbXRlc3QiKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tOYW1lKCJW
aWRlb0NhcHR1cmUiKTsKLSAgICBzb3VyY2VWZWN0b3JbMF0uaW5pdGlhbGl6ZSh0cmFja0lkLCBX
ZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCB0cmFja05hbWUpOwotICAgIHJlcXVlc3Qu
cmVxdWVzdFN1Y2NlZWRlZChzb3VyY2VWZWN0b3IpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNs
aWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVz
dCYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlVzZXJNZWRpYUNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0
MmUzYmRjYTE1YzE3NTA0YjJhYjA2YTA3YTE5ZGQ0NDczNjE3MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNkZWZpbmUgV2ViVXNlck1lZGlhQ2xp
ZW50TW9ja19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiV2ViVXNl
ck1lZGlhQ2xpZW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCi0j
aW5jbHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgV2ViVXNlck1lZGlhQ2xpZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB3ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJl
YW1VdGlsIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGll
bnRNb2NrPiBjcmVhdGUoKTsKLSAgICB+V2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQotCi0g
ICAgYm9vbCBJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJMJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2Vy
TWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKLQotcHJpdmF0ZToKLSAg
ICBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAppbmRleCA1ZGMzOWQ3ZDFmMDNhMTJjMTE3NzE2OTRkZjQ4ZGUwZGJjODI0OGI0
Li5mNmMwZDkxYjNjZmM2NTQ3MWQ5ZTcyNzBmODJmZmQ4ZjI0ZWQ5ZjFkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNjU2LDE1ICsxNjU2
LDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmV4aXRGdWxsU2NyZWVuTm93KCkKIH0KIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi13ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBXZWJW
aWV3SG9zdDo6bWVkaWFTdHJlYW1VdGlsKCkKLXsKLSAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50
TW9jaygpOwotfQotCiB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiBXZWJW
aWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkKIHsKICAgICBpZiAoIW1fdGVzdE1lZGlh
U3RyZWFtQ2xpZW50LmdldCgpKQotICAgICAgICBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudCA9IGFk
b3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KG1lZGlhU3Ry
ZWFtVXRpbCgpKSk7CisgICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIo
bmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQoKSk7CiAgICAgcmV0dXJu
IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA3OGI1M2Q1OWJmZDM3OWNmNDFm
ODlkOTk1NzkwZjZlMjk3ZDZmYzE1Li5lNzRmZmI5YzkxNzlkODU2MDE5MTM0ZDI2MjEwODg0YWVh
MTU2YzU4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgK
QEAgLTI0Nyw2ICsyNDcsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJTcGVsbENoZWNrQ2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2wKICAgICAvLyBHZW9s
b2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCiAgICAgV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAvLyBVc2VyIG1lZGlhIGNsaWVudCBtb2NrcyBm
b3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1v
Y2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsKKyNlbmRpZgorCiAgICAgLy8gUGVuZGluZyB0YXNr
IGxpc3QsIE5vdGUgdGFodCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gTWV0aG9kVGFzayBj
bGFzcy4KICAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQog
CkBAIC0zMDgsOCArMzEzLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNs
aWVudE1vY2soKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBtZWRpYVN0
cmVhbVV0aWwoKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiB0
ZXN0TWVkaWFTdHJlYW1DbGllbnQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCAxOTk4YzJlYjhk
NTQ4MTRmMTEyMTQyNjIxMzUwOGU4MDBkMGEwNjhlLi42MjlmNmI5ZDIwMWY1NDU0NjlhNWRiNDI1
ZGFlOGNiNDEzNzBkMDhkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5
b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9M
YXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTM3Niw2ICszNzYsMTIgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAg
ICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sLCBib29sKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5
LgorfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBH
ZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAxMjY2Y2NiMTJjOGJmNDJiYzI5
MDgxZmE4MWMwN2Y1ZjRmMTM4YzM3Li5mMTg1NGY0NGRlY2M5OTViYWRhZWE2MmMyNDE4ODgzNmRk
OTMzMzNjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAKQEAgLTUyMCw2ICs1MjAsMTIgQEAgaW50IExheW91dFRlc3RDb250
cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiAg
ICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdHModmlldyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbykK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBsYXlvdXQgdGVzdHMu
CisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQ1
OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVz
dWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxh
bmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlv
dXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KaW5kZXggZWRkM2M2MTkxYmNiYTAwMTI1Y2U5MWY0ZjM1MzgxZjIxZDc4
NDZmNC4uNTdlZjllNTRlZjcwYmIwZTVkYTU4Zjg4OGY3ZjlmYWRiZDE1ZTZmNSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtNTM5LDYgKzUzOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gVUlE
ZWxlZ2F0ZV0gZGlkU2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbl07CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywg
Ym9vbCB2aWRlbykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQ1OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1Nw
ZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpT
U3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVj
aCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDY2ZmRmMWVhYzI1MzAzMjcwYWNkMzFiYTcw
NDkwNmE5ZTBmNmZjODYuLjllNzY0NDkyZTBkNjQ2Y2MxNjFjNjA5ZjFmYTkzMTQxOWFhMTg4YTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwCkBAIC04OTIsNiArODkyLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAg
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihw
YWdlLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2
aWRlbykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjQ1OS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0
IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVj
aCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggNDc1YjkyNDA3NWM0OTkxMDExMjVkNzdhMDAxZTU2
YWIwZTVmN2ZmYi4uMjAzZTM2OGRkODdiYjBkMDdlZTRlODM2NGU5MGY1ODBiOTk3MWFmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApA
QCAtMjM1LDYgKzIzNSw4IEBAIHB1YmxpYyBzbG90czoKICAgICBib29sIGlzR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNl
dDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAgIHZvaWQgc2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKTsKKwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0
IFFTdHJpbmcmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0
KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJpbmcmIGlu
cHV0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAppbmRleCA1MTg1YThmZDc1N2FiNThhY2VkZTQyOGVlNzg5NzBk
ZjRmMDg5MmNjLi5mMGM3YzQxMDY0MjM4NjIwZjNhNTIxZDA3OGRjM2I3NTc4ZDczYzhmIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKQEAgLTQzMiw2ICs0MzIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQog
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJv
b2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVk
aWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggZmY3NDY0NDBl
YzU0YzljODJhMzhkZGI5MTI3YWJiOGZhODZmNzk3NS4uOGEzODFmYjdhZTQwOTg3MjA3MzVjMGM0
ZWIwN2I0NmYwNjZlMGI1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTM3MCw2ICszNzAsMTIgQEAgaW50IExheW91dFRl
c3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
cygpCiAgICAgcmV0dXJuIC0xOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGU3YzA1YTY0OTI4ZGI2YmQ3MmQ1ZjRjODJiMTA2ZDFhZjRkOTUwZmIuLjE1NGNhZDBm
YzM0NGI3MjgwOWI1ZGJhOGIwZWEyNTgxYTUzNGVkZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMi0wMi0yMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBNZWRpYVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFuaXB1
bGF0aW9uIHRvIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
LWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0
ZXMuanM6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1l
ZGlhLW5vdC1hbGxvd2VkLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1Y2NlZWQpOgorICAgICAgICAo
ZmFpbCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1w
cmV2aWV3Lmh0bWw6CisKIDIwMTItMDItMjMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0
aW9ucyB1cGRhdGUgZm9yIGZhc3QvY3NzL2ZvbnQtZmFjZS1kZWZhdWx0LWZvbnQuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1l
bnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwNjc5MmRiMzJkZWZiZDdh
NjI5NTM0OTBhMTJiZWJlYWJiYzg3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpIHBhcmFtZXRlciBwYXJz
aW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdHJlYW0gY3JlYXRp
b24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQor
UEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1MgU3RyZWFtIGNyZWF0aW9u
IHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKK1BB
U1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAwCitQQVNTIFN0cmVhbSBjcmVhdGlvbiB3
YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAwCitQQVNT
IHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcz
N2IzNzVmMDYyYWE2MjNjNzRkZmIwZWRhMjEzYWU2YjMxMGE3ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1s
CkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpIHBhcmFtZXRlciBwYXJz
aW5nLiIpOworCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBkZWJ1Zygn
VGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVy
Jyk7CisKK2xheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQodHJ1
ZSwgdHJ1ZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQxKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdTdHJl
YW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJyk7CisgICAgc3RyZWFtID0gczsKKyAgICBzaG91
bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworCisgICAgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgiYXVkaW8iLCBzdWNjZWVkMiwgZmFpbCk7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nl
ZWQyKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwu
Jyk7CisgICAgc3RyZWFtID0gczsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAn
MCcpOworCisgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBzdWNjZWVk
MywgZmFpbCk7Cit9CisKK2Z1bmN0aW9uIHN1Y2NlZWQzKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdT
dHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJyk7CisgICAgc3RyZWFtID0gczsKKyAgICBz
aG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUo
J3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIGZhaWwoKSB7CisgICAgdGVzdEZhaWxlZCgnU2hvdWxkIG5vdCBoYXBw
ZW4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgiYXVkaW8sIHZpZGVvIiwgc3VjY2VlZDEsIGZhaWwpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzNTZkNGYwZTYyNzIzMGQ2ZDYzZjFlODI0ZjlmNTAzZDI1YmVhMDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJN
ZWRpYSgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdCBhbGxvd2Vk
CitQQVNTIE5vdCBhbGxvd2VkCitQQVNTIE5vdCBhbGxvd2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2E3ZmIxYzc5ZWRkMDg4MTlhMDVkYTQ0YzJmMGU4ZDk0NzcwMWE0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1h
bGxvd2VkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMKaW5kZXggZDg0NDJhY2EyMzBm
MjI5M2IwMjlhNDA3ZmJhYjViYmU2ODU5MGJjNi4uMDM1MzgxYzEwNmU4YTk0NDhhZDcyODI4MTk1
NjU5MzQ5ZGNlMTI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9z
Y3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzCkBAIC0xLDQgKzEsMTAgQEAKIGRlc2NyaXB0
aW9uKCJUZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiByZWxhdGVkIEF0dHJpYnV0ZXMgYWNjb3Jk
aW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8iKTsKKworaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3
aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KHRydWUsIHRydWUpOworCiB2YXIgc3RyZWFtOwog
ZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZXhwcmVzc2lvbikKIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxs
b3dlZC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVz
ZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmU3Mzg0MDQxNDJjMTVjNWJhZjNj
M2VjM2I0MWEwMDcxYjcxNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpzCkBAIC0w
LDAgKzEsMjEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCki
KTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWcoJ1RoaXMg
dGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwor
CitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGZhbHNlLCBm
YWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3RyZWFtKSB7CisgICAgdGVzdEZhaWxlZCgnU2hv
dWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rpb24gZmFpbCgpIHsKKyAgICB0ZXN0UGFzc2Vk
KCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRp
bywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
ImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2
aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlk
ZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9t
ZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAppbmRleCA1ZjI5ZmQ1ZTIzODQ3NjRkMThl
Njg5MGI0YWFlMmNjZTRkYWU4NTk3Li5iZTY0OGIyMWUwYWU3MjRhNDY5NTY4ZWFhZGRjYTkzNzc2
ZmZlZTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92
aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwh
RE9DVFlQRSBIVE1MIj4KKzwhRE9DVFlQRSBIVE1MPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQg
c3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CkBAIC03LDYgKzcsMTEg
QEAKIAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCitpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdp
dGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CisKK2xheW91dFRlc3RDb250cm9sbGVy
LnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQodHJ1ZSwgdHJ1ZSk7CisKIHZhciBwcmV2aWV3VVJM
ID0gIiI7CiB2YXIgbG9jYWxTdHJlYW0gPSBudWxsOwogCkBAIC02MSw2ICs2Niw2IEBAIGZ1bmN0
aW9uIHBsYXlQcmV2aWV3KCkKIAogPGJvZHkgb25sb2FkPSJwbGF5UHJldmlldygpIj4KIDx2aWRl
byB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCIgYXV0b3BsYXk9ImF1dG9wbGF5Ij48L3ZpZGVvPgot
PC9ib2R5PiAKLTwvaHRtbD4gCis8L2JvZHk+Cis8L2h0bWw+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129012</attachid>
            <date>2012-02-27 04:29:26 -0800</date>
            <delta_ts>2012-02-29 07:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120227132924.patch</filename>
            <type>text/plain</type>
            <size>53871</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjNmVkYTcwMWY3ZTVk
OGUwZTIyYWJmMjhkOTIxNWQwYjg5MWM4YS4uMTcwN2ViZTkyMzU0NTg5NzYzNTJmMzUzNzM4ZGQx
NzYxNjFkNWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTI3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGll
bnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFDbGllbnRNb2NrOjpVc2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjp+VXNlck1lZGlhQ2xpZW50TW9jayk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpwYWdlRGVzdHJveWVkKToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDItMjcgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgYnVpbHQtaW4gYmluZCBpbiBFeHRl
bnNpb25BUEkuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTZlOTRkZjg5NDJlMzlk
Zjc4NWFkNzM3OTk4Y2MzNDFmNWQzOTY3ZS4uNmY1NDUxNDY1ZWQ3MTE4Mzg0MDQ5ZjU2ZGQ0MWMw
YTdmODNjN2ZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAor
MjAxMi0wMi0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBNZWRpYVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFuaXB1
bGF0aW9uIHRvIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp+V2ViVXNlck1lZGlhQ2xp
ZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OldlYlVz
ZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAoV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5
Q2xpZW50Pik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0Pik6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTAyLTI2ICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgQ2hyb21lQ2xpZW50Ojpz
aG93Q29udGV4dE1lbnUoKSB0byBDb250ZXh0TWVudUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjZmOTdmZTI3ZDE1YjdhZWI0NWUzOTRhMWUzMmVlYjA3NmQwNDI0MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFD
bGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlhQ2xpZW50TW9jaz4gVXNlck1lZGlh
Q2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRp
YUNsaWVudE1vY2soKSk7Cit9CisKK1VzZXJNZWRpYUNsaWVudE1vY2s6OlVzZXJNZWRpYUNsaWVu
dE1vY2soKQorICAgIDogbV9hbGxvd0F1ZGlvKGZhbHNlKQorICAgICwgbV9hbGxvd1ZpZGVvKGZh
bHNlKQoreworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJl
c3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRlbykKK3sKKyAgICBtX2FsbG93QXVk
aW8gPSBhbGxvd0F1ZGlvOworICAgIG1fYWxsb3dWaWRlbyA9IGFsbG93VmlkZW87Cit9CisKK3Zv
aWQgVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJN
ZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKQoreworICAgIFJlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0PiByZXF1ZXN0ID0gcHJwUmVxdWVzdDsKKyAgICBBU1NFUlQoISFyZXF1ZXN0KTsKKwor
ICAgIGlmICghbV9hbGxvd0F1ZGlvICYmICFtX2FsbG93VmlkZW8pIHsKKyAgICAgICAgcmVxdWVz
dC0+ZmFpbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3IgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7CisKKyAgICBpZiAocmVxdWVzdC0+
YXVkaW8oKSAmJiBtX2FsbG93QXVkaW8pIHsKKyAgICAgICAgU3RyaW5nIGlkID0gIm1vY2tfYXVk
aW9fZGV2aWNlIjsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAiQXVkaW9DYXB0dXJlIjsKKyAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGlkLCBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvLCBuYW1lKSk7CisgICAgfQorCisgICAgaWYgKHJlcXVl
c3QtPnZpZGVvKCkgJiYgbV9hbGxvd1ZpZGVvKSB7CisgICAgICAgIFN0cmluZyBpZCA9ICJtb2Nr
X3ZpZGVvX2RldmljZSI7CisgICAgICAgIFN0cmluZyBuYW1lID0gIlZpZGVvQ2FwdHVyZSI7Cisg
ICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShpZCwg
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgbmFtZSkpOworICAgIH0KKworICAgIHJlcXVl
c3QtPnN1Y2NlZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworfQorCit2b2lkIFVzZXJN
ZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCop
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OWUwMzM1MzE3MTk4NzQyYTY5
NWQwZDg1MDgyZTI0Mjc2YjFjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgVXNlck1lZGlh
Q2xpZW50TW9ja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNl
ck1lZGlhQ2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVXNlck1l
ZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYUNsaWVudE1vY2s+LCBw
dWJsaWMgVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxV
c2VyTWVkaWFDbGllbnRNb2NrPiBjcmVhdGUoKTsKKyAgICB+VXNlck1lZGlhQ2xpZW50TW9jaygp
IHsgfQorCisgICAgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBi
b29sIGFsbG93VmlkZW8pOworCisgICAgLy8gVXNlck1lZGlhQ2xpZW50CisgICAgdmlydHVhbCB2
b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRp
YShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVv
U291cmNlcyk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1l
ZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYUNsaWVudE1vY2soKTsKKwor
ICAgIGJvb2wgbV9hbGxvd0F1ZGlvOworICAgIGJvb2wgbV9hbGxvd1ZpZGVvOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJjNWFk
N2Q1ZDcyNDQ0N2VhZDI2NWQ4MGI4NDQxZTM5NzNjZjU2NTQuLjM2MzMzN2RkZDMzYTQ1NTMyZjY1
MzIxNTVlOWRjYjA5ZjAwNzdkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzMjQsOCArMTMyNCwx
MCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oJywKLSAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxl
ci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggM2RhMDQ3N2EwMTE0ZGU5ZjhiNzYwNGRmZDFiYjUw
YzhjN2M2NGZhMC4uOTUyMGM4MzVkZDVjNTViNDIzODdhNGIwYzZkMWRjOTQ3YWRiNTM1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjY4LDYgKzI2OCw3IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VVJMTG9hZGVyT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRp
YUNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlZpZXdDbGllbnQuaCcsCkBAIC02NzAsNyArNjcxLDcgQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlVSTFJlc3BvbnNlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxS
ZXNwb25zZVByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxFcnJvci5jcHAn
LAotICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkVXNlckdlc3R1cmUuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDQzMDNhYWQ4NzM2NzAwOWNlZWI4Nzg3YjNiNDE5OGU5
NzFjYjZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2tfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIK
KworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJV
c2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBhc3NP
d25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRp
YUNsaWVudE1vY2soKSB7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRHZXRVc2VyTWVk
aWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gV2Vi
VXNlck1lZGlhQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3Qg
V2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYg
dmlkZW9Tb3VyY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChj
b25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisKK3ByaXZhdGU6CisgICAgV2ViVXNlck1lZGlh
Q2xpZW50TW9jaygpIHsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgV2ViUHJpdmF0
ZVB0cjxXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3ByaXZhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAzOGZiMTg5OGI3MzY2
MmQ5ODI4NzY5NDZmYzBiYTMxZmFmODg3M2E0Li5mYjIwNjI4ODViZTY0YTNlOTkxNDc2Nzk5NmZl
OTMxNzdkMjRjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC03MSwxMiArNzEsMTMgQEAgcHVibGljOgogICAgIC8v
IERFUFJFQ0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CiAKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
IHZpZGVvU291cmNlcyk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHJlcXVlc3RGYWlsZWQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgogICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0PiYpOwogICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Qq
KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bVNvdXJjZXNSZXF1ZXN0LmgKaW5kZXggN2ZjYzdjMjc1MmNiMGY2YzU2MTJkYTI2YjM0MjUyYzc3
YjQ3NjgwOC4uY2IwODk2NzdhNTFjMmZmYzQzNWFjNGQyOGM4NDI0OWRhYTRjZmRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtNTgsNiArNTgsNyBAQCBw
dWJsaWM6CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudD4mKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3QuY3BwCmluZGV4IGVhODg2ODAwOTI0OGMyODY4MDQ0MTg0OWNjZGZj
YTZmZjdlYjhmMTMuLjVjNmM5NjdmNDNlNTc3ZTJiZTRkNjI1NDIxODU3ZDA4NzQ3YjJhZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3QuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCB2b2lkIFdlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZQogICAgIG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShhdWRpbywgdmlkZW8pOwog
fQogCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTUxMWJkNmZl
YTk2N2M2MGYwMmUwYWI5NmQyZmE1ZWE3NzNkZjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCAr
MSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKyNpbmNsdWRl
ICJXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVz
dC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2VyTWVkaWFD
bGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIE93blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
PiBtb2NrID0gYWRvcHRQdHIobmV3IFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSk7CisgICAgbW9j
ay0+aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBtb2NrLnJlbGVhc2UoKTsKK30KKwordm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUgPSBX
ZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKTsKK30KKwordm9pZCBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCBhbGxvd0F1ZGlvLCBi
b29sIGFsbG93VmlkZW8pCit7CisgICAgbV9wcml2YXRlLT5zZXRHZXRVc2VyTWVkaWFSZXN1bHQo
YWxsb3dBdWRpbywgYWxsb3dWaWRlbyk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9j
azo6cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykKK3sKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGF1ZGlvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSog
Y3VyciA9IGF1ZGlvU291cmNlc1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAg
IH0KKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlbzsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZpZGVvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZSogY3VyciA9IHZpZGVvU291cmNlc1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1
cnIpOworICAgIH0KKyAgICBtX3ByaXZhdGUtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCwgYXVk
aW8sIHZpZGVvKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2Vy
TWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
bV9wcml2YXRlLT5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4
IDVhNzZjODNiMGRlODhkZDA1YmFlZTk0NGJmY2ZlOTVjZTExYjYxMjUuLjhkZDFmOWZjYWZhZDY4
ODkzNmUxMGI2NTcyNzA5NWJhZDc1NTEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdlYlNl
Y3VyaXR5T3JpZ2luIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QK
ICAgICByZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4obV9wcml2YXRlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYVJlcXVl
c3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2
aWRlb1NvdXJjZXMpCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQo
Y29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpIGNvbnN0CiB7
CiAgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+CiAgICAgbV9wcml2YXRlLT5zdWNjZWVk
KGF1ZGlvLCB2aWRlbyk7CiB9CiAKLXZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZh
aWxlZCgpCit2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKSBjb25zdAog
ewogICAgIG1fcHJpdmF0ZS0+ZmFpbCgpOwogfQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpvcGVyYXRvciBVc2VyTWVkaWFSZXF1ZXN0KigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS5nZXQoKTsKIH0KIAorV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3Ig
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDA3ZjhlOGFjZDI2YjU1YTRjYmRlODVhNGU4MjgzZDA2OTQxM2E2NmEuLjQ5
MjEyMjQ1ZmVmZWZkODEyZThjZTRiMGZkNGZlNjNmMjRlNTViMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0w
Mi0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IGFkZCBnZXRVc2VyTWVkaWEgbW9jayByZXN1bHQgbWFuaXB1bGF0aW9u
IHRvIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoc2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJv
bGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tHZXRVc2VyTWVkaWFSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmll
d0hvc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxl
ckVmbC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJN
ZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0
VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3Vs
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdCk6CisKIDIwMTItMDItMjcgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBBZGQgYSBDaHJvbWl1bUdwdUFuZHJvaWQgcG9ydC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDA3MzZjMDM4MWIzNGM4OGUzMDdlNWZmZjNk
NTRmZDY5MjBmODc1MGUuLmU2ZTBmMjVmZWIzMGJjNzNjNGM4ZDE3MWY1ZTUxMzA3M2YxOTEzYjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtNDgsOCArNDgs
NiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlBlcm1pc3Npb25zLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
V2ViUHJlZmVyZW5jZXMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwNzdiMDgyMzhjNjM5Yzc3
ZGFkMTA1OWMyOTgxNzljZWU1NzI1ZjI5Li5iNzgwM2IxNTkxYjgzN2EzYWUzMjZjZmVhZThjNjQw
YjZiMjc4OWMwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC0yMjg4LDYgKzIyODgsMTcgQEAgc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRy
b2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAgICAgY29udHJvbGxlci0+
ZGVyZWYoKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dldFVzZXJNZWRpYVJlc3Vs
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA9PSAyKSB7CisgICAgICAgIGJvb2wgY2FuUHJvdmlkZUF1ZGlvID0gSlNWYWx1ZVRv
Qm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworICAgICAgICBib29sIGNhblByb3ZpZGVW
aWRlbyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzFdKTsKKyAgICAgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgICAgIGNv
bnRyb2xsZXItPnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY2FuUHJvdmlkZUF1ZGlvLCBjYW5Q
cm92aWRlVmlkZW8pOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIC8vIE9iamVjdCBDcmVhdGlvbgogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjptYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3
aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTI0NTAsNiArMjQ2MSw3IEBA
IEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMo
KQogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCBzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHQiLCBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29w
eUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBhZ2VWaXNp
YmlsaXR5Iiwgc2V0UGFnZVZpc2liaWxpdHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRQT1NJWExvY2FsZSIsIHNldFBPU0lYTG9jYWxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDQ1MjY1ZGI2ZGM3MGI2
ZjFiZDc2MDk0MDliNTBlMzdkZGU2MTIwOWEuLmYyYzRmZGJmMzA3ZGFhNjI3ODg1ZGI1YWE0MDcx
MmY0ZDU0YjU5YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblBy
b3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1t
YSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdS
ZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgdm9pZCBz
ZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8pOwogICAgIHZv
aWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNv
bmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJ
bnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFj
a0JlcnJ5LmNwcAppbmRleCAxNDkwMWFlZDYzYjhhNmVkZTBiMWE3MjM1YjU3NWU1NzUyNTUxNjlk
Li41ZTM5MzIwYjFlMDBiMmViODVjOTczYjEyOTljOGViYzU5Y2FkNGM4IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tC
ZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0
Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCkBAIC02OTgsNiArNjk4LDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgp
LCBhbGxvdyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2Vy
TWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVh
dHVyZShjb25zdCBKU1N0cmluZ1JlZiBtb2RlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggODQzNGY0N2RjMzQwOTBjNTlhYjIyMTgwZWE3ZTgwODlhMGZkNGNmMC4u
ZTY0NjA2N2EyOTZlZGY4ZWQxZDI5OTBkY2I2NDU3ZTBhYmQ2MjdhZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUg
IldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAg
LTE4Myw2ICsxODQsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50
YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7
CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24pOworICAgIGJpbmRNZXRob2QoInNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQp
OwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5IiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJs
ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBsdWdpbnNFbmFibGVkKTsKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQpAQCAtMTkxMyw2ICsxOTE1LDE3IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lCiAgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5z
ZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJn
dW1lbnRzWzFdKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRV
c2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRz
LnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSB8fCAhYXJndW1lbnRzWzFdLmlz
Qm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8V2ViVmlld0hvc3QqPiB3aW5k
b3dMaXN0ID0gbV9zaGVsbC0+d2luZG93TGlzdCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd2luZG93TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgd2luZG93TGlzdFtpXS0+dXNlck1l
ZGlhQ2xpZW50TW9jaygpLT5zZXRHZXRVc2VyTWVkaWFSZXN1bHQoYXJndW1lbnRzWzBdLnRvQm9v
bGVhbigpLCBhcmd1bWVudHNbMV0udG9Cb29sZWFuKCkpOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCBiZjM1ZjJmZDM0ZmEwZjM0NmNkNDIzODgyN2RhZjUxZGY2NDEyZDYxLi4wN2RiOGJmN2NkMWVh
OWQ4NTkyYjQ4OTA4MDI5OGM1M2Y2MGM5MTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM3MSw2ICszNzEsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBNZWRp
YVN0cmVhbSByZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICB2b2lkIHNldE1vY2tHZXRVc2VyTWVkaWFS
ZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8gRW1w
dHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBi
eSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRmYzE0NGNiYzM3NDZjOGU5ZWEyNjUxMTY2ZjA4M2E5
YjA1OGM5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIK
LQotI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFSZXF1ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
PiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpKTsKLX0KLQotYm9vbCBXZWJVc2VyTWVkaWFD
bGllbnRNb2NrOjpJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJMJiB1cmwpCi17Ci0gICAgV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yIGRlc2NyaXB0b3IoV2ViTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9v
a3VwTWVkaWFTdHJlYW1EZXNjcmlwdG9yKHVybCkpOwotICAgIGlmIChkZXNjcmlwdG9yLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+IHNvdXJjZVZlY3RvcjsKLSAgICBkZXNjcmlwdG9yLnNvdXJjZXMoc291cmNlVmVj
dG9yKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tJZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNvdXJjZVZlY3Rvci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoc291cmNlVmVjdG9yW2ld
LnR5cGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7Ci0gICAgICAgICAg
ICB0cmFja0lkID0gc291cmNlVmVjdG9yW2ldLmlkKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJhY2tJZC5lcXVhbHMoIm1lZGlhc3RyZWFtdGVz
dCIpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQotewotICAgIEFTU0VS
VCghc3RyZWFtUmVxdWVzdC5pc051bGwoKSk7Ci0KLSAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJl
cXVlc3QgPSBzdHJlYW1SZXF1ZXN0OwotICAgIGNvbnN0IHNpemVfdCBzaXplID0gMTsKLSAgICBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZlY3RvcihzaXplKTsKLSAgICBX
ZWJTdHJpbmcgdHJhY2tJZCgibWVkaWFzdHJlYW10ZXN0Iik7Ci0gICAgV2ViU3RyaW5nIHRyYWNr
TmFtZSgiVmlkZW9DYXB0dXJlIik7Ci0gICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUodHJh
Y2tJZCwgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgdHJhY2tOYW1lKTsKLSAgICBy
ZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoc291cmNlVmVjdG9yKTsKLX0KLQotdm9pZCBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE5NDJlM2JkY2ExNWMxNzUwNGIyYWIwNmEwN2ExOWRkNDQ3MzYxNzEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCi0jZGVmaW5lIFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2tfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUg
IldlYlVzZXJNZWRpYUNsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVS
TC5oIgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6Ok1l
ZGlhU3RyZWFtVXRpbCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1l
ZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7Ci0gICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7
IH0KLQotICAgIGJvb2wgSXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0KLXByaXZh
dGU6Ci0gICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8g
V2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODE2MDNiMzdmNWEwZTViN2Q2NGIzODA3YjVmOGExZTIy
MzAzOTdhYi4uOGNlZjZhNWRjMjBjMzA3MGY0OGQyZDE4ODIxZjgwNmVlODZiN2VhYyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTY2NSwx
NSArMTY2NSwxMCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdygpCiB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRp
bCogV2ViVmlld0hvc3Q6Om1lZGlhU3RyZWFtVXRpbCgpCi17Ci0gICAgcmV0dXJuIHVzZXJNZWRp
YUNsaWVudE1vY2soKTsKLX0KLQogd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVu
dCogV2ViVmlld0hvc3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCgpCiB7CiAgICAgaWYgKCFtX3Rl
c3RNZWRpYVN0cmVhbUNsaWVudC5nZXQoKSkKLSAgICAgICAgbV90ZXN0TWVkaWFTdHJlYW1DbGll
bnQgPSBhZG9wdFB0cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCht
ZWRpYVN0cmVhbVV0aWwoKSkpOworICAgICAgICBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudCA9IGFk
b3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkpOwogICAg
IHJldHVybiBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudC5nZXQoKTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggZjgwZjQzOGFkNWNk
YmQ1ZmRlMmEyNjA3M2Q2NTk4OWM1MDNjYjlkNC4uNTk0ZGE4NjY4NGIzYjc2YzBiN2UxMTM2NmUy
Y2VjYWMxNjBiYTA1YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC0yNDksNiArMjQ5LDExIEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdl
YktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAg
Ly8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgogICAg
IFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2so
KTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gVXNlciBtZWRpYSBjbGllbnQg
bW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCisgICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnRNb2NrKiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7CisjZW5kaWYKKwogICAgIC8vIFBlbmRp
bmcgdGFzayBsaXN0LCBOb3RlIHRhaHQgdGhlIG1ldGhvZCBpcyByZWZlcnJlZCBmcm9tIE1ldGhv
ZFRhc2sgY2xhc3MuCiAgICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xp
c3Q7IH0KIApAQCAtMzEwLDggKzMxNSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2Vy
TWVkaWFDbGllbnRNb2NrKCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCog
bWVkaWFTdHJlYW1VdGlsKCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNs
aWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5kZXggZGEw
YzdjYTA5Mzg5ZjEwZjY5MGVkZjNlY2MwNDliZGFjMmQ1ZDVhMS4uOGQ2NDAyOThhZWM1NGRkOTI5
ZTQ4OWI0Y2E1ZmM0YzViMDg5MzQyYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0zNzYsNiArMzc2LDEyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFs
bG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoYm9vbCwg
Ym9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBNZWRpYVN0cmVhbSBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjQ1OS4KK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTI2NmNjYjEyYzhi
ZjQyYmMyOTA4MWZhODFjMDdmNWY0ZjEzOGMzNy4uZjE4NTRmNDRkZWNjOTk1YmFkYWVhNjJjMjQx
ODg4MzZkZDkzMzMzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MjAsNiArNTIwLDEyIEBAIGludCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGVuZGlu
Z0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKHZpZXcpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8sIGJvb2wg
dmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0gbGF5b3V0
IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmlu
Z1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5w
dXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGVkZDNjNjE5MWJjYmEwMDEyNWNlOTFmNGYzNTM4
MWYyMWQ3ODQ2ZjQuLjU3ZWY5ZTU0ZWY3MGJiMGU1ZGE1OGY4ODhmN2Y5ZmFkYmQxNWU2ZjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0KQEAgLTUzOSw2ICs1MzksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wg
YXVkaW8sIGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFT
dHJlYW0gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRl
bmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA2NmZkZjFlYWMyNTMwMzI3MGFj
ZDMxYmE3MDQ5MDZhOWUwZjZmYzg2Li45ZTc2NDQ5MmUwZDY0NmNjMTYxYzYwOWYxZmE5MzE0MTlh
YTE4OGE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcApAQCAtODkyLDYgKzg5MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
bwogICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24ocGFnZSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8s
IGJvb2wgdmlkZW8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgTWVkaWFTdHJlYW0g
bGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY0NTkuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDQ3NWI5MjQwNzVjNDk5MTAxMTI1ZDc3
YTAwMWU1NmFiMGU1ZjdmZmIuLjIwM2UzNjhkZDg3YmIwZDA3ZWU0ZTgzNjRlOTBmNTgwYjk5NzFh
ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKQEAgLTIzNSw2ICsyMzUsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBpc0dlb2xv
Y2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvblBlcm1p
c3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lkIHNldE1vY2tHZXRVc2Vy
TWVkaWFSZXN1bHQoYm9vbCBhdWRpbywgYm9vbCB2aWRlbyk7CisKICAgICB2b2lkIGFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBjb25zdCBRU3RyaW5nJiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25zdCBRU3Ry
aW5nJiBpbnB1dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggNTE4NWE4ZmQ3NTdhYjU4YWNlZGU0Mjhl
ZTc4OTcwZGY0ZjA4OTJjYy4uZjBjN2M0MTA2NDIzODYyMGYzYTUyMWQwNzhkYzNiNzU3OGQ3M2M4
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCkBAIC00MzIsNiArNDMyLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdl
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2
NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJl
c3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Zm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5LgorfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGZm
NzQ2NDQwZWM1NGM5YzgyYTM4ZGRiOTEyN2FiYjhmYTg2Zjc5NzUuLjhhMzgxZmI3YWU0MDk4NzIw
NzM1YzBjNGViMDdiNDZmMDY2ZTBiNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zNzAsNiArMzcwLDEyIEBAIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKQogICAgIHJldHVybiAtMTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIE1lZGlhU3RyZWFtIGxheW91dCB0ZXN0cy4KKyAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU5Lgor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
SlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3Vh
Z2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0
ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBiODVlNjZlMjE2MDc2NWNhZjE5ZDE2MTkwNmMxYzA1MTc3N2M2OTQ2Li5i
MjhjYmNhMTgyODU5OTY4MTA3NTI3ZjIwNzllMzIwOWMyMzhmZjU0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTItMDItMjcgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0
IG1hbmlwdWxhdGlvbiB0byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9B
dHRyaWJ1dGVzLmpzOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dl
dHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qczogQWRkZWQuCisgICAgICAgIChzdWNjZWVkKToKKyAg
ICAgICAgKGZhaWwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNh
cHR1cmUtcHJldmlldy5odG1sOgorCiAyMDEyLTAyLTI3ICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBl
eHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTAwNjc5MmRiMzJkZWZiZDdhNjI5NTM0OTBhMTJiZWJlYWJiYzg3MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgTmF2aWdhdG9yLmdldFVz
ZXJNZWRpYSgpIHBhcmFtZXRlciBwYXJzaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlz
IDEKK1BBU1MgU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVk
aW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAw
CitQQVNTIFN0cmVhbSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlv
VHJhY2tzLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1l
bnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjczN2IzNzVmMDYyYWE2MjNjNzRkZmIwZWRhMjEzYWU2YjMx
MGE3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9yLmdldFVz
ZXJNZWRpYSgpIHBhcmFtZXRlciBwYXJzaW5nLiIpOworCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQg
dGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CisKK2xheW91dFRlc3RDb250cm9sbGVyLnNldE1v
Y2tHZXRVc2VyTWVkaWFSZXN1bHQodHJ1ZSwgdHJ1ZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQxKHMp
IHsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJyk7Cisg
ICAgc3RyZWFtID0gczsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcs
ICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOwor
CisgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8iLCBzdWNjZWVkMiwgZmFp
bCk7Cit9CisKK2Z1bmN0aW9uIHN1Y2NlZWQyKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0g
Y3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJyk7CisgICAgc3RyZWFtID0gczsKKyAgICBzaG91bGRC
ZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVh
bS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMCcpOworCisgICAgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgidmlkZW8iLCBzdWNjZWVkMywgZmFpbCk7Cit9CisKK2Z1bmN0aW9uIHN1Y2NlZWQz
KHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJyk7
CisgICAgc3RyZWFtID0gczsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0
aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGZhaWwoKSB7CisgICAgdGVz
dEZhaWxlZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIiwgc3VjY2VlZDEsIGZh
aWwpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNTZkNGYwZTYyNzIzMGQ2ZDYzZjFlODI0ZjlmNTAz
ZDI1YmVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
VGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdCBhbGxvd2VkCitQQVNTIE5vdCBhbGxvd2VkCitQQVNTIE5vdCBhbGxv
d2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90
LWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlh
LW5vdC1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E3ZmIxYzc5ZWRkMDg4MTlhMDVkYTQ0YzJm
MGU4ZDk0NzcwMWE0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9nZXR1c2Vy
bWVkaWEtbm90LWFsbG93ZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRl
cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0
ZXMuanMKaW5kZXggZDg0NDJhY2EyMzBmMjI5M2IwMjlhNDA3ZmJhYjViYmU2ODU5MGJjNi4uMDM1
MzgxYzEwNmU4YTk0NDhhZDcyODI4MTk1NjU5MzQ5ZGNlMTI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcworKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzCkBA
IC0xLDQgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiBy
ZWxhdGVkIEF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0
Yy8iKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgZGVidWcoJ1Ro
aXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicp
OworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KHRydWUs
IHRydWUpOworCiB2YXIgc3RyZWFtOwogZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZXhwcmVzc2lv
bikKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRl
c3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YmU3Mzg0MDQxNDJjMTVjNWJhZjNjM2VjM2I0MWEwMDcxYjcxNDg2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1l
ZGlhLW5vdC1hbGxvd2VkLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBO
YXZpZ2F0b3IuZ2V0VXNlck1lZGlhKCkiKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0
VXNlck1lZGlhUmVzdWx0KGZhbHNlLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3RyZWFt
KSB7CisgICAgdGVzdEZhaWxlZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rpb24g
ZmFpbCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCit3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApp
bmRleCA1ZjI5ZmQ1ZTIzODQ3NjRkMThlNjg5MGI0YWFlMmNjZTRkYWU4NTk3Li5iZTY0OGIyMWUw
YWU3MjRhNDY5NTY4ZWFhZGRjYTkzNzc2ZmZlZTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcu
aHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBIVE1MIj4KKzwhRE9DVFlQRSBIVE1MPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+
PC9zY3JpcHQ+CkBAIC03LDYgKzcsMTEgQEAKIAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgogCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBkZWJ1ZygnVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7
CisKK2xheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQodHJ1ZSwg
dHJ1ZSk7CisKIHZhciBwcmV2aWV3VVJMID0gIiI7CiB2YXIgbG9jYWxTdHJlYW0gPSBudWxsOwog
CkBAIC02MSw2ICs2Niw2IEBAIGZ1bmN0aW9uIHBsYXlQcmV2aWV3KCkKIAogPGJvZHkgb25sb2Fk
PSJwbGF5UHJldmlldygpIj4KIDx2aWRlbyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCIgYXV0b3Bs
YXk9ImF1dG9wbGF5Ij48L3ZpZGVvPgotPC9ib2R5PiAKLTwvaHRtbD4gCis8L2JvZHk+Cis8L2h0
bWw+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129440</attachid>
            <date>2012-02-29 07:12:13 -0800</date>
            <delta_ts>2012-05-04 05:41:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61068-20120229161211.patch</filename>
            <type>text/plain</type>
            <size>41548</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRmMWIxNTZiNjQyZDc5
NDViNjc0OWM0NDJlOTg3YWVmMjdlYmIyZS4uYzU5ZjcxOTM0YmJmY2JkNTQ1MTkwMjg4NWFlMDdl
OWUyZjA2ZjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAyLTI5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBtYW5pcHVsYXRpb24gdG8gdGhlIExh
eW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFs
bG93ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdz
OjpzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoSW50ZXJuYWxTZXR0aW5n
cyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAgICAgKiB0
ZXN0aW5nL1VzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6aW5zdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6VXNlck1lZGlhQ2xpZW50TW9jayk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVz
ZXJNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxV
c2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL1VzZXJNZWRpYUNsaWVudE1vY2su
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVzZXJNZWRpYUNsaWVudE1v
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6cGFnZURlc3Ryb3ll
ZCk6CisKIDIwMTItMDItMjggIEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgogCiAgICAg
ICAgIE1pY3JvZGF0YTogSW1wbGVtZW50IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiBjb2xsZWN0
aW9uLm5hbWVkSXRlbSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyMDdmZTgzZTkx
MGEzMWEwNDI2Mjc2YzIzYTZkNmMwZDQ4MzY4YjA5Li42ODM3OWE0YmU5MWJiZmYyYjkyYjJmZTU4
OGJmM2JlMzllNzhlNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTAyLTI5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogYWRkIGdldFVzZXJNZWRpYSBtb2NrIHJlc3VsdCBt
YW5pcHVsYXRpb24gdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9j
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVk
aWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6
V2ViVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJl
cXVlc3QuaDoKKyAgICAgICAgKFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1T
b3VyY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNl
c1JlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQ+KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVz
dCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4pOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEwNzkxNyBhbmQgcjEwOTE4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZTFlYWM3N2Rm
M2E4MWQxZmExNzVmYzNiZDY4MzYyMTM4ZDk3MDJlLi43ZjI2MzFiOWExZjhhYTM0YWRhMWZiOGZi
YzBmNTZmMGE4Nzk0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMzI1LDggKzEzMjUsOCBAQAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oJywKLSAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oJywKQEAgLTYwNjQsNiArNjA2
NCw4IEBACiAgICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuaCcsCiAgICAgICAgICAgICAn
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgnLAorICAgICAgICAgICAgJ3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50TW9j
ay5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAg
ICAgICAgXSwKICAgICAgICAgJ3dlYmNvcmVfcmVzb3VyY2VfZmlsZXMnOiBbCiAgICAgICAgICAg
ICAnRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDI4ODRlNTY2MTE4Nzg5YzBkZTA3NTAx
ZTFhMTE0ZWRlNDU4YTE1NzAuLjBiYWEwNTAxOTMwNDJhZjQ2ZTM3MWFjODZhMmFmMjZjZjczNWMy
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50TW9jay5oIgog
CiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgpAQCAt
MjMxLDQgKzIzMiwxNiBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFRvdWNoRXZlbnRFbXVs
YXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZQogI2VuZGlmCiB9CiAKK3Zv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdChib29sIGF1ZGlv
LCBib29sIHZpZGVvLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgVXNlck1l
ZGlhQ2xpZW50TW9jazo6aW5zdGFuY2UoKS5zZXRHZXRVc2VyTWVkaWFSZXN1bHQoYXVkaW8sIHZp
ZGVvKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGF1ZGlvKTsKKyAgICBVTlVTRURfUEFSQU0o
dmlkZW8pOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCBlZjY2Yzk5NTk1MjNjNDhlZTFi
NTgxODQ4OTFjZTA5ZWFhZmM5ZGU5Li5kMTcxYjdjYjkxYjI0OGJlNjJhZWM1MjRiYzFiODg5YWI5
MjZmMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAt
NjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQg
c2NhbGVGYWN0b3IsIGludCB4LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KGJvb2wgYXVkaW8s
IGJvb2wgdmlkZW8sIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJbnRlcm5hbFNl
dHRpbmdzKEZyYW1lKiwgSW50ZXJuYWxTZXR0aW5ncyogb2xkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IGRkOTUxOWVjMjcwOGRjZTQ5OTkyNzRi
ZTQ5ODRiY2VhNjY4NmZjMTAuLmRkZDg1YzljODk0ZjEzZDljYTM4OWQ1YjU3ZjY3ZGVlMzgyOWQx
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAt
NDEsNiArNDEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB1bmlmaWVkVGV4
dENoZWNraW5nRW5hYmxlZCgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3IoaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoaW4gYm9vbGVhbiBhdWRpbywg
aW4gYm9vbGVhbiB2aWRlbykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWNhNTFmNjlkN2Y1Zjg3ZGRjZmQ0NDZiZjZiYjk4MmVmZTNlYzUyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VzZXJN
ZWRpYUNsaWVudE1vY2smIFVzZXJNZWRpYUNsaWVudE1vY2s6Omluc3RhbmNlKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFVzZXJNZWRpYUNsaWVudE1vY2ssIG1vY2ssICgpKTsKKyAgICBy
ZXR1cm4gbW9jazsKK30KKworVXNlck1lZGlhQ2xpZW50TW9jazo6VXNlck1lZGlhQ2xpZW50TW9j
aygpCisgICAgOiBtX2FsbG93QXVkaW8oZmFsc2UpCisgICAgLCBtX2FsbG93VmlkZW8oZmFsc2Up
Cit7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1lZGlhUmVzdWx0
KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1fYWxsb3dBdWRpbyA9
IGFsbG93QXVkaW87CisgICAgbV9hbGxvd1ZpZGVvID0gYWxsb3dWaWRlbzsKK30KKwordm9pZCBV
c2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4gcHJwUmVxdWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVl
c3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAgIEFTU0VSVCghIXJlcXVlc3QpOworCisgICAg
aWYgKCFtX2FsbG93QXVkaW8gJiYgIW1fYWxsb3dWaWRlbykgeworICAgICAgICByZXF1ZXN0LT5m
YWlsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsKKworICAgIGlmIChyZXF1ZXN0LT5hdWRp
bygpICYmIG1fYWxsb3dBdWRpbykgeworICAgICAgICBTdHJpbmcgaWQgPSAibW9ja19hdWRpb19k
ZXZpY2UiOworICAgICAgICBTdHJpbmcgbmFtZSA9ICJBdWRpb0NhcHR1cmUiOworICAgICAgICBh
dWRpb1NvdXJjZXMuYXBwZW5kKE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoaWQsIE1lZGlhU3Ry
ZWFtU291cmNlOjpUeXBlQXVkaW8sIG5hbWUpKTsKKyAgICB9CisKKyAgICBpZiAocmVxdWVzdC0+
dmlkZW8oKSAmJiBtX2FsbG93VmlkZW8pIHsKKyAgICAgICAgU3RyaW5nIGlkID0gIm1vY2tfdmlk
ZW9fZGV2aWNlIjsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAiVmlkZW9DYXB0dXJlIjsKKyAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGlkLCBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCBuYW1lKSk7CisgICAgfQorCisgICAgcmVxdWVzdC0+
c3VjY2VlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CisKK3ZvaWQgVXNlck1lZGlh
Q2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Vc2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjNmMTJkZGUxZDFkOWY1MjEyYTg0YmRiYjk3YmYxNjBkNmQ3ZDhjYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVXNlck1lZGlhQ2xpZW50TW9jay5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYUNsaWVudE1vY2tfaAor
I2RlZmluZSBVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVXNlck1lZGlhQ2xpZW50TW9j
ayA6IHB1YmxpYyBVc2VyTWVkaWFDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBVc2VyTWVk
aWFDbGllbnRNb2NrJiBpbnN0YW5jZSgpOworCisgICAgdm9pZCBzZXRHZXRVc2VyTWVkaWFSZXN1
bHQoYm9vbCBhbGxvd0F1ZGlvLCBib29sIGFsbG93VmlkZW8pOworCisgICAgLy8gVXNlck1lZGlh
Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCAgY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFVzZXJN
ZWRpYUNsaWVudE1vY2soKTsKKworICAgIGJvb2wgbV9hbGxvd0F1ZGlvOworICAgIGJvb2wgbV9h
bGxvd1ZpZGVvOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudE1vY2tfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDNkYTA0NzdhMDExNGRlOWY4Yjc2MDRkZmQxYmI1
MGM4YzdjNjRmYTAuLjU0ODU3YTgzMjA4ZDg3MGUzMjQ0NWE5Y2ZlYmY5OGVhMzc3NmRiNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI2OCw2ICsyNjgsNyBAQAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlVSTExvYWRlck9wdGlvbnMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVk
aWFDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgnLApAQCAtNjcwLDYgKzY3MSw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJVUkxSZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJM
UmVzcG9uc2VQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJWaWV3SW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NjRlMzYwNGZlMTdh
ZDQ4ZDZmNzQ5MzEyOWI2MjVkYTEyYzVkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCisjZGVmaW5lIFdlYlVzZXJNZWRp
YUNsaWVudE1vY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldl
YlVzZXJNZWRpYUNsaWVudC5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNlck1lZGlhQ2xpZW50TW9jazsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sgOiBw
dWJsaWMgV2ViVXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOworICAgIH5X
ZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICAvLyBXZWJVc2VyTWVkaWFDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2Vz
LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpOwor
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmKTsKKworcHJpdmF0ZToKKyAgICBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAz
OGZiMTg5OGI3MzY2MmQ5ODI4NzY5NDZmYzBiYTMxZmFmODg3M2E0Li5mYjIwNjI4ODViZTY0YTNl
OTkxNDc2Nzk5NmZlOTMxNzdkMjRjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC03MSwxMiArNzEsMTMgQEAgcHVi
bGljOgogICAgIC8vIERFUFJFQ0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1
Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CiAKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0
cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVl
c3RGYWlsZWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdl
YlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykgY29uc3Q7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgogICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYpOwogICAgIG9wZXJhdG9yIFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3QqKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0PigpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKaW5kZXggN2ZjYzdjMjc1MmNiMGY2YzU2MTJk
YTI2YjM0MjUyYzc3YjQ3NjgwOC4uY2IwODk2NzdhNTFjMmZmYzQzNWFjNGQyOGM4NDI0OWRhYTRj
ZmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaApAQCAtNTgs
NiArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudD4mKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0OwogI2VuZGlm
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCmluZGV4IGVhODg2ODAwOTI0OGMyODY4
MDQ0MTg0OWNjZGZjYTZmZjdlYjhmMTMuLjVjNmM5NjdmNDNlNTc3ZTJiZTRkNjI1NDIxODU3ZDA4
NzQ3YjJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
U3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwCkBAIC04Miw2ICs4MiwxMSBAQCB2b2lk
IFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZQogICAgIG1fcHJpdmF0ZS0+ZGlkQ29tcGxldGVRdWVyeShhdWRp
bywgdmlkZW8pOwogfQogCitXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQ
YXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMDNhNDVjODYzOGY5NzdiYzYwOThkZTcyNTRlZjUzMjAwM2Q0ZWJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5j
cHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNs
dWRlICJ0ZXN0aW5nL1VzZXJNZWRpYUNsaWVudE1vY2suaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s+IFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOworfQorCit2b2lkIFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9T
b3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJj
ZXMpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW87CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFT
dHJlYW1Tb3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07CisgICAgICAgIGF1ZGlvLmFwcGVu
ZChjdXJyKTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW87CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJjZXNbaV07CisgICAgICAgIHZp
ZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgVXNlck1lZGlhQ2xpZW50TW9jazo6aW5zdGFu
Y2UoKS5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFVzZXJNZWRpYUNsaWVudE1vY2s6Omlu
c3RhbmNlKCkuY2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA1
YTc2YzgzYjBkZTg4ZGQwNWJhZWU5NDRiZmNmZTk1Y2UxMWI2MTI1Li44ZGQxZjlmY2FmYWQ2ODg5
MzZlMTBiNjU3MjcwOTViYWQ3NTUxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODYsNyArODYsNyBAQCBXZWJTZWN1
cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAg
ICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAotdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0
OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
IGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlk
ZW9Tb3VyY2VzKQordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdAogewog
ICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsx
MjMsNyBAQCB2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPgogICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChh
dWRpbywgdmlkZW8pOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWls
ZWQoKQordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkgY29uc3QKIHsK
ICAgICBtX3ByaXZhdGUtPmZhaWwoKTsKIH0KQEAgLTE0OCw2ICsxNDgsMTEgQEAgV2ViVXNlck1l
ZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1lZGlhUmVxdWVzdCooKSBjb25zdAogICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAKK1dlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBh
c3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBjMTk2YTY5Y2IyMzUzZmVjZTQ5YzRjMzRlYjg5MTYwYjkxZTVkYjIzLi41ZTNh
NTBjNDE3MTMwZjVkODYyOTdmNWNhMzU2Yzk5YWU0OWQ1NTJjIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDIt
MjkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVk
aWFTdHJlYW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0
byB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJlYW1DbGllbnQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6
CisKIDIwMTItMDItMjggIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBhIHR5cG8gaW4gY29uZmlnLmpzb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDA3MzZjMDM4MWIzNGM4OGUzMDdlNWZmZjNkNTRmZDY5
MjBmODc1MGUuLmU2ZTBmMjVmZWIzMGJjNzNjNGM4ZDE3MWY1ZTUxMzA3M2YxOTEzYjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtNDgsOCArNDgsNiBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlBlcm1pc3Npb25zLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViUHJl
ZmVyZW5jZXMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZmMxNDRjYmMzNzQ2YzhlOWVhMjY1MTE2NmYwODNh
OWIwNThjOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgi
Ci0KLSNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiV2ViVXNl
ck1lZGlhUmVxdWVzdC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9j
az4gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSk7Ci19Ci0KLWJvb2wgV2ViVXNlck1lZGlh
Q2xpZW50TW9jazo6SXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYgdXJsKQotewotICAgIFdlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvciBkZXNjcmlwdG9yKFdlYk1lZGlhU3RyZWFtUmVnaXN0cnk6Omxv
b2t1cE1lZGlhU3RyZWFtRGVzY3JpcHRvcih1cmwpKTsKLSAgICBpZiAoZGVzY3JpcHRvci5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiBzb3VyY2VWZWN0b3I7Ci0gICAgZGVzY3JpcHRvci5zb3VyY2VzKHNvdXJjZVZl
Y3Rvcik7Ci0gICAgV2ViU3RyaW5nIHRyYWNrSWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzb3VyY2VWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHNvdXJjZVZlY3Rvcltp
XS50eXBlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbykgewotICAgICAgICAg
ICAgdHJhY2tJZCA9IHNvdXJjZVZlY3RvcltpXS5pZCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRyYWNrSWQuZXF1YWxzKCJtZWRpYXN0cmVhbXRl
c3QiKTsKLX0KLQotdm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlh
KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHN0cmVhbVJlcXVlc3QsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHN0cmVhbVNvdXJjZVZlY3RvcikKLXsKLSAgICBBU1NF
UlQoIXN0cmVhbVJlcXVlc3QuaXNOdWxsKCkpOwotCi0gICAgV2ViVXNlck1lZGlhUmVxdWVzdCBy
ZXF1ZXN0ID0gc3RyZWFtUmVxdWVzdDsKLSAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IDE7Ci0gICAg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2VWZWN0b3Ioc2l6ZSk7Ci0gICAg
V2ViU3RyaW5nIHRyYWNrSWQoIm1lZGlhc3RyZWFtdGVzdCIpOwotICAgIFdlYlN0cmluZyB0cmFj
a05hbWUoIlZpZGVvQ2FwdHVyZSIpOwotICAgIHNvdXJjZVZlY3RvclswXS5pbml0aWFsaXplKHRy
YWNrSWQsIFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8sIHRyYWNrTmFtZSk7Ci0gICAg
cmVxdWVzdC5yZXF1ZXN0U3VjY2VlZGVkKHNvdXJjZVZlY3Rvcik7Ci19Ci0KLXZvaWQgV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVk
aWFSZXF1ZXN0JikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxOTQyZTNiZGNhMTVjMTc1MDRiMmFiMDZhMDdhMTlkZDQ0NzM2MTcxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDY0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAotI2RlZmluZSBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRl
ICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJV
UkwuaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYmtpdF9zdXBwb3J0OjpN
ZWRpYVN0cmVhbVV0aWwgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOwotICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkg
eyB9Ci0KLSAgICBib29sIElzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmKTsKLQotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOwotCi1wcml2
YXRlOgotICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8v
IFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDgxNjAzYjM3ZjVhMGU1YjdkNjRiMzgwN2I1ZjhhMWUy
MjMwMzk3YWIuLjhjZWY2YTVkYzIwYzMwNzBmNDhkMmQxODgyMWY4MDZlZTg2YjdlYWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTE2NjUs
MTUgKzE2NjUsMTAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZXhpdEZ1bGxTY3JlZW5Ob3coKQogfQog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0
aWwqIFdlYlZpZXdIb3N0OjptZWRpYVN0cmVhbVV0aWwoKQotewotICAgIHJldHVybiB1c2VyTWVk
aWFDbGllbnRNb2NrKCk7Ci19Ci0KIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGll
bnQqIFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKQogewogICAgIGlmICghbV90
ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCkpCi0gICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xp
ZW50ID0gYWRvcHRQdHIobmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQo
bWVkaWFTdHJlYW1VdGlsKCkpKTsKKyAgICAgICAgbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQgPSBh
ZG9wdFB0cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCgpKTsKICAg
ICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCk7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IGY4MGY0MzhhZDVj
ZGJkNWZkZTJhMjYwNzNkNjU5ODljNTAzY2I5ZDQuLjU5NGRhODY2ODRiM2I3NmMwYjdlMTEzNjZl
MmNlY2FjMTYwYmEwNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaApAQCAtMjQ5LDYgKzI0OSwxMSBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAg
IC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKICAg
ICBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2Nr
KCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIC8vIFVzZXIgbWVkaWEgY2xpZW50
IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgorICAgIFdlYktpdDo6V2ViVXNlck1lZGlh
Q2xpZW50TW9jayogdXNlck1lZGlhQ2xpZW50TW9jaygpOworI2VuZGlmCisKICAgICAvLyBQZW5k
aW5nIHRhc2sgbGlzdCwgTm90ZSB0YWh0IHRoZSBtZXRob2QgaXMgcmVmZXJyZWQgZnJvbSBNZXRo
b2RUYXNrIGNsYXNzLgogICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tM
aXN0OyB9CiAKQEAgLTMxMCw4ICszMTUsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNl
ck1lZGlhQ2xpZW50TW9jaygpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwq
IG1lZGlhU3RyZWFtVXRpbCgpOwogICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1D
bGllbnQqIHRlc3RNZWRpYVN0cmVhbUNsaWVudCgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDAwMGU4
NTRiZDcwOGY2NWU3YWQ4OTFmYzE2NTM0MDBmMDg0OGMxLi4zMTJmZTZhNzE5ZTdiYWJmZWFhOGMy
MjBkMjRiYzdkOTMzNmY0ZDdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDItMjkgIFRv
bW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJl
YW0gQVBJOiBhZGQgZ2V0VXNlck1lZGlhIG1vY2sgcmVzdWx0IG1hbmlwdWxhdGlvbiB0byB0aGUg
TGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1hcmd1bWVudHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS1hcmd1bWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzOgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dl
ZC5qczogQWRkZWQuCisgICAgICAgIChzdWNjZWVkKToKKyAgICAgICAgKGZhaWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sOgor
CiAyMDEyLTAyLTI4ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBVbnJldmlld2VkIG1vcm5pbmcgZ2FyZGVuaW5nLCBza2lwIG5ldyBmYWlsaW5n
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2Vy
bWVkaWEtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwNjc5
MmRiMzJkZWZiZDdhNjI5NTM0OTBhMTJiZWJlYWJiYzg3MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpIHBh
cmFtZXRlciBwYXJzaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBT
dHJlYW0gY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5s
ZW5ndGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1MgU3Ry
ZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAwCitQQVNTIFN0cmVh
bSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KK1BBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0
aCBpcyAwCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFyZ3VtZW50cy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtYXJndW1lbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmFiMGQyNTA2ZGVkNzc2YzU3MjIxMDQ0NjVkMmI1NDkwMWVlYmRlYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWFy
Z3VtZW50cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSgpIHBh
cmFtZXRlciBwYXJzaW5nLiIpOworCitpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgZGVidWco
J1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHdpbmRvdy5pbnRlcm5hbHMnKTsKKwor
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KHRydWUs
IHRydWUpOworCitmdW5jdGlvbiBzdWNjZWVkMShzKSB7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFt
IGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxk
QmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJl
YW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKworICAgIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZDIsIGZhaWwpOworfQorCitmdW5jdGlvbiBzdWNjZWVk
MihzKSB7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicp
OworICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5n
dGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzAn
KTsKKworICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgc3VjY2VlZDMs
IGZhaWwpOworfQorCitmdW5jdGlvbiBzdWNjZWVkMyhzKSB7CisgICAgdGVzdFBhc3NlZCgnU3Ry
ZWFtIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLicpOworICAgIHN0cmVhbSA9IHM7CisgICAgc2hv
dWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlKCdz
dHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBmYWlsKCkgeworICAgIHRlc3RGYWlsZWQoJ1Nob3VsZCBub3QgaGFwcGVu
Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoImF1ZGlvLCB2aWRlbyIsIHN1Y2NlZWQxLCBmYWlsKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNl
cm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MzU2ZDRmMGU2MjcyMzBkNmQ2M2YxZTgyNGY5ZjUwM2QyNWJlYTAzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIE5hdmlnYXRvci5nZXRVc2VyTWVk
aWEoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBOb3QgYWxsb3dlZAor
UEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdhN2ZiMWM3OWVkZDA4ODE5YTA1ZGE0NGMyZjBlOGQ5NDc3MDFhNGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxs
b3dlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzCmluZGV4IGQ4NDQyYWNhMjMwZjIy
OTNiMDI5YTQwN2ZiYWI1YmJlNjg1OTBiYzYuLjQ0MzNmOGRjNjliMTFkNzkxY2NlNzQ3MTQ2NDZl
ODNmMzA0NzZlNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2Ny
aXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcwpAQCAtMSw0ICsxLDEwIEBACiBkZXNjcmlwdGlv
bigiVGVzdHMgUGVlclRvUGVlckNvbm5lY3Rpb24gcmVsYXRlZCBBdHRyaWJ1dGVzIGFjY29yZGlu
ZyB0byBodHRwOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvIik7CisKK2lmICghd2luZG93LmludGVy
bmFscykKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgd2luZG93
LmludGVybmFscycpOworCit3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1vY2tHZXRVc2Vy
TWVkaWFSZXN1bHQodHJ1ZSwgdHJ1ZSk7CisKIHZhciBzdHJlYW07CiBmdW5jdGlvbiBzaG91bGRO
b3RUaHJvdyhleHByZXNzaW9uKQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpzIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5vdC1hbGxv
d2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2MjhlMTg5OTY3ODZiNTg0NWE1MTkxYzdkMmJjNWYwYjAyNDNl
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Njcmlw
dC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQuanMKQEAgLTAsMCArMSwyMSBAQAorZGVz
Y3JpcHRpb24oIlRlc3RzIE5hdmlnYXRvci5nZXRVc2VyTWVkaWEoKSIpOworCitpZiAoIXdpbmRv
dy5pbnRlcm5hbHMpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHdpbmRvdy5pbnRlcm5hbHMnKTsKKword2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KGZhbHNlLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3Ry
ZWFtKSB7CisgICAgdGVzdEZhaWxlZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rp
b24gZmFpbCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCit3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRt
bAppbmRleCA1ZjI5ZmQ1ZTIzODQ3NjRkMThlNjg5MGI0YWFlMmNjZTRkYWU4NTk3Li40ODA3ZTlj
NjBhOTBiMDEyYmIwMThmNzhkOGQzYmI3OTlhN2M5OTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZp
ZXcuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBIVE1MIj4KKzwhRE9DVFlQRSBIVE1M
PgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUu
anM+PC9zY3JpcHQ+CkBAIC03LDYgKzcsMTEgQEAKIAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogCitpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgZGVidWcoJ1RoaXMgdGVzdCBj
YW4gbm90IGJlIHJ1biB3aXRob3V0IHdpbmRvdy5pbnRlcm5hbHMnKTsKKword2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0KHRydWUsIHRydWUpOworCiB2
YXIgcHJldmlld1VSTCA9ICIiOwogdmFyIGxvY2FsU3RyZWFtID0gbnVsbDsKIApAQCAtNjEsNiAr
NjYsNiBAQCBmdW5jdGlvbiBwbGF5UHJldmlldygpCiAKIDxib2R5IG9ubG9hZD0icGxheVByZXZp
ZXcoKSI+CiA8dmlkZW8gd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiIGF1dG9wbGF5PSJhdXRvcGxh
eSI+PC92aWRlbz4KLTwvYm9keT4gCi08L2h0bWw+IAorPC9ib2R5PgorPC9odG1sPgogCg==
</data>
<flag name="commit-queue"
          id="132292"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>