<?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>137759</bug_id>
          
          <creation_ts>2014-10-15 17:44:41 -0700</creation_ts>
          <short_desc>[Mac] Add API for open panel handling to WKWebView</short_desc>
          <delta_ts>2017-06-06 00:59:09 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164311</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=172849</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Michel">brian.michel</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>brian.michel</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>etiennelemay21</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jschneck</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>mk</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042017</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-10-15 17:44:41 -0700</bug_when>
    <thetext>When attempting to upload files by way of an &lt;input&gt; tag there is no action taken by WebKit on behalf of the user allowing them to input files to upload. The root cause of this seems to be that the &quot;handleRunOpenPanel&quot; is just unimplemented for OS X clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042019</commentid>
    <comment_count>1</comment_count>
      <attachid>239909</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-10-15 17:50:31 -0700</bug_when>
    <thetext>Created attachment 239909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042020</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-15 17:52:06 -0700</bug_when>
    <thetext>Attachment 239909 did not pass style-queue:


ERROR: Source/WebKit2/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebKit2/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebKit2/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebKit2/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebKit2/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042024</commentid>
    <comment_count>3</comment_count>
      <attachid>239911</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-10-15 18:03:12 -0700</bug_when>
    <thetext>Created attachment 239911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042953</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-10-20 13:29:23 -0700</bug_when>
    <thetext>I changed this to a P1/Blocker since this will break any WKWebView developer attempting to use file input. This is a regression from previously released versions of WebKit, so I think the prioritization is correct. 

Please correct as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043112</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-20 23:11:54 -0700</bug_when>
    <thetext>Anders, is this how it is supposed to work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043180</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-21 08:44:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Anders, is this how it is supposed to work?

I think what we want is to call out to a UI delegate method, and perhaps have the default implementation show an NSOpenPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043189</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-10-21 08:52:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Anders, is this how it is supposed to work?
&gt; 
&gt; I think what we want is to call out to a UI delegate method, and perhaps
&gt; have the default implementation show an NSOpenPanel.

I was going to go this route first, but wanted to keep it simple first and see which way to go. I will update the WKUIDelegate to have a new optional methods similar to the ones that exist currently on WebUIDelegate for handling file buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047455</commentid>
    <comment_count>8</comment_count>
      <attachid>241272</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-11-09 21:28:44 -0800</bug_when>
    <thetext>Created attachment 241272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047456</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-09 21:30:02 -0800</bug_when>
    <thetext>Attachment 241272 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:98:  Please declare enum bitfields as unsigned integral types.  [runtime/enum_bitfields] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047458</commentid>
    <comment_count>10</comment_count>
      <attachid>241273</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-11-09 21:37:10 -0800</bug_when>
    <thetext>Created attachment 241273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047459</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-11-09 21:44:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Anders, is this how it is supposed to work?
&gt; 
&gt; I think what we want is to call out to a UI delegate method, and perhaps
&gt; have the default implementation show an NSOpenPanel.

I implemented calling out to the UI delegate, but did not include a default implementation as none of the other WKUIDelegate methods provide default implementations. If this is considered very desirable, it will be very easy to add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047855</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-11-11 08:52:28 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Anders, is this how it is supposed to work?
&gt; &gt; 
&gt; &gt; I think what we want is to call out to a UI delegate method, and perhaps
&gt; &gt; have the default implementation show an NSOpenPanel.
&gt; 
&gt; I implemented calling out to the UI delegate, but did not include a default
&gt; implementation as none of the other WKUIDelegate methods provide default
&gt; implementations. If this is considered very desirable, it will be very easy
&gt; to add.

Great, I really appreciate you working on this! I&apos;ll try to take a look at it sometime this week - we still need to figure out how this should interact with iOS as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047861</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-11-11 09:08:55 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Anders, is this how it is supposed to work?
&gt; &gt; &gt; 
&gt; &gt; &gt; I think what we want is to call out to a UI delegate method, and perhaps
&gt; &gt; &gt; have the default implementation show an NSOpenPanel.
&gt; &gt; 
&gt; &gt; I implemented calling out to the UI delegate, but did not include a default
&gt; &gt; implementation as none of the other WKUIDelegate methods provide default
&gt; &gt; implementations. If this is considered very desirable, it will be very easy
&gt; &gt; to add.
&gt; 
&gt; Great, I really appreciate you working on this! I&apos;ll try to take a look at
&gt; it sometime this week - we still need to figure out how this should interact
&gt; with iOS as well.

Thanks Anders! Should this interact at all with iOS? Looking at the code the implementation of input tag handling is all private. If there&apos;s a way to expose this delegate method to OS X only, I&apos;d be more than happy to take a look at going down that route.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056851</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-18 11:46:47 -0800</bug_when>
    <thetext>*** Bug 139745 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056857</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2014-12-18 12:03:27 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; &gt; Anders, is this how it is supposed to work?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I think what we want is to call out to a UI delegate method, and perhaps
&gt; &gt; &gt; &gt; have the default implementation show an NSOpenPanel.
&gt; &gt; &gt; 
&gt; &gt; &gt; I implemented calling out to the UI delegate, but did not include a default
&gt; &gt; &gt; implementation as none of the other WKUIDelegate methods provide default
&gt; &gt; &gt; implementations. If this is considered very desirable, it will be very easy
&gt; &gt; &gt; to add.
&gt; &gt; 
&gt; &gt; Great, I really appreciate you working on this! I&apos;ll try to take a look at
&gt; &gt; it sometime this week - we still need to figure out how this should interact
&gt; &gt; with iOS as well.
&gt; 
&gt; Thanks Anders! Should this interact at all with iOS? Looking at the code the
&gt; implementation of input tag handling is all private. If there&apos;s a way to
&gt; expose this delegate method to OS X only, I&apos;d be more than happy to take a
&gt; look at going down that route.

What is the path forward here? Is there more I should add, or can I petition someone to land this for me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061536</commentid>
    <comment_count>16</comment_count>
    <who name="Justin Schneck">jschneck</who>
    <bug_when>2015-01-15 06:15:54 -0800</bug_when>
    <thetext>Can we get some update on this, its pretty critical for Mac OS 10.10 apps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061595</commentid>
    <comment_count>17</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-01-15 11:28:04 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Can we get some update on this, its pretty critical for Mac OS 10.10 apps

Justin, I&apos;m going to drop into the IRC channel later today and see what I can do to get some more traction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080937</commentid>
    <comment_count>18</comment_count>
    <who name="Jason Murray">jsn256</who>
    <bug_when>2015-03-28 07:03:25 -0700</bug_when>
    <thetext>Still eager for this to go through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097639</commentid>
    <comment_count>19</comment_count>
    <who name="Justin Schneck">jschneck</who>
    <bug_when>2015-05-27 09:19:17 -0700</bug_when>
    <thetext>This is starting to cause pain in our company&apos;s product. Is there any news on this being put through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145536</commentid>
    <comment_count>20</comment_count>
    <who name="Justin Caldicott">mail</who>
    <bug_when>2015-12-02 02:16:46 -0800</bug_when>
    <thetext>Any update on this?

Our (OS X) app has an &lt;input type=&quot;file&quot;&gt; to allow upload of photos, and it seems there&apos;s no way to handle adding files.  Drag and drop works fine and we can get the file blob directly in Javascript.

The only workaround I see is to make a request to our native api that opens a file picker and return the contents of the file in the response.  This will perform poorly though as the files can be quite large.

I guess an ideal implementation would open a file picker like normal.  I&apos;d settle for a handler that we can implement and open the dialog manually and somehow return the file blobs back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151425</commentid>
    <comment_count>21</comment_count>
      <attachid>267946</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-27 13:23:50 -0800</bug_when>
    <thetext>Created attachment 267946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151426</commentid>
    <comment_count>22</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-27 13:26:05 -0800</bug_when>
    <thetext>Updated the diff to land clean to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151440</commentid>
    <comment_count>23</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-27 19:22:55 -0800</bug_when>
    <thetext>I manually tested and verified that this code works. I attempted to write automated tests, but there is no clear documentation on how to trigger such events programmatically within WebKit. 

No existing test cases mimic this behavior, and from what I can tell there is no way to trigger this directly through JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151446</commentid>
    <comment_count>24</comment_count>
      <attachid>267951</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-27 21:42:12 -0800</bug_when>
    <thetext>Created attachment 267951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151447</commentid>
    <comment_count>25</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-27 21:46:01 -0800</bug_when>
    <thetext>I figured out a way to add a test for this specific case. Please let me know if this is an acceptable approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151545</commentid>
    <comment_count>26</comment_count>
    <who name="Justin Schneck">jschneck</who>
    <bug_when>2015-12-29 09:24:38 -0800</bug_when>
    <thetext>What is left for us to land this? Can we get additional help on getting this pulled in? WebKit1 javascript is painfully slow on 10.10 + and we cant move to WK2 until this gets landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151549</commentid>
    <comment_count>27</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-29 09:36:35 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; What is left for us to land this? Can we get additional help on getting this
&gt; pulled in? WebKit1 javascript is painfully slow on 10.10 + and we cant move
&gt; to WK2 until this gets landed.

Justin I am waiting for a reviewer to review this patch. Since it was recently updated it should have emailed the mailing lists requesting a review.

If you&apos;d like to help speed this along perhaps drop a note into the #webkit channel on IRC and maybe someone will snatch up the review.

Believe me I want this to get landed too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151614</commentid>
    <comment_count>28</comment_count>
      <attachid>267951</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-30 10:53:35 -0800</bug_when>
    <thetext>Comment on attachment 267951
Patch

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

Added a few comments. I only did a very shallow review pass though.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:40
&gt; +/*! A class conforming to WKOpenPanelResultListener provides methods methods

&quot;methods methods&quot;

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:253
&gt; +    if (!m_uiDelegate.m_webView) {
&gt; +        listener-&gt;invalidate();
&gt; +        return false;
&gt; +    }
&gt; +
&gt; +    NSWindow *window = [m_uiDelegate.m_webView window];

An explicit null check for m_uiDelegate.m_webView is not needed, please remove it. In Objective-C, sending a message to a nil target is supported, and results in a nil pointer in this case.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:262
&gt; +    // If we have no delegate, invalide the listener and return false.

How is this possible, given that m_uiDelegate.m_delegateMethods.webViewRunOpenPanelWithResultListenerAllowsMultipleFiles is true?

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:268
&gt; +    [((id &lt;WKUIDelegate&gt;) delegate) webView:m_uiDelegate.m_webView runOpenPanelWithResultListener:(id &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener]) allowsMultipleFiles:parameters-&gt;allowMultipleFiles()];

It shouldn&apos;t be necessary to typecast delegate here, m_delegate is &quot;id &lt;WKUIDelegate&gt;&quot; already.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:452
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090

Please remove this check, trunk WebKit doesn&apos;t support 10.9.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151615</commentid>
    <comment_count>29</comment_count>
      <attachid>268008</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-30 11:07:26 -0800</bug_when>
    <thetext>Created attachment 268008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151616</commentid>
    <comment_count>30</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2015-12-30 11:09:52 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 267951 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267951&amp;action=review
&gt; 
&gt; Added a few comments. I only did a very shallow review pass though.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:40
&gt; &gt; +/*! A class conforming to WKOpenPanelResultListener provides methods methods
&gt; 
&gt; &quot;methods methods&quot;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:253
&gt; &gt; +    if (!m_uiDelegate.m_webView) {
&gt; &gt; +        listener-&gt;invalidate();
&gt; &gt; +        return false;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    NSWindow *window = [m_uiDelegate.m_webView window];
&gt; 
&gt; An explicit null check for m_uiDelegate.m_webView is not needed, please
&gt; remove it. In Objective-C, sending a message to a nil target is supported,
&gt; and results in a nil pointer in this case.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:262
&gt; &gt; +    // If we have no delegate, invalide the listener and return false.
&gt; 
&gt; How is this possible, given that
&gt; m_uiDelegate.m_delegateMethods.
&gt; webViewRunOpenPanelWithResultListenerAllowsMultipleFiles is true?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:268
&gt; &gt; +    [((id &lt;WKUIDelegate&gt;) delegate) webView:m_uiDelegate.m_webView runOpenPanelWithResultListener:(id &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener]) allowsMultipleFiles:parameters-&gt;allowMultipleFiles()];
&gt; 
&gt; It shouldn&apos;t be necessary to typecast delegate here, m_delegate is &quot;id
&gt; &lt;WKUIDelegate&gt;&quot; already.
&gt; 
&gt; &gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:452
&gt; &gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
&gt; 
&gt; Please remove this check, trunk WebKit doesn&apos;t support 10.9.

Thank you so much for your feedback Alexey, I&apos;ve made the changes asked for, and tests on my local seem to be passing, but waiting for the bots to say so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157682</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-22 09:17:09 -0800</bug_when>
    <thetext>Anders, are you OK with this new API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157684</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-22 09:18:36 -0800</bug_when>
    <thetext>Confused about the &quot;WebKit1 javascript is painfully slow on 10.10 +&quot; comment above. On OS X, JavaScript code should be nearly identical in speed in Legacy WebKit and Modern WebKit. If it’s slow then there’s some other bug that needs to be investigated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157699</commentid>
    <comment_count>33</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-01-22 09:58:39 -0800</bug_when>
    <thetext>This is a good start, thanks for tackling it. Instead of having &quot;allowsMultipleFiles&quot;, I&apos;d like to see a WKOpenPanelParameters object that has an allowsMultipleFiles flag. This will let us extend the open panel if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157712</commentid>
    <comment_count>34</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-22 10:24:56 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; This is a good start, thanks for tackling it. Instead of having
&gt; &quot;allowsMultipleFiles&quot;, I&apos;d like to see a WKOpenPanelParameters object that
&gt; has an allowsMultipleFiles flag. This will let us extend the open panel if
&gt; needed.

Thanks Anders I will work on that today and update the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157936</commentid>
    <comment_count>35</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-22 18:39:30 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; This is a good start, thanks for tackling it. Instead of having
&gt; &quot;allowsMultipleFiles&quot;, I&apos;d like to see a WKOpenPanelParameters object that
&gt; has an allowsMultipleFiles flag. This will let us extend the open panel if
&gt; needed.

There is already a file with WKOpenPanelOptions.h as the name, how would you recommend naming the Objective-C wrapping class to not conflict?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157945</commentid>
    <comment_count>36</comment_count>
      <attachid>269635</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-22 20:23:10 -0800</bug_when>
    <thetext>Created attachment 269635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157948</commentid>
    <comment_count>37</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-22 20:24:49 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #33)
&gt; &gt; This is a good start, thanks for tackling it. Instead of having
&gt; &gt; &quot;allowsMultipleFiles&quot;, I&apos;d like to see a WKOpenPanelParameters object that
&gt; &gt; has an allowsMultipleFiles flag. This will let us extend the open panel if
&gt; &gt; needed.
&gt; 
&gt; There is already a file with WKOpenPanelOptions.h as the name, how would you
&gt; recommend naming the Objective-C wrapping class to not conflict?

I took a first stab at the parameters object you mentioned. Please let me know what you&apos;d like to see changed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158046</commentid>
    <comment_count>38</comment_count>
      <attachid>269672</attachid>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-23 10:03:02 -0800</bug_when>
    <thetext>Created attachment 269672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158051</commentid>
    <comment_count>39</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-23 10:42:51 -0800</bug_when>
    <thetext>Just checking the build log, and I see a crash in some stream api

Regressions: Unexpected crashes (1)
  imported/w3c/web-platform-tests/streams-api/readable-streams/garbage-collection.html [ Crash ]

I don&apos;t think I modified any of this code, but I did merge trunk in, any way this could be a part of that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158056</commentid>
    <comment_count>40</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-23 11:53:39 -0800</bug_when>
    <thetext>This test is flaky, see bug 152436. The failure is unrelated to this patch, and EWS is now green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158057</commentid>
    <comment_count>41</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-23 11:54:32 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; This test is flaky, see bug 152436. The failure is unrelated to this patch,
&gt; and EWS is now green.

Ahh Wonderful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158148</commentid>
    <comment_count>42</comment_count>
      <attachid>269672</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-24 13:35:50 -0800</bug_when>
    <thetext>Comment on attachment 269672
Patch

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

Looks like good work. Thanks for tackling this!

I have many small comments, some are important, others are less important details but still worth improving.

review- mainly because of the most serious problem, the lifetime mistake in WKConcreteOpenPanelResultListener where it doesn’t ref/deref the underlying listener proxy C++ object.

&gt; Source/WebKit2/ChangeLog:3
&gt; +        Handle Open Panel Functions Are Unimplemented

We don’t capitalize every word of bug titles; even though they are “titles”, “title case” is not called for.

&gt; Source/WebKit2/ChangeLog:23
&gt; +        * Shared/API/Cocoa/WebKit.h:
&gt; +        * UIProcess/API/Cocoa/WKUIDelegate.h:
&gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParameters.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParameters.m: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; +        (-[WKUIOpenPanelParameters _setAllowsMultipleFiles:]):
&gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParametersPrivate.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; +        * UIProcess/Cocoa/UIDelegate.h:
&gt; +        * UIProcess/Cocoa/UIDelegate.mm:
&gt; +        (WebKit::UIDelegate::setDelegate):
&gt; +        (WebKit::UIDelegate::UIClient::runOpenPanel):
&gt; +        * UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; +        * UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; +        (-[WKConcreteOpenPanelResultListener initWithListenerProxy:]):
&gt; +        (-[WKConcreteOpenPanelResultListener chooseFiles:]):
&gt; +        (-[WKConcreteOpenPanelResultListener cancel]):
&gt; +        * WebKit2.xcodeproj/project.pbxproj:

A good quality change log should have comments about what each change was, and should only list function names when there is a change in the function.

All those &quot;Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h&quot; also look incorrect. The script generated incorrect stuff there, and you need to replace those mistakes with a useful change log entry.

&gt; Source/WebKit2/ChangeLog:108
&gt; -        (because createWebPage, which usually brings it up, hasn&apos;t happened yet), and we 
&gt; +        (because createWebPage, which usually brings it up, hasn&apos;t happened yet), and we

Trimming all the trailing whitespace from the ChangeLog is not typically something we want to do; makes the patch bigger for no good reason.

I suppose we could add a pre-commit hook to prevent people from landing such whitespace in the first place to avoid this in the future.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:39
&gt; +@class WKWebView;
&gt; +@class WKUIOpenPanelParameters;

We normally keep these alphabetically, so please sort these in instead  of adding them at the bottom.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:43
&gt; +/*! A class conforming to WKOpenPanelResultListener provides methods
&gt; +for interacting with files.
&gt; +*/

This seems a bit vague and oblique. I looked at Apple documentation to see how they write these and it would be something more like:

/*! The WKOpenPanelResultListener protocol defines the methods that a file open panel implementation must invokes when the open interaction is complete.
*/

One critical question is whether we have a threading rule about this class or not. I think we would want these methods to be callable on any thread. And we also want it to be safe to deallocate this object on any thread. That’s tricky to get right.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:46
&gt; +/*! @abstract passes an array of file urls to the web view.

Should be capitalized: “Passes”.

“file URLs”, not “file urls”.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:47
&gt; + @param fileURLs The array of file urls to pass to the web view.

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:48
&gt; + @discussion passing nil, or an empty array will have the effect of calling the cancel selector.

There should not be a comma after the word &quot;nil&quot;.

But more importantly in a new API we should not be talking about passing nil, since we are not marking this as a nullable argument. Callers should pass @[] rather than nil.

I also don’t think the wording “will have the effect of calling the cancel selector” is quite right. I would write something a little more like this:

@discussion Passing an empty array cancels the file open interaction as the cancel method does.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:50
&gt; +- (void)chooseFiles:(NSArray *)fileURLs;

The type here should be NSArray&lt;NSURL *&gt; *, which will make things nicer both for programmers using Objective-C and Swift. Not sure exactly how we are handling using that feature in WebKit API at this time; there may be some compatibility issue for older versions of clang. If nobody else knows, Anders at least should know.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:139
&gt; + @param listener The listener object to be called when selection has completed
&gt; + or cancelled.

I’d put this all on one line. No need to wrap this. Even though some of the comments above are wrapped like this.

Wording not quite right here. I don’t think we would say that &quot;selection has completed&quot;. We don’t &quot;call&quot; an object, we invoke one of its methods. And a selection doesn’t complete nor does it cancel. So I think better wording would be more like:

    The listener object with methods to be invoked when the user makes a selection or cancels.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:140
&gt; + @param parameters Parameters to configure the open panel with as specificed by the webpage.

typo: &quot;specificed&quot;

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.h:32
&gt; +/*! A class to pass configuration flags to an open panel based on options specified in the webpage.

Comment should be more like the ones on other classes in this directory. Here’s a rough cut:

    A WKUIOpenPanelParameters object is a collection of options specified in a webpage to customize an open panel.

My wording isn’t quite right either, though.

Not sure that “parameters” is the right name for this class. There aren’t any other WebKit classes that use the name parameters like this. I looked for other similar ones.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.h:37
&gt; +/*! @abstract Whether or not multiple files are allowed.
&gt; + */

Looking at other comments, it seems this one should be more like this:

/*! @abstract A Boolean value indicating whether or not the open panel should allow selection of more than one file.
*/

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.m:33
&gt; +- (void)_setAllowsMultipleFiles:(BOOL)allowsMultipleFiles {

WebKit coding style puts the brace on a separate line.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParametersPrivate.h:30
&gt; +@interface WKUIOpenPanelParameters (WKPrivate)

This should be Internal, not Private. Both the category name and the file name. Things marked Internal are for use only within the WebKit2 framework. Things marked Private are SPI, so can be used outside the framework. This is Internal.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:104
&gt; +#if PLATFORM(MAC)
&gt; +    m_delegateMethods.webViewRunOpenPanelWithResultListenerParameters = [delegate respondsToSelector:@selector(webView:runOpenPanelWithResultListener:parameters:)];
&gt; +#endif

Would be nice to put the conditional ones after the unconditional ones. I see that PLATFORM(IOS) ones are above, but I suggest putting this down at the bottom, after the ENABLE(CONTEXT_MENUS) ones.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:241
&gt; +bool UIDelegate::UIClient::runOpenPanel(WebKit::WebPageProxy *page, WebKit::WebFrameProxy *frame, WebKit::WebOpenPanelParameters *parameters, WebKit::WebOpenPanelResultListenerProxy *listener)

Formatting here is wrong for WebKit coding style (should be &quot;WebPageProxy*&quot; with the * next to the type name), and the explicit WebKit prefixes are not needed.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:247
&gt; +    // If our delegate does not support this method, invalidate the listener and return false.
&gt; +    if (!m_uiDelegate.m_delegateMethods.webViewRunOpenPanelWithResultListenerParameters) {
&gt; +        listener-&gt;invalidate();
&gt; +        return false;
&gt; +    }

In WebKit code we try to avoid writing comments that say the same thing the code does. This is an example of that anti-pattern, so please omit the comment.

You should write a comment when you need to explain *why* the code does what it does.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:254
&gt; +    NSWindow *window = [m_uiDelegate.m_webView window];
&gt; +
&gt; +    if (!window) {
&gt; +        listener-&gt;invalidate();
&gt; +        return false;
&gt; +    }

I don’t understand why this code is here. Whether to do this without a window seems like a decision for the delegate, not to be decided by WebKit. Please don’t enforce a &quot;no window, no call to delegate&quot; policy here, unless there is a compelling reason to do so.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:261
&gt; +    [delegate webView:m_uiDelegate.m_webView runOpenPanelWithResultListener:(id &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener]) parameters:(WKUIOpenPanelParameters *)delegateParameters];

This should be using &quot;adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener]).get()&quot; rather than &quot;(id &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener])&quot;. Might also want to use a local variable so this line isn’t so super-long.

This should be using &quot;delegateParameters.get()&quot; rather than &quot;(WKUIOpenPanelParameters *)delegateParameters&quot;.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h:2
&gt; + * Copyright (C) 2015 Brian Michel (brian.michel@gmail.com). All rights reserved.

2016

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h:37
&gt; +- (instancetype)initWithListenerProxy:(WebKit::WebOpenPanelResultListenerProxy *)proxy;

In WebKit coding style there should not be a space before &quot;*&quot; on this line.

I suggest naming this method initWithProxy: rather than initWithListenerProxy: because since this object is a listener, it stands to reason the proxy would be a listener proxy.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:41
&gt; +    WebOpenPanelResultListenerProxy *m_listener;

This object needs to ref the listener. Otherwise, this listener can outlive the proxy. However, using RefPtr for this would be dangerous because it will make the dealloc method call deref on whatever thread the object is released on. Instead we probably want to use callOnMainThread in the dealloc method to make sure the deref happens on the main thread.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:44
&gt; +- (instancetype)initWithListenerProxy:(WebOpenPanelResultListenerProxy *)proxy {

WebKit coding style puts the open brace on a separate line.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:53
&gt; +#pragma mark - WKOpenPanelResultListener

Not sure we really need this mark. This is a small simple class.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:55
&gt; +- (void)chooseFiles:(NSArray *)fileURLs {

To make it safe to call this on any thread, I think we need to use callOnMainThread in this method and put the actual work inside the block or lambda that we call on the main thread. We also need to capture self (and retain it here and release it in the block or lambda).

Also would be nice to make it safe to call this method multiple times. I think the way to do that would be to null out m_listener after this is called the first time, and then make sure it’s a no-op if m_listener is already null. As with the work I mentioned above and the deref in the dealloc function, the work has to be done on the main thread.

WebKit coding style puts the open brace on a separate line.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:57
&gt; +    NSUInteger count = [fileURLs count];
&gt; +    if (!count)

No reason to put this into a local variable since we only use it once. I’d write this:

    if (!fileURLs.count)

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:60
&gt; +        Vector&lt;RefPtr&lt;API::Object&gt;&gt; urls;

I personally would dodge the ugly &quot;urls&quot; name by naming the vector something else, like &quot;files&quot;.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:64
&gt; +        for (NSURL *fileURL in fileURLs)
&gt; +            urls.uncheckedAppend(adoptRef(toImpl(WKURLCreateWithCFURL((CFURLRef)fileURL))));

We should consider throwing an Objective-C exception if any of the elements in the array are not NSURL objects. That would make it easier for programmers to figure out what they did wrong than the crash they might otherwise see. Maybe not, though. Doesn’t seem like other WebKit API code is taking this approach, so I guess it’s OK to leave as is for now.

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:67
&gt; +        RefPtr&lt;API::Array&gt; fileURLsRef = API::Array::create(std::move(urls));
&gt; +        m_listener-&gt;chooseFiles(fileURLsRef.get());

No need for the local variable. In WebKit code, should use WTFMove instead of std::move, so should be:

    m_listener-&gt;chooseFiles(API::Array::create(WTFMove(urls)).get());

&gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:71
&gt; +- (void)cancel {

Same threading issues apply here as in chooseFiles: and I think we should probably make these share code. Simplest way is probably to just implement this as [self chooseFiles:@[]] unless we change the semantics of chooseFiles to make choosing zero files something distinct from cancelling. In that case I’m sure we can still find a way to share the tricky main thread code.

WebKit coding style puts the open brace on a separate line.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:1082
&gt; +		72C06CFF1C531D1A001291DE /* WKUIOpenPanelParametersPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C06CFE1C531D1A001291DE /* WKUIOpenPanelParametersPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };

We don’t want this visible outside the framework, so it should be Internal, not private. The ATTRIBUTES = (Private, ) here is wrong.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:1084
&gt; +		72FCB6B41C307C2B00E8A012 /* WKConcreteOpenPanelResultListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 72FCB6B11C307C2B00E8A012 /* WKConcreteOpenPanelResultListener.h */; settings = {ATTRIBUTES = (Private, ); }; };

We don’t want this visible outside the framework, so it should be Internal, not private. The ATTRIBUTES = (Private, ) here is wrong.

&gt; Tools/ChangeLog:15
&gt; +        * MiniBrowser/mac/WK2BrowserWindowController.m:
&gt; +        (-[WK2BrowserWindowController webView:runOpenPanelWithResultListener:parameters:]):
&gt; +        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
&gt; +        * TestWebKitAPI/Tests/WebKit2/basic-input-element.html: Added.
&gt; +        * TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm: Added.
&gt; +        (-[WKOpenPanelTestDelegate webView:runOpenPanelWithResultListener:parameters:]):
&gt; +        (-[WKOpenPanelTestDelegate webView:didFinishNavigation:]):
&gt; +        (TestWebKitAPI::TEST):

As above, a good quality change log should have comments about what each change was. Per-function comments help people understand the change. If you need an example, I suggest looking at change log entries I have written in the past to see what I am asking for.

&gt; Tools/ChangeLog:549
&gt; -        I always forgot to provide a --jsc argument), I always found it easier to 
&gt; +        I always forgot to provide a --jsc argument), I always found it easier to

As above, trimming all the trailing whitespace from the ChangeLog is not typically something we want to do; makes the patch bigger for no good reason.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:452
&gt; +    [openPanel setAllowsMultipleSelection:parameters.allowsMultipleFiles];

I would have written:

    openPanel.allowsMultipleSelection = parameters.allowsMultipleFiles;

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:26
&gt; +#include &quot;config.h&quot;

Should be #import.

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:31
&gt; +#include &lt;wtf/RetainPtr.h&gt;

Should be #import. Should be in the same paragraph with the other includes just above.

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:33
&gt; +#if WK_API_ENABLED &amp;&amp; !PLATFORM(IOS)

Should use the same #if as the code. Since the code is in PLATFORM(MAC), then this should be PLATFORM(MAC), as opposed to !PLATFORM(IOS).

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:36
&gt; +static bool doneOpening;
&gt; +static bool doneLoading;

It might be cleaner to use public fields in WKOpenPanelTestDelegate instead of globals. Then we wouldn’t have to clear them on the way out of the test. Not sure we need to do that anyway. But since it’s just a test, I think it’s OK either wya.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158149</commentid>
    <comment_count>43</comment_count>
      <attachid>269672</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-24 13:38:34 -0800</bug_when>
    <thetext>Comment on attachment 269672
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.h:34
&gt; +@interface WKUIOpenPanelParameters : NSObject

This class shouldn’t have a “UI” prefix after the “WK” prefix. In “WKUIDelegate” the “UI” is part of the name of the “UI delegate”. Here there is no reason to include “UI”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158202</commentid>
    <comment_count>44</comment_count>
    <who name="Brian Michel">brian.michel</who>
    <bug_when>2016-01-24 20:12:24 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Comment on attachment 269672 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269672&amp;action=review
&gt; 
&gt; Looks like good work. Thanks for tackling this!
&gt; 
&gt; I have many small comments, some are important, others are less important
&gt; details but still worth improving.
&gt; 
&gt; review- mainly because of the most serious problem, the lifetime mistake in
&gt; WKConcreteOpenPanelResultListener where it doesn’t ref/deref the underlying
&gt; listener proxy C++ object.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        Handle Open Panel Functions Are Unimplemented
&gt; 
&gt; We don’t capitalize every word of bug titles; even though they are “titles”,
&gt; “title case” is not called for.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:23
&gt; &gt; +        * Shared/API/Cocoa/WebKit.h:
&gt; &gt; +        * UIProcess/API/Cocoa/WKUIDelegate.h:
&gt; &gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParameters.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; &gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParameters.m: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; &gt; +        (-[WKUIOpenPanelParameters _setAllowsMultipleFiles:]):
&gt; &gt; +        * UIProcess/API/Cocoa/WKUIOpenPanelParametersPrivate.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; &gt; +        * UIProcess/Cocoa/UIDelegate.h:
&gt; &gt; +        * UIProcess/Cocoa/UIDelegate.mm:
&gt; &gt; +        (WebKit::UIDelegate::setDelegate):
&gt; &gt; +        (WebKit::UIDelegate::UIClient::runOpenPanel):
&gt; &gt; +        * UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; &gt; +        * UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m: Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h.
&gt; &gt; +        (-[WKConcreteOpenPanelResultListener initWithListenerProxy:]):
&gt; &gt; +        (-[WKConcreteOpenPanelResultListener chooseFiles:]):
&gt; &gt; +        (-[WKConcreteOpenPanelResultListener cancel]):
&gt; &gt; +        * WebKit2.xcodeproj/project.pbxproj:
&gt; 
&gt; A good quality change log should have comments about what each change was,
&gt; and should only list function names when there is a change in the function.
&gt; 
&gt; All those &quot;Copied from Source/WebKit2/Shared/API/Cocoa/WebKit.h&quot; also look
&gt; incorrect. The script generated incorrect stuff there, and you need to
&gt; replace those mistakes with a useful change log entry.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:108
&gt; &gt; -        (because createWebPage, which usually brings it up, hasn&apos;t happened yet), and we 
&gt; &gt; +        (because createWebPage, which usually brings it up, hasn&apos;t happened yet), and we
&gt; 
&gt; Trimming all the trailing whitespace from the ChangeLog is not typically
&gt; something we want to do; makes the patch bigger for no good reason.
&gt; 
&gt; I suppose we could add a pre-commit hook to prevent people from landing such
&gt; whitespace in the first place to avoid this in the future.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:39
&gt; &gt; +@class WKWebView;
&gt; &gt; +@class WKUIOpenPanelParameters;
&gt; 
&gt; We normally keep these alphabetically, so please sort these in instead  of
&gt; adding them at the bottom.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:43
&gt; &gt; +/*! A class conforming to WKOpenPanelResultListener provides methods
&gt; &gt; +for interacting with files.
&gt; &gt; +*/
&gt; 
&gt; This seems a bit vague and oblique. I looked at Apple documentation to see
&gt; how they write these and it would be something more like:
&gt; 
&gt; /*! The WKOpenPanelResultListener protocol defines the methods that a file
&gt; open panel implementation must invokes when the open interaction is complete.
&gt; */
&gt; 
&gt; One critical question is whether we have a threading rule about this class
&gt; or not. I think we would want these methods to be callable on any thread.
&gt; And we also want it to be safe to deallocate this object on any thread.
&gt; That’s tricky to get right.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:46
&gt; &gt; +/*! @abstract passes an array of file urls to the web view.
&gt; 
&gt; Should be capitalized: “Passes”.
&gt; 
&gt; “file URLs”, not “file urls”.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:47
&gt; &gt; + @param fileURLs The array of file urls to pass to the web view.
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:48
&gt; &gt; + @discussion passing nil, or an empty array will have the effect of calling the cancel selector.
&gt; 
&gt; There should not be a comma after the word &quot;nil&quot;.
&gt; 
&gt; But more importantly in a new API we should not be talking about passing
&gt; nil, since we are not marking this as a nullable argument. Callers should
&gt; pass @[] rather than nil.
&gt; 
&gt; I also don’t think the wording “will have the effect of calling the cancel
&gt; selector” is quite right. I would write something a little more like this:
&gt; 
&gt; @discussion Passing an empty array cancels the file open interaction as the
&gt; cancel method does.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:50
&gt; &gt; +- (void)chooseFiles:(NSArray *)fileURLs;
&gt; 
&gt; The type here should be NSArray&lt;NSURL *&gt; *, which will make things nicer
&gt; both for programmers using Objective-C and Swift. Not sure exactly how we
&gt; are handling using that feature in WebKit API at this time; there may be
&gt; some compatibility issue for older versions of clang. If nobody else knows,
&gt; Anders at least should know.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:139
&gt; &gt; + @param listener The listener object to be called when selection has completed
&gt; &gt; + or cancelled.
&gt; 
&gt; I’d put this all on one line. No need to wrap this. Even though some of the
&gt; comments above are wrapped like this.
&gt; 
&gt; Wording not quite right here. I don’t think we would say that &quot;selection has
&gt; completed&quot;. We don’t &quot;call&quot; an object, we invoke one of its methods. And a
&gt; selection doesn’t complete nor does it cancel. So I think better wording
&gt; would be more like:
&gt; 
&gt;     The listener object with methods to be invoked when the user makes a
&gt; selection or cancels.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:140
&gt; &gt; + @param parameters Parameters to configure the open panel with as specificed by the webpage.
&gt; 
&gt; typo: &quot;specificed&quot;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.h:32
&gt; &gt; +/*! A class to pass configuration flags to an open panel based on options specified in the webpage.
&gt; 
&gt; Comment should be more like the ones on other classes in this directory.
&gt; Here’s a rough cut:
&gt; 
&gt;     A WKUIOpenPanelParameters object is a collection of options specified in
&gt; a webpage to customize an open panel.
&gt; 
&gt; My wording isn’t quite right either, though.
&gt; 
&gt; Not sure that “parameters” is the right name for this class. There aren’t
&gt; any other WebKit classes that use the name parameters like this. I looked
&gt; for other similar ones.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.h:37
&gt; &gt; +/*! @abstract Whether or not multiple files are allowed.
&gt; &gt; + */
&gt; 
&gt; Looking at other comments, it seems this one should be more like this:
&gt; 
&gt; /*! @abstract A Boolean value indicating whether or not the open panel
&gt; should allow selection of more than one file.
&gt; */
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParameters.m:33
&gt; &gt; +- (void)_setAllowsMultipleFiles:(BOOL)allowsMultipleFiles {
&gt; 
&gt; WebKit coding style puts the brace on a separate line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIOpenPanelParametersPrivate.h:30
&gt; &gt; +@interface WKUIOpenPanelParameters (WKPrivate)
&gt; 
&gt; This should be Internal, not Private. Both the category name and the file
&gt; name. Things marked Internal are for use only within the WebKit2 framework.
&gt; Things marked Private are SPI, so can be used outside the framework. This is
&gt; Internal.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:104
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    m_delegateMethods.webViewRunOpenPanelWithResultListenerParameters = [delegate respondsToSelector:@selector(webView:runOpenPanelWithResultListener:parameters:)];
&gt; &gt; +#endif
&gt; 
&gt; Would be nice to put the conditional ones after the unconditional ones. I
&gt; see that PLATFORM(IOS) ones are above, but I suggest putting this down at
&gt; the bottom, after the ENABLE(CONTEXT_MENUS) ones.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:241
&gt; &gt; +bool UIDelegate::UIClient::runOpenPanel(WebKit::WebPageProxy *page, WebKit::WebFrameProxy *frame, WebKit::WebOpenPanelParameters *parameters, WebKit::WebOpenPanelResultListenerProxy *listener)
&gt; 
&gt; Formatting here is wrong for WebKit coding style (should be &quot;WebPageProxy*&quot;
&gt; with the * next to the type name), and the explicit WebKit prefixes are not
&gt; needed.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:247
&gt; &gt; +    // If our delegate does not support this method, invalidate the listener and return false.
&gt; &gt; +    if (!m_uiDelegate.m_delegateMethods.webViewRunOpenPanelWithResultListenerParameters) {
&gt; &gt; +        listener-&gt;invalidate();
&gt; &gt; +        return false;
&gt; &gt; +    }
&gt; 
&gt; In WebKit code we try to avoid writing comments that say the same thing the
&gt; code does. This is an example of that anti-pattern, so please omit the
&gt; comment.
&gt; 
&gt; You should write a comment when you need to explain *why* the code does what
&gt; it does.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:254
&gt; &gt; +    NSWindow *window = [m_uiDelegate.m_webView window];
&gt; &gt; +
&gt; &gt; +    if (!window) {
&gt; &gt; +        listener-&gt;invalidate();
&gt; &gt; +        return false;
&gt; &gt; +    }
&gt; 
&gt; I don’t understand why this code is here. Whether to do this without a
&gt; window seems like a decision for the delegate, not to be decided by WebKit.
&gt; Please don’t enforce a &quot;no window, no call to delegate&quot; policy here, unless
&gt; there is a compelling reason to do so.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:261
&gt; &gt; +    [delegate webView:m_uiDelegate.m_webView runOpenPanelWithResultListener:(id &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener alloc] initWithListenerProxy:listener]) parameters:(WKUIOpenPanelParameters *)delegateParameters];
&gt; 
&gt; This should be using &quot;adoptNS([[WKConcreteOpenPanelResultListener alloc]
&gt; initWithListenerProxy:listener]).get()&quot; rather than &quot;(id
&gt; &lt;WKOpenPanelResultListener&gt;)adoptNS([[WKConcreteOpenPanelResultListener
&gt; alloc] initWithListenerProxy:listener])&quot;. Might also want to use a local
&gt; variable so this line isn’t so super-long.
&gt; 
&gt; This should be using &quot;delegateParameters.get()&quot; rather than
&gt; &quot;(WKUIOpenPanelParameters *)delegateParameters&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h:2
&gt; &gt; + * Copyright (C) 2015 Brian Michel (brian.michel@gmail.com). All rights reserved.
&gt; 
&gt; 2016
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.h:37
&gt; &gt; +- (instancetype)initWithListenerProxy:(WebKit::WebOpenPanelResultListenerProxy *)proxy;
&gt; 
&gt; In WebKit coding style there should not be a space before &quot;*&quot; on this line.
&gt; 
&gt; I suggest naming this method initWithProxy: rather than
&gt; initWithListenerProxy: because since this object is a listener, it stands to
&gt; reason the proxy would be a listener proxy.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:41
&gt; &gt; +    WebOpenPanelResultListenerProxy *m_listener;
&gt; 
&gt; This object needs to ref the listener. Otherwise, this listener can outlive
&gt; the proxy. However, using RefPtr for this would be dangerous because it will
&gt; make the dealloc method call deref on whatever thread the object is released
&gt; on. Instead we probably want to use callOnMainThread in the dealloc method
&gt; to make sure the deref happens on the main thread.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:44
&gt; &gt; +- (instancetype)initWithListenerProxy:(WebOpenPanelResultListenerProxy *)proxy {
&gt; 
&gt; WebKit coding style puts the open brace on a separate line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:53
&gt; &gt; +#pragma mark - WKOpenPanelResultListener
&gt; 
&gt; Not sure we really need this mark. This is a small simple class.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:55
&gt; &gt; +- (void)chooseFiles:(NSArray *)fileURLs {
&gt; 
&gt; To make it safe to call this on any thread, I think we need to use
&gt; callOnMainThread in this method and put the actual work inside the block or
&gt; lambda that we call on the main thread. We also need to capture self (and
&gt; retain it here and release it in the block or lambda).
&gt; 
&gt; Also would be nice to make it safe to call this method multiple times. I
&gt; think the way to do that would be to null out m_listener after this is
&gt; called the first time, and then make sure it’s a no-op if m_listener is
&gt; already null. As with the work I mentioned above and the deref in the
&gt; dealloc function, the work has to be done on the main thread.
&gt; 
&gt; WebKit coding style puts the open brace on a separate line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:57
&gt; &gt; +    NSUInteger count = [fileURLs count];
&gt; &gt; +    if (!count)
&gt; 
&gt; No reason to put this into a local variable since we only use it once. I’d
&gt; write this:
&gt; 
&gt;     if (!fileURLs.count)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:60
&gt; &gt; +        Vector&lt;RefPtr&lt;API::Object&gt;&gt; urls;
&gt; 
&gt; I personally would dodge the ugly &quot;urls&quot; name by naming the vector something
&gt; else, like &quot;files&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:64
&gt; &gt; +        for (NSURL *fileURL in fileURLs)
&gt; &gt; +            urls.uncheckedAppend(adoptRef(toImpl(WKURLCreateWithCFURL((CFURLRef)fileURL))));
&gt; 
&gt; We should consider throwing an Objective-C exception if any of the elements
&gt; in the array are not NSURL objects. That would make it easier for
&gt; programmers to figure out what they did wrong than the crash they might
&gt; otherwise see. Maybe not, though. Doesn’t seem like other WebKit API code is
&gt; taking this approach, so I guess it’s OK to leave as is for now.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:67
&gt; &gt; +        RefPtr&lt;API::Array&gt; fileURLsRef = API::Array::create(std::move(urls));
&gt; &gt; +        m_listener-&gt;chooseFiles(fileURLsRef.get());
&gt; 
&gt; No need for the local variable. In WebKit code, should use WTFMove instead
&gt; of std::move, so should be:
&gt; 
&gt;     m_listener-&gt;chooseFiles(API::Array::create(WTFMove(urls)).get());
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WKConcreteOpenPanelResultListener.m:71
&gt; &gt; +- (void)cancel {
&gt; 
&gt; Same threading issues apply here as in chooseFiles: and I think we should
&gt; probably make these share code. Simplest way is probably to just implement
&gt; this as [self chooseFiles:@[]] unless we change the semantics of chooseFiles
&gt; to make choosing zero files something distinct from cancelling. In that case
&gt; I’m sure we can still find a way to share the tricky main thread code.
&gt; 
&gt; WebKit coding style puts the open brace on a separate line.
&gt; 
&gt; &gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:1082
&gt; &gt; +		72C06CFF1C531D1A001291DE /* WKUIOpenPanelParametersPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C06CFE1C531D1A001291DE /* WKUIOpenPanelParametersPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
&gt; 
&gt; We don’t want this visible outside the framework, so it should be Internal,
&gt; not private. The ATTRIBUTES = (Private, ) here is wrong.
&gt; 
&gt; &gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:1084
&gt; &gt; +		72FCB6B41C307C2B00E8A012 /* WKConcreteOpenPanelResultListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 72FCB6B11C307C2B00E8A012 /* WKConcreteOpenPanelResultListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
&gt; 
&gt; We don’t want this visible outside the framework, so it should be Internal,
&gt; not private. The ATTRIBUTES = (Private, ) here is wrong.
&gt; 
&gt; &gt; Tools/ChangeLog:15
&gt; &gt; +        * MiniBrowser/mac/WK2BrowserWindowController.m:
&gt; &gt; +        (-[WK2BrowserWindowController webView:runOpenPanelWithResultListener:parameters:]):
&gt; &gt; +        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
&gt; &gt; +        * TestWebKitAPI/Tests/WebKit2/basic-input-element.html: Added.
&gt; &gt; +        * TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm: Added.
&gt; &gt; +        (-[WKOpenPanelTestDelegate webView:runOpenPanelWithResultListener:parameters:]):
&gt; &gt; +        (-[WKOpenPanelTestDelegate webView:didFinishNavigation:]):
&gt; &gt; +        (TestWebKitAPI::TEST):
&gt; 
&gt; As above, a good quality change log should have comments about what each
&gt; change was. Per-function comments help people understand the change. If you
&gt; need an example, I suggest looking at change log entries I have written in
&gt; the past to see what I am asking for.
&gt; 
&gt; &gt; Tools/ChangeLog:549
&gt; &gt; -        I always forgot to provide a --jsc argument), I always found it easier to 
&gt; &gt; +        I always forgot to provide a --jsc argument), I always found it easier to
&gt; 
&gt; As above, trimming all the trailing whitespace from the ChangeLog is not
&gt; typically something we want to do; makes the patch bigger for no good reason.
&gt; 
&gt; &gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:452
&gt; &gt; +    [openPanel setAllowsMultipleSelection:parameters.allowsMultipleFiles];
&gt; 
&gt; I would have written:
&gt; 
&gt;     openPanel.allowsMultipleSelection = parameters.allowsMultipleFiles;
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:26
&gt; &gt; +#include &quot;config.h&quot;
&gt; 
&gt; Should be #import.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:31
&gt; &gt; +#include &lt;wtf/RetainPtr.h&gt;
&gt; 
&gt; Should be #import. Should be in the same paragraph with the other includes
&gt; just above.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:33
&gt; &gt; +#if WK_API_ENABLED &amp;&amp; !PLATFORM(IOS)
&gt; 
&gt; Should use the same #if as the code. Since the code is in PLATFORM(MAC),
&gt; then this should be PLATFORM(MAC), as opposed to !PLATFORM(IOS).
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKUIDelegateOpenPanelTest.mm:36
&gt; &gt; +static bool doneOpening;
&gt; &gt; +static bool doneLoading;
&gt; 
&gt; It might be cleaner to use public fields in WKOpenPanelTestDelegate instead
&gt; of globals. Then we wouldn’t have to clear them on the way out of the test.
&gt; Not sure we need to do that anyway. But since it’s just a test, I think it’s
&gt; OK either wya.

Darin, thank you so much for the feedback, I&apos;ll work on these changes and get them submitted by the end of the week!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183790</commentid>
    <comment_count>45</comment_count>
      <attachid>276410</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-04-14 12:22:06 -0700</bug_when>
    <thetext>Created attachment 276410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183791</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 12:24:08 -0700</bug_when>
    <thetext>Attachment 276410 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:275:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183795</commentid>
    <comment_count>47</comment_count>
      <attachid>276410</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-14 12:40:22 -0700</bug_when>
    <thetext>Comment on attachment 276410
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:31
&gt; +#include &lt;wtf/Vector.h&gt;

No reason to include this.

&gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:32
&gt; +#include &lt;wtf/text/WTFString.h&gt;

No reason to include this.

&gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:40
&gt; +    static PassRefPtr&lt;OpenPanelParameters&gt; create(const WebCore::FileChooserSettings&amp;);

How about Ref&lt;&gt; instead of PassRefPtr?

&gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:41
&gt; +    ~OpenPanelParameters();

How about not defining this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183796</commentid>
    <comment_count>48</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-04-14 12:48:02 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Comment on attachment 276410 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276410&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:31
&gt; &gt; +#include &lt;wtf/Vector.h&gt;
&gt; 
&gt; No reason to include this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:32
&gt; &gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; No reason to include this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:40
&gt; &gt; +    static PassRefPtr&lt;OpenPanelParameters&gt; create(const WebCore::FileChooserSettings&amp;);
&gt; 
&gt; How about Ref&lt;&gt; instead of PassRefPtr?

Fixed all of these.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIOpenPanelParameters.h:41
&gt; &gt; +    ~OpenPanelParameters();
&gt; 
&gt; How about not defining this?

I like putting the destructor out of line for two reasons:

1. It avoids it from getting emitted wherever it can be called (which I think is all Ref/RefPtr&lt;API::OpenPanelParameters&gt; destructors.
2. In this case it will anchor the vtable to the .cpp file to avoid it being emitted all over the place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183797</commentid>
    <comment_count>49</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-14 12:52:12 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; I like putting the destructor out of line for two reasons:
&gt; 
&gt; 1. It avoids it from getting emitted wherever it can be called (which I
&gt; think is all Ref/RefPtr&lt;API::OpenPanelParameters&gt; destructors.
&gt; 2. In this case it will anchor the vtable to the .cpp file to avoid it being
&gt; emitted all over the place.

I should keep that in mind for the future. Might even be worth making it a coding style guideline. Especially if in aggregate it actually affects things like build times or object files sizes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183857</commentid>
    <comment_count>50</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-04-14 14:21:51 -0700</bug_when>
    <thetext>Committed r199554: &lt;http://trac.webkit.org/changeset/199554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183884</commentid>
    <comment_count>51</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-04-14 14:54:07 -0700</bug_when>
    <thetext>Reverted r199554 for reason:

The change breaks Yosemite Release/Debug build

Committed r199557: &lt;http://trac.webkit.org/changeset/199557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183886</commentid>
    <comment_count>52</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-04-14 14:55:37 -0700</bug_when>
    <thetext>Here is the build log:
https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%28Build%29/builds/14297

Here is the error:
(view as text)
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:167:181: error: expected &apos;&gt;&apos;
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h:167:182: error: expected &apos;)&apos;
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:275:193: error: expected &apos;&gt;&apos;
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:275:194: error: expected &apos;)&apos;
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:278:14: error: use of undeclared identifier &apos;URLs&apos;
/Volumes/Data/slave/yosemite-release/build/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:284:28: error: use of undeclared identifier &apos;URLs&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183892</commentid>
    <comment_count>53</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-04-14 15:06:51 -0700</bug_when>
    <thetext>Committed r199558: &lt;http://trac.webkit.org/changeset/199558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183961</commentid>
    <comment_count>54</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-04-14 17:19:36 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; Committed r199558: &lt;http://trac.webkit.org/changeset/199558&gt;

- This broke all the CMake ports that were fixed in r199568
- But r199568 was not enough to fix the breakage on the GTK+ port that remains broken: https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/builds/57627/steps/compile-webkit/logs/stdio/text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184022</commentid>
    <comment_count>55</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-14 23:35:59 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (In reply to comment #53)
&gt; &gt; Committed r199558: &lt;http://trac.webkit.org/changeset/199558&gt;
&gt; 
&gt; - This broke all the CMake ports that were fixed in r199568
&gt; - But r199568 was not enough to fix the breakage on the GTK+ port that
&gt; remains broken:
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/
&gt; builds/57627/steps/compile-webkit/logs/stdio/text

GTK+ build fixed in r199577</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239909</attachid>
            <date>2014-10-15 17:50:31 -0700</date>
            <delta_ts>2014-10-15 18:03:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20141015205036.patch</filename>
            <type>text/plain</type>
            <size>4349</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEwMDRiOGQxMjA5NmRi
MDNmY2RjNGIyOWIyZDJmYzgwNjM0ZGY5MC4uNDAzYWQ5MmVhODFhNDcwZWE4ZTYxYzEwNTA2YTIx
YjQ0ODFlNTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTE1ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIFtNYWNdIEhhbmRs
ZSBPcGVuIFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlUaGUgImhhbmRsZVJ1bk9wZW5QYW5lbCIgd2FzIHVu
aW1wbGVtZW50ZWQgZm9yIHRoZSBNYWMgaW1wbGVtZW50YXRpb24KKwlvZiBQYWdlQ2xpZW50SW1w
bCB3aGljaCByZXN1bHRlZCBpbiBub3RoaW5nIGhhcHBlbmluZyBpZiBhbiBlbmQgdXNlcgorCWNs
aWNrZWQgYW4gaW5wdXQgZmllbGQgbG9jYXRlZCBpbiBhIFdLV2ViVmlldy4KKworCUkgY291bGQg
bm90IGZpbmQgYW55IGV4aXN0aW5nIHRlc3RzIGZvciBQYWdlQ2xpZW50SW1wbCBzbyBJIGRpZCBu
b3QKKwlhZGQgYW55IG5ldyB0ZXN0cyBmb3IgdGhpcyBjbGFzcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aGFuZGxlUnVu
T3BlblBhbmVsKToKKwogMjAxNC0xMC0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gIlBsdWctaW4gd2lsbCBoYW5kbGUgbG9hZCIgZXJyb3IgaXNu
J3QgZGVjbGFyZWQgaW4gdGhlIG1vZGVybiBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBhN2EyZTJmMWNlNTRjODUyODZmNmVlZDEwZTI4
ZjhmNjRjZjViNzhiLi43MjYwMTVjNWNjYTY1Njg4MzQxMjAzMDQyNGVhNjk3NzY3ZmRmMDZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC04
OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQ
cm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogCisgICAgdmly
dHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNz
UmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggZGJkODMwOTU5NzNmMWI3
MWNjOGM5NGZiYTJjZmI2ZjdjODdlMDczZC4uMTBhMGQ1Y2NkYzJlNmM0ZmMxYmZhMDY2NTgyZjg2
MTgzNDljMzg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCkBAIC00MiwxMSArNDIsMTQgQEAKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2lt
cG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tTdHJpbmdD
Ri5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDb2xvclBpY2tlck1hYy5o
IgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCAiV2ViRWRpdENv
bW1hbmRQcm94eS5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgorI2ltcG9y
dCAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUG9wdXBN
ZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbXBv
cnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKQEAgLTMwNyw2ICszMTAsNDggQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHVzZUMKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKIH0KKyAgICAKK2Jv
b2wgUGFnZUNsaWVudEltcGw6OmhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCit7CisgICAgaWYgKCFtX3drVmlldykg
eworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIAorICAgIE5TV2luZG93ICp3aW5kb3cgPSBbbV93a1ZpZXcgd2luZG93XTsK
KyAgICAKKyAgICBpZiAoIXdpbmRvdykgeworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIE5TT3BlblBhbmVsICpw
YW5lbCA9IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOworICAgIFtwYW5lbCBzZXRBbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbjpwYXJhbWV0ZXJzLT5hbGxvd011bHRpcGxlRmlsZXMoKV07CisgICAgCisg
ICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzp3aW5kb3cgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0ludGVnZXIgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKE5TRmlsZUhhbmRsaW5n
UGFuZWxDYW5jZWxCdXR0b24gPT0gcmVzdWx0KQorICAgICAgICAgICAgbGlzdGVuZXItPmNhbmNl
bCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE5TQXJyYXkgKmZpbGVVUkxzID0gW3Bh
bmVsIFVSTHNdOworICAgICAgICAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtmaWxlVVJMcyBjb3Vu
dF07CisgICAgICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5j
YW5jZWwoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiB1cmxzOworICAgICAgICAgICAgICAgIHVybHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjb3VudCk7CisgICAgICAgICAgICAgICAgZm9yIChOU1VSTCAqZmlsZVVSTCBp
biBmaWxlVVJMcykKKyAgICAgICAgICAgICAgICAgICAgdXJscy51bmNoZWNrZWRBcHBlbmQoYWRv
cHRSZWYodG9JbXBsKFdLVVJMQ3JlYXRlV2l0aENGVVJMKChDRlVSTFJlZilmaWxlVVJMKSkpKTsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gZmlsZVVSTHNSZWYgPSBBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGOjptb3ZlKHVybHMpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZVVSTHNSZWYuZ2V0KCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICB9XTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqIGRvd25sb2FkKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239911</attachid>
            <date>2014-10-15 18:03:12 -0700</date>
            <delta_ts>2014-11-09 21:28:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20141015210316.patch</filename>
            <type>text/plain</type>
            <size>4384</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEwMDRiOGQxMjA5NmRi
MDNmY2RjNGIyOWIyZDJmYzgwNjM0ZGY5MC4uZjQzNjJmYTcwNWI2MTQ2OTc0MWRlZGRhNTgwM2Mx
ODg0M2UxMjc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTE1ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIFtNYWNdIEhhbmRs
ZSBPcGVuIFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlICJoYW5kbGVSdW5PcGVuUGFuZWwi
IHdhcyB1bmltcGxlbWVudGVkIGZvciB0aGUgTWFjIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9m
IFBhZ2VDbGllbnRJbXBsIHdoaWNoIHJlc3VsdGVkIGluIG5vdGhpbmcgaGFwcGVuaW5nIGlmIGFu
IGVuZCB1c2VyCisgICAgICAgIGNsaWNrZWQgYW4gaW5wdXQgZmllbGQgbG9jYXRlZCBpbiBhIFdL
V2ViVmlldy4KKworICAgICAgICBJIGNvdWxkIG5vdCBmaW5kIGFueSBleGlzdGluZyB0ZXN0cyBm
b3IgUGFnZUNsaWVudEltcGwgc28gSSBkaWQgbm90CisgICAgICAgIGFkZCBhbnkgbmV3IHRlc3Rz
IGZvciB0aGlzIGNsYXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVSdW5PcGVuUGFuZWwpOgorCiAyMDE0LTEw
LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSAi
UGx1Zy1pbiB3aWxsIGhhbmRsZSBsb2FkIiBlcnJvciBpc24ndCBkZWNsYXJlZCBpbiB0aGUgbW9k
ZXJuIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5o
CmluZGV4IGE3YTJlMmYxY2U1NGM4NTI4NmY2ZWVkMTBlMjhmOGY2NGNmNWI3OGIuLjcyNjAxNWM1
Y2NhNjU2ODgzNDEyMDMwNDI0ZWE2OTc3NjdmZGYwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlUnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
QWxsRWRpdENvbW1hbmRzKCk7CiAgICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQppbmRleCBkYmQ4MzA5NTk3M2YxYjcxY2M4Yzk0ZmJhMmNmYjZmN2M4N2Uw
NzNkLi4xMGEwZDVjY2RjMmU2YzRmYzFiZmEwNjY1ODJmODYxODM0OWMzODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTQyLDExICs0
MiwxNCBAQAogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCisjaW1wb3J0ICJXS1VSTENG
LmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYkNvbG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0
TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCisjaW1wb3J0
ICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgogI2ltcG9y
dCAiV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5h
bC5oIgpAQCAtMzA3LDYgKzMxMCw0OCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRM
b2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQwogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQogewogfQorICAgIAorYm9vbCBQYWdlQ2xpZW50SW1wbDo6aGFu
ZGxlUnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1fd2tWaWV3KSB7CisgICAgICAgIGxpc3RlbmVyLT5p
bnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgTlNX
aW5kb3cgKndpbmRvdyA9IFttX3drVmlldyB3aW5kb3ddOworICAgIAorICAgIGlmICghd2luZG93
KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgTlNPcGVuUGFuZWwgKnBhbmVsID0gW05TT3BlblBhbmVsIG9w
ZW5QYW5lbF07CisgICAgW3BhbmVsIHNldEFsbG93c011bHRpcGxlU2VsZWN0aW9uOnBhcmFtZXRl
cnMtPmFsbG93TXVsdGlwbGVGaWxlcygpXTsKKyAgICAKKyAgICBbcGFuZWwgYmVnaW5TaGVldE1v
ZGFsRm9yV2luZG93OndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQp
CisgICAgeworICAgICAgICBpZiAoTlNGaWxlSGFuZGxpbmdQYW5lbENhbmNlbEJ1dHRvbiA9PSBy
ZXN1bHQpCisgICAgICAgICAgICBsaXN0ZW5lci0+Y2FuY2VsKCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgTlNBcnJheSAqZmlsZVVSTHMgPSBbcGFuZWwgVVJMc107CisgICAgICAgICAg
ICBOU1VJbnRlZ2VyIGNvdW50ID0gW2ZpbGVVUkxzIGNvdW50XTsKKyAgICAgICAgICAgIGlmICgh
Y291bnQpCisgICAgICAgICAgICAgICAgbGlzdGVuZXItPmNhbmNlbCgpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHVybHM7
CisgICAgICAgICAgICAgICAgdXJscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKyAg
ICAgICAgICAgICAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIGZpbGVVUkxzKQorICAgICAgICAg
ICAgICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZih0b0ltcGwoV0tVUkxDcmVh
dGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWZpbGVVUkwpKSkpOworICAgICAgICAgICAgICAgIFJlZlB0
cjxBUEk6OkFycmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUo
dXJscykpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5jaG9v
c2VGaWxlcyhmaWxlVVJMc1JlZi5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgIH1dOworICAgIAorICAgIHJldHVybiB0cnVlOworfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241272</attachid>
            <date>2014-11-09 21:28:44 -0800</date>
            <delta_ts>2014-11-09 21:37:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20141110002844.patch</filename>
            <type>text/plain</type>
            <size>19995</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEwMDRiOGQxMjA5NmRi
MDNmY2RjNGIyOWIyZDJmYzgwNjM0ZGY5MC4uYjdmZmUxNjI4NzNiM2Y5NmI0MTlhMmI3ODdkMWVk
MzQzZWJiZGVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTExLTA5ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIFtNYWNdIEhhbmRs
ZSBPcGVuIFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29u
Y3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGluaXRXaXRoTGlzdGVu
ZXJQcm94eTpdKToKKyAgICAgICAgKC1bV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
IGNob29zZUZpbGVzOl0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgY2FuY2VsXSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCiAyMDE0LTEwLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvY29hXSAiUGx1Zy1pbiB3aWxsIGhhbmRsZSBsb2FkIiBlcnJvciBpc24ndCBkZWNs
YXJlZCBpbiB0aGUgbW9kZXJuIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggNGMxOWY2YmVkYmNiN2FlYmNmMzE3YTdmMmQx
NTAyYWM3NGNiNzI1YS4uZWExNzVjNGViNzI5NTRhY2RiNmVhNTI1YTViNmU2M2VlNjkzYWMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZS5oCkBAIC0zMyw2ICszMywyNCBAQAogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFz
cyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLV2luZG93RmVhdHVyZXM7CitAY2xh
c3MgV0tXZWJWaWV3OworCisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgcHJvdmlkZXMgbWV0aG9kcyBtZXRob2RzCisgZm9yIGludGVyYWN0aW5nIHdp
dGggZmlsZXMuCisgKi8KK0Bwcm90b2NvbCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyIDxOU09i
amVjdD4KKworLyohIEBhYnN0cmFjdCBwYXNzZXMgYW4gYXJyYXkgb2YgZmlsZSB1cmxzIHRvIHRo
ZSB3ZWIgdmlldy4KKyBAcGFyYW0gZmlsZVVSTHMgVGhlIGFycmF5IG9mIGZpbGUgdXJscyB0byBw
YXNzIHRvIHRoZSB3ZWIgdmlldy4KKyBAZGlzY3Vzc2lvbiBwYXNzaW5nIG5pbCwgb3IgYW4gZW1w
dHkgYXJyYXkgd2lsbCBoYXZlIHRoZSBlZmZlY3Qgb2YgY2FsbGluZyB0aGUgY2FuY2VsIHNlbGVj
dG9yLgorICovCistICh2b2lkKWNob29zZUZpbGVzOihOU0FycmF5ICopZmlsZVVSTHM7CisKKy8q
ISBAYWJzdHJhY3QgQ2FuY2VscyBhIGZpbGUgb3BlbiBpbnRlcmFjdGlvbiBpbiBwcm9ncmVzcy4K
KyAqLworLSAodm9pZCljYW5jZWw7CisKK0BlbmQKIAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0
byB0aGUgV0tVSURlbGVnYXRlIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCiAgcHJlc2Vu
dGluZyBuYXRpdmUgVUkgb24gYmVoYWxmIG9mIGEgd2VicGFnZS4KQEAgLTEwNSw2ICsxMjMsMTgg
QEAKICAqLwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0
OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpyZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOwogCisKKy8qISBAYWJzdHJhY3QgRGlzcGxheXMgYSBmaWxlIG9wZW4gcGFu
ZWwuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBt
ZXRob2QuCisgQHBhcmFtIGxpc3RlbmVyIFRoZSBsaXN0ZW5lciBvYmplY3QgdG8gYmUgY2FsbGVk
IHdoZW4gc2VsZWN0aW9uIGhhcyBjb21wbGV0ZWQKKyBvciBjYW5jZWxsZWQuCisgQHBhcmFtIGFs
bG93c011bHRpcGxlRmlsZXMgV2hldGhlciBvciBub3QgdGhlIG9wZW4gcGFuZWwgc2hvdWxkIGFs
bG93IG11bHRpcGxlCisgc2VsZWN0aW9uLgorIAorIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRo
aXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIgc2VsZWN0
ZWQgdGhlIENhbmNlbCBidXR0b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyPilsaXN0ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93c011
bHRpcGxlRmlsZXM7CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBmM2E1NmZjNjUwNjNkNWYyMThkNGFjZjc3YmMyNWY3
MmY2MzgyZmM1Li5lMGJlZmUwNTk3MjVkNTY5YWQ1NzZhNjlkOGYwNTYyYWYzZTgzMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTcwLDcgKzcw
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlv
bnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5
PiBkZWZhdWx0QWN0aW9ucykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RI
YW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAgICAg
I2VuZGlmCi0KKyAgICAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIGJv
b2wgcnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICAgICAgVUlEZWxl
Z2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07CiAKQEAgLTkwLDYgKzkzLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgd2ViVmlld0FjdGlvbnNGb3JFbGVtZW50RGVmYXVsdEFjdGlvbnMgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA6IDE7
CiAjZW5kaWYKKyAgICAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBib29sIHdlYlZp
ZXdSdW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXJBbGxvd3NNdWx0aXBsZUZpbGVzIDogMTsK
KyNlbmRpZgogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDYwODU1M2JjNmU3Y2UxYTliNTgw
NTExZTc5ZGJlMTZlZmFiYWMzOWYuLmU3NzcxYTI1YWI0ZmU5ZTYyM2MxM2MzZGViMjg3ZmFkNzdh
Yjc2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CkBAIC0zMCwxMiArMzAsMTYgQEAKIAogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlci5oIgogI2ltcG9ydCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKKyNpbXBvcnQgIldLQ29u
Y3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tVSURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorI2ltcG9ydCAiV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogCkBAIC03MiwxMCArNzYsMTUgQEAgdm9pZCBV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhRm9y
U2VjdXJpdHlPcmlnaW5DdXJyZW50UXVvdGFUb3RhbEJ5dGVzTmVlZGVkID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlV2ViQXBwbGljYXRpb25D
YWNoZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Y3VycmVudFF1b3RhOnRvdGFsQnl0ZXNOZWVkZWQ6
ZGVjaXNpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdQcmludEZy
YW1lID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJp
bnRGcmFtZTopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q2xvc2UgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Nsb3NlOildOworCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdBY3Rpb25zRm9yRWxl
bWVudERlZmF1bHRBY3Rpb25zID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6YWN0aW9uc0ZvckVsZW1lbnQ6ZGVmYXVsdEFjdGlvbnM6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50ID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxl
VGFwQXNDbGlja0F0UG9pbnQ6KV07CiAjZW5kaWYKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5l
ckFsbG93c011bHRpcGxlRmlsZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd3NNdWx0aXBs
ZUZpbGVzOildOworI2VuZGlmCiB9CiAKIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpVSUNsaWVudChV
SURlbGVnYXRlJiB1aURlbGVnYXRlKQpAQCAtMTc1LDYgKzE4NCw0MSBAQCB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOgogICAgIH1dOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5ICpwYWdlLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkgKmZyYW1lLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRl
cnMgKnBhcmFtZXRlcnMsIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSAq
bGlzdGVuZXIpCit7CisgICAgLy8gSWYgb3VyIGRlbGVnYXRlIGRvZXMgbm90IHN1cHBvcnQgdGhp
cyBtZXRob2QsIGludmFsaWRhdGUgdGhlIGxpc3RlbmVyIGFuZCByZXR1cm4gZmFsc2UuCisgICAg
aWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdp
dGhSZXN1bHRMaXN0ZW5lckFsbG93c011bHRpcGxlRmlsZXMpIHsKKyAgICAgICAgbGlzdGVuZXIt
PmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIW1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpIHsKKyAgICAgICAgbGlzdGVuZXItPmludmFsaWRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOU1dpbmRvdyAq
d2luZG93ID0gW21fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgd2luZG93XTsKKyAgICAKKyAgICBpZiAo
IXdpbmRvdykgeworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUu
bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICAKKyAgICAvLyBJZiB3ZSBoYXZlIG5vIGRlbGVnYXRlLCBp
bnZhbGlkZSB0aGUgbGlzdGVuZXIgYW5kIHJldHVybiBmYWxzZS4KKyAgICBpZiAoIWRlbGVnYXRl
KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgWygoaWQgPFdLVUlEZWxlZ2F0ZT4pIGRlbGVnYXRlKSB3ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVy
OihpZCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pYWRvcHROUyhbW1dLQ29uY3JldGVPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lclByb3h5Omxpc3RlbmVy
XSkgYWxsb3dzTXVsdGlwbGVGaWxlczpwYXJhbWV0ZXJzLT5hbGxvd011bHRpcGxlRmlsZXMoKV07
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IFdlYlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhw
ZWN0ZWRVc2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3Rh
Q3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdlRGVjaXNp
b25IYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2IxZGY3YzQwZjlkZWFlZGU5MzgxYjYxODlmZTk4N2ViMDNiNmQzNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorI2ltcG9ydCA8V2ViS2l0L1dL
VUlEZWxlZ2F0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHk7Cit9CisKK0BpbnRlcmZhY2UgV0tDb25jcmV0ZU9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyIDogTlNPYmplY3QgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aExpc3RlbmVyUHJveHk6KFdlYktpdDo6V2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eSAqKXByb3h5OworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29u
Y3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjI1ZWFhNTFmYzZkYjlkOWEwOTgwOWE1N2QxMTdlMzkxMzc2NThlZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIubW0KQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcnJheS5oIgorI2ltcG9ydCAiQVBJ
T2JqZWN0LmgiCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIldLU2hhcmVkQVBJ
Q2FzdC5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50
YXRpb24gV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIHsKKyAgICBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5ICptX2xpc3RlbmVyOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5ICop
cHJveHkgeworICAgIEFTU0VSVF9BUkcocHJveHksIHByb3h5KTsKKyAgICBzZWxmID0gW3N1cGVy
IGluaXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBtX2xpc3RlbmVyID0gcHJveHk7CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworI3ByYWdtYSBtYXJrIC0gV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcgorCistICh2b2lkKWNob29zZUZpbGVzOihOU0FycmF5ICopZmlsZVVSTHMgeworICAgIE5T
VUludGVnZXIgY291bnQgPSBbZmlsZVVSTHMgY291bnRdOworICAgIGlmICghY291bnQpCisgICAg
ICAgIG1fbGlzdGVuZXItPmNhbmNlbCgpOworICAgIGVsc2UgeworICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKKyAgICAgICAgdXJscy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VSTCAqZmlsZVVSTCBpbiBmaWxlVVJMcykKKyAg
ICAgICAgICAgIHVybHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKHRvSW1wbChXS1VSTENyZWF0
ZVdpdGhDRlVSTCgoQ0ZVUkxSZWYpZmlsZVVSTCkpKSk7CisgICAgICAgIFJlZlB0cjxBUEk6OkFy
cmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUodXJscykpOwor
ICAgICAgICAKKyAgICAgICAgbV9saXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZVVSTHNSZWYuZ2V0
KCkpOworICAgIH0KK30KKworLSAodm9pZCljYW5jZWwgeworICAgIG1fbGlzdGVuZXItPmNhbmNl
bCgpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA1OWVhMTAx
MGQ0ZjEwYzI4YWIyMTcxZDVlZmFiM2NlYjQ1NjljYzMuLmQ2NTQ4NGU1YjAzYTY1NWMxZDdjYjJj
OWM5ZjZiMDQ5ZjY0ZjI3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1OTAsNiArMTU5MCw4IEBACiAJCUQzQjk0ODQ3MTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1
cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDgxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBv
cHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLzsg
fTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDUxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovOyB9OworCQlEM0U3Q0I2NDFB
MTAzMEJCMDBDNUM2MkYgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNFN0NCNjExQTEw
MkM2QzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSAqLzsg
fTsKKwkJRDNFN0NCNjcxQTEwM0M4NzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDNFN0NCNjAxQTEwMkM2QzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oICovOyB9OwogCQlERjU4QzYzNjEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2Vi
V2hlZWxFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERGNThDNjM1MTM3MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50TWFj
Lm1tICovOyB9OwogCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTA1RkU1MzE4
RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggKi87IH07CiAJCUUxMTVDNzE0MTkwRjg5
RTQwMEVDQzUxNiAvKiBEYXRhYmFzZVByb2Nlc3NJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFRjM5QzE5MEY3OTFDMDA3MzE2NTggLyogRGF0
YWJhc2VQcm9jZXNzSU9TLm1tICovOyB9OwpAQCAtMzY3OSw2ICszNjgxLDggQEAKIAkJRDNCOTQ4
NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkg
LyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNlYXJjaFBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEM0U3
Q0I2MDFBMTAyQzZDMDBDNUM2MkYgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29uY3JldGVPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEM0U3Q0I2MTFB
MTAyQzZDMDBDNUM2MkYgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjMx
MTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzUxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVs
RXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXRp
dmVXZWJXaGVlbEV2ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTA1
RkU1MzE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDYwOSw2ICs0NjEzLDggQEAKIAkJCQk1MTdERDVCQjE4MERBN0M0MDA4MTY2MEIgLyog
RGF0YWJhc2VzICovLAogCQkJCTFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRl
LmggKi8sCiAJCQkJMUFGRTQzNjMxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi8s
CisJCQkJRDNFN0NCNjAxQTEwMkM2QzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5oICovLAorCQkJCUQzRTdDQjYxMUExMDJDNkMwMEM1QzYyRiAvKiBXS0NvbmNy
ZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi8sCiAJCQkJMUFEMDFCQ0IxOTA1RDU0OTAw
QzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLmggKi8sCiAJCQkJ
MUFEMDFCQ0ExOTA1RDU0OTAwQzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyLm1tICovLAogCQkJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXIuaCAqLywKQEAgLTcxNzgsNiArNzE4NCw3IEBACiAJCQkJNTEyOTM1RTQx
Mjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0RTEwQTEyMEI5
MDVFMDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRDNFN0NCNjcxQTEwM0M4NzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTUxODRENUZEQTAwNEIz
NDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NUM2NkExMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzZBOTExRTNCQTVGMDA4MTJGQjcgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTg5MjgsNiAr
ODkzNSw3IEBACiAJCQkJMkQ0MjlCRkQxNzIxRTJDNzAwRUM2ODFGIC8qIFBERlBsdWdpblBhc3N3
b3JkRmllbGQubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcg
LyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0M0M0FC
QTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUQzRTdDQjY0MUExMDMwQkIwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQjdEMjExRTY1MUUyMDBE
QjEzNzEgLyogUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTY3RTBDMTY1QjJBOTkw
MDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQThFRjRDQzEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDQyZjc3YzUzNzczZjQ1OTM2NjdlOWZlYjRiZWQwOWUyOGMxNWQwMTYuLjU3Nzg0
MmJlNGQ1NGEyMGU0NjQyNzZlZjFmZjU4ZmNiYmZkMDFjNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0xMS0w
OSAgQnJpYW4gTWljaGVsICA8YnJpYW4ubWljaGVsQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5k
bGUgT3BlbiBQYW5lbCBGdW5jdGlvbnMgQXJlIFVuaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzc1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93c011bHRp
cGxlRmlsZXM6XSk6CisKIDIwMTQtMTAtMTUgIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxzZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAtLWpzb24gZmxhZyB0byB0ZXN0LXdlYmtpdHB5IHRv
IGVtaXQgSlNPTiBmb3JtYXR0ZWQgdGVzdCByZXN1bHRzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDQxZTU3N2M5MTQ4ZTIz
NzE2OWMyMThhYjNkOWJjZTUyMTRkMzExZGUuLjllMTNlYjAyZDAyZTNhZGI1MGYyMGYzYWIwMzQ5
MDE0ZDZlYzFkNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCkBAIC0zNjgsNiArMzY4LDIyIEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OihOU1N0CiAjZW5kaWYKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcj4pbGlzdGVuZXIgYWxsb3dzTXVsdGlwbGVGaWxlczooQk9PTClhbGxvd3NNdWx0aXBsZUZp
bGVzCit7CisgICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9IFtOU09wZW5QYW5lbCBvcGVuUGFu
ZWxdOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dzTXVsdGlwbGVTZWxlY3Rpb246YWxsb3dzTXVs
dGlwbGVGaWxlc107CisgICAgCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCisgICAgW29wZW5QYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5k
b3cgY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSBOU01vZGFsUmVzcG9uc2VPSykKKyAgICAgICAgICAgIFtsaXN0ZW5lciBj
aG9vc2VGaWxlczpvcGVuUGFuZWwuVVJMc107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFts
aXN0ZW5lciBjYW5jZWxdOworICAgIH1dOworI2VuZGlmCit9CisKIC0gKHZvaWQpdXBkYXRlVGV4
dEZpZWxkRnJvbVVSTDooTlNVUkwgKilVUkwKIHsKICAgICBpZiAoIVVSTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241273</attachid>
            <date>2014-11-09 21:37:10 -0800</date>
            <delta_ts>2015-12-27 13:23:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20141110003710.patch</filename>
            <type>text/plain</type>
            <size>19999</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEwMDRiOGQxMjA5NmRi
MDNmY2RjNGIyOWIyZDJmYzgwNjM0ZGY5MC4uYjdmZmUxNjI4NzNiM2Y5NmI0MTlhMmI3ODdkMWVk
MzQzZWJiZGVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTExLTA5ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIFtNYWNdIEhhbmRs
ZSBPcGVuIFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29u
Y3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGluaXRXaXRoTGlzdGVu
ZXJQcm94eTpdKToKKyAgICAgICAgKC1bV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
IGNob29zZUZpbGVzOl0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgY2FuY2VsXSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCiAyMDE0LTEwLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvY29hXSAiUGx1Zy1pbiB3aWxsIGhhbmRsZSBsb2FkIiBlcnJvciBpc24ndCBkZWNs
YXJlZCBpbiB0aGUgbW9kZXJuIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggNGMxOWY2YmVkYmNiN2FlYmNmMzE3YTdmMmQx
NTAyYWM3NGNiNzI1YS4uZWExNzVjNGViNzI5NTRhY2RiNmVhNTI1YTViNmU2M2VlNjkzYWMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZS5oCkBAIC0zMyw2ICszMywyNCBAQAogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFz
cyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLV2luZG93RmVhdHVyZXM7CitAY2xh
c3MgV0tXZWJWaWV3OworCisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgcHJvdmlkZXMgbWV0aG9kcyBtZXRob2RzCisgZm9yIGludGVyYWN0aW5nIHdp
dGggZmlsZXMuCisgKi8KK0Bwcm90b2NvbCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyIDxOU09i
amVjdD4KKworLyohIEBhYnN0cmFjdCBwYXNzZXMgYW4gYXJyYXkgb2YgZmlsZSB1cmxzIHRvIHRo
ZSB3ZWIgdmlldy4KKyBAcGFyYW0gZmlsZVVSTHMgVGhlIGFycmF5IG9mIGZpbGUgdXJscyB0byBw
YXNzIHRvIHRoZSB3ZWIgdmlldy4KKyBAZGlzY3Vzc2lvbiBwYXNzaW5nIG5pbCwgb3IgYW4gZW1w
dHkgYXJyYXkgd2lsbCBoYXZlIHRoZSBlZmZlY3Qgb2YgY2FsbGluZyB0aGUgY2FuY2VsIHNlbGVj
dG9yLgorICovCistICh2b2lkKWNob29zZUZpbGVzOihOU0FycmF5ICopZmlsZVVSTHM7CisKKy8q
ISBAYWJzdHJhY3QgQ2FuY2VscyBhIGZpbGUgb3BlbiBpbnRlcmFjdGlvbiBpbiBwcm9ncmVzcy4K
KyAqLworLSAodm9pZCljYW5jZWw7CisKK0BlbmQKIAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0
byB0aGUgV0tVSURlbGVnYXRlIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCiAgcHJlc2Vu
dGluZyBuYXRpdmUgVUkgb24gYmVoYWxmIG9mIGEgd2VicGFnZS4KQEAgLTEwNSw2ICsxMjMsMTgg
QEAKICAqLwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0
OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpyZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOwogCisKKy8qISBAYWJzdHJhY3QgRGlzcGxheXMgYSBmaWxlIG9wZW4gcGFu
ZWwuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBt
ZXRob2QuCisgQHBhcmFtIGxpc3RlbmVyIFRoZSBsaXN0ZW5lciBvYmplY3QgdG8gYmUgY2FsbGVk
IHdoZW4gc2VsZWN0aW9uIGhhcyBjb21wbGV0ZWQKKyBvciBjYW5jZWxsZWQuCisgQHBhcmFtIGFs
bG93c011bHRpcGxlRmlsZXMgV2hldGhlciBvciBub3QgdGhlIG9wZW4gcGFuZWwgc2hvdWxkIGFs
bG93IG11bHRpcGxlCisgc2VsZWN0aW9uLgorIAorIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRo
aXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIgc2VsZWN0
ZWQgdGhlIENhbmNlbCBidXR0b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyPilsaXN0ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93c011
bHRpcGxlRmlsZXM7CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBmM2E1NmZjNjUwNjNkNWYyMThkNGFjZjc3YmMyNWY3
MmY2MzgyZmM1Li4yNGEzZTIwZTc5NThkYjkxMDExNjIxZWVhNTgxNTkzNGQxOTFlZTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTcwLDcgKzcw
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlv
bnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5
PiBkZWZhdWx0QWN0aW9ucykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RI
YW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAgICAg
I2VuZGlmCi0KKyAgICAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIGJv
b2wgcnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICAgICAgVUlEZWxl
Z2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07CiAKQEAgLTkwLDYgKzkzLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgd2ViVmlld0FjdGlvbnNGb3JFbGVtZW50RGVmYXVsdEFjdGlvbnMgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA6IDE7
CiAjZW5kaWYKKyAgICAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB1bnNpZ25lZCB3
ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyQWxsb3dzTXVsdGlwbGVGaWxlcyA6
IDE7CisjZW5kaWYKICAgICB9IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCA2MDg1NTNiYzZlN2NlMWE5
YjU4MDUxMWU3OWRiZTE2ZWZhYmFjMzlmLi5lNzc3MWEyNWFiNGZlOWU2MjNjMTNjM2RlYjI4N2Zh
ZDc3YWI3NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtMzAsMTIgKzMwLDE2IEBACiAKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCisjaW1wb3J0ICJX
S0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZv
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBvcnQg
IldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIApAQCAtNzIsMTAgKzc2LDE1IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90
YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhVG90YWxCeXRlc05lZWRlZCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVdlYkFwcGxpY2F0
aW9uQ2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTp0b3RhbEJ5dGVzTmVl
ZGVkOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UHJp
bnRGcmFtZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnByaW50RnJhbWU6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Nsb3NlID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdDbG9zZTopXTsKKwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QWN0aW9uc0Zv
ckVsZW1lbnREZWZhdWx0QWN0aW9ucyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmFjdGlvbnNGb3JFbGVtZW50OmRlZmF1bHRBY3Rpb25zOildOwogICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhh
bmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogI2VuZGlmCisgICAgCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlz
dGVuZXJBbGxvd3NNdWx0aXBsZUZpbGVzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dzTXVs
dGlwbGVGaWxlczopXTsKKyNlbmRpZgogfQogCiBVSURlbGVnYXRlOjpVSUNsaWVudDo6VUlDbGll
bnQoVUlEZWxlZ2F0ZSYgdWlEZWxlZ2F0ZSkKQEAgLTE3NSw2ICsxODQsNDEgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjoKICAgICB9XTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK2Jvb2wgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSAqcGFn
ZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5ICpmcmFtZSwgV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzICpwYXJhbWV0ZXJzLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkgKmxpc3RlbmVyKQoreworICAgIC8vIElmIG91ciBkZWxlZ2F0ZSBkb2VzIG5vdCBzdXBwb3J0
IHRoaXMgbWV0aG9kLCBpbnZhbGlkYXRlIHRoZSBsaXN0ZW5lciBhbmQgcmV0dXJuIGZhbHNlLgor
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFu
ZWxXaXRoUmVzdWx0TGlzdGVuZXJBbGxvd3NNdWx0aXBsZUZpbGVzKSB7CisgICAgICAgIGxpc3Rl
bmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFtX3VpRGVsZWdhdGUubV93ZWJWaWV3KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZh
bGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgTlNXaW5k
b3cgKndpbmRvdyA9IFttX3VpRGVsZWdhdGUubV93ZWJWaWV3IHdpbmRvd107CisgICAgCisgICAg
aWYgKCF3aW5kb3cpIHsKKyAgICAgICAgbGlzdGVuZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVn
YXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgCisgICAgLy8gSWYgd2UgaGF2ZSBubyBkZWxlZ2F0
ZSwgaW52YWxpZGUgdGhlIGxpc3RlbmVyIGFuZCByZXR1cm4gZmFsc2UuCisgICAgaWYgKCFkZWxl
Z2F0ZSkgeworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIFsoKGlkIDxXS1VJRGVsZWdhdGU+KSBkZWxlZ2F0ZSkg
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0
ZW5lcjooaWQgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KWFkb3B0TlMoW1tXS0NvbmNyZXRl
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVuZXJQcm94eTpsaXN0
ZW5lcl0pIGFsbG93c011bHRpcGxlRmlsZXM6cGFyYW1ldGVycy0+YWxsb3dNdWx0aXBsZUZpbGVz
KCldOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqLCBXZWJTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdURjo6U3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5V
c2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGV4cGVjdGVkVXNhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4g
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRR
dW90YUN1cnJlbnRPcmlnaW5Vc2FnZUN1cnJlbnREYXRhYmFzZVVzYWdlRXhwZWN0ZWRVc2FnZURl
Y2lzaW9uSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdiMWRmN2M0MGY5ZGVhZWRlOTM4MWI2MTg5ZmU5ODdlYjAzYjZkMzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIldLRm91bmRhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpbXBvcnQgPFdlYktp
dC9XS1VJRGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5OworfQorCitAaW50ZXJmYWNlIFdLQ29uY3JldGVPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lciA6IE5TT2JqZWN0IDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPgor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJLaXQ6OldlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKilwcm94eTsKKworQGVuZAorCisjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
S0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyNWVhYTUxZmM2ZGI5ZDlhMDk4MDlhNTdkMTE3ZTM5MTM3NjU4ZWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJQXJyYXkuaCIKKyNpbXBvcnQg
IkFQSU9iamVjdC5oIgorI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisjaW1wb3J0ICJXS1NoYXJl
ZEFQSUNhc3QuaCIKKyNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxl
bWVudGF0aW9uIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciB7CisgICAgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSAqbV9saXN0ZW5lcjsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoTGlzdGVuZXJQcm94eTooV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eSAqKXByb3h5IHsKKyAgICBBU1NFUlRfQVJHKHByb3h5LCBwcm94eSk7CisgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgbV9saXN0ZW5lciA9IHByb3h5Owor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIKKworLSAodm9pZCljaG9vc2VGaWxlczooTlNBcnJheSAqKWZpbGVVUkxzIHsKKyAg
ICBOU1VJbnRlZ2VyIGNvdW50ID0gW2ZpbGVVUkxzIGNvdW50XTsKKyAgICBpZiAoIWNvdW50KQor
ICAgICAgICBtX2xpc3RlbmVyLT5jYW5jZWwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHVybHM7CisgICAgICAgIHVybHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjb3VudCk7CisgICAgICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gZmlsZVVSTHMp
CisgICAgICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZih0b0ltcGwoV0tVUkxD
cmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWZpbGVVUkwpKSkpOworICAgICAgICBSZWZQdHI8QVBJ
OjpBcnJheT4gZmlsZVVSTHNSZWYgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHVybHMp
KTsKKyAgICAgICAgCisgICAgICAgIG1fbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVVUkxzUmVm
LmdldCgpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpY2FuY2VsIHsKKyAgICBtX2xpc3RlbmVyLT5j
YW5jZWwoKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNTll
YTEwMTBkNGYxMGMyOGFiMjE3MWQ1ZWZhYjNjZWI0NTY5Y2MzLi5kNjU0ODRlNWIwM2E2NTVjMWQ3
Y2IyYzljOWY2YjA0OWY2NGYyN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTkwLDYgKzE1OTAsOCBAQAogCQlEM0I5NDg0
NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
UG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAg
Ki87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1
MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsKKwkJRDNFN0NC
NjQxQTEwMzBCQjAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzRTdDQjYx
MUExMDJDNkMwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0g
Ki87IH07CisJCUQzRTdDQjY3MUExMDNDODcwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQzRTdDQjYwMUExMDJDNkMwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJREY1OEM2MzYxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2
ZVdlYldoZWVsRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERjU4QzYzNTEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSAqLzsgfTsKIAkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5n
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNUZF
NTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovOyB9OwogCQlFMTE1QzcxNDE5
MEY4OUU0MDBFQ0M1MTYgLyogRGF0YWJhc2VQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRUYzOUMxOTBGNzkxQzAwNzMxNjU4IC8q
IERhdGFiYXNlUHJvY2Vzc0lPUy5tbSAqLzsgfTsKQEAgLTM2NzksNiArMzY4MSw4IEBACiAJCUQz
Qjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDUxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDNFN0NCNjAxQTEwMkM2QzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDNFN0NC
NjExQTEwMkM2QzAwQzVDNjJGIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4
QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjM1MTM3MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJX
aGVlbEV2ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TmF0aXZlV2ViV2hlZWxFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTEwNUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ2MDksNiArNDYxMyw4IEBACiAJCQkJNTE3REQ1QkIxODBEQTdDNDAwODE2NjBC
IC8qIERhdGFiYXNlcyAqLywKIAkJCQkxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxl
Z2F0ZS5oICovLAogCQkJCTFBRkU0MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1t
ICovLAorCQkJCUQzRTdDQjYwMUExMDJDNkMwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQlEM0U3Q0I2MTFBMTAyQzZDMDBDNUM2MkYgLyogV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovLAogCQkJCTFBRDAxQkNCMTkwNUQ1
NDkwMEM5QzQ1RiAvKiBXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5oICovLAog
CQkJCTFBRDAxQkNBMTkwNUQ1NDkwMEM5QzQ1RiAvKiBXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVy
eUF0dGVtcHRlci5tbSAqLywKIAkJCQkyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyogV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyLmggKi8sCkBAIC03MTc4LDYgKzcxODQsNyBAQAogCQkJCTUxMjkz
NUU0MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNEUxMEEx
MjBCOTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUQzRTdDQjY3MUExMDNDODcwMEM1QzYyRiAvKiBXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEw
MDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM2QTkxMUUzQkE1RjAwODEyRkI3IC8q
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTI4
LDYgKzg5MzUsNyBAQAogCQkJCTJENDI5QkZEMTcyMUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5Q
YXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyQURGMDkxNjM2MkRENTAwMTk3
RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkND
NDNBQkExMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlEM0U3Q0I2NDFBMTAzMEJCMDBDNUM2MkYgLyogV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkI3RDIxMUU2NTFF
MjAwREIxMzcxIC8qIFBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUE2N0UwQzE2NUIy
QTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE4RUY0Q0MxMjUyNDAzNzAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA0MmY3N2M1Mzc3M2Y0NTkzNjY3ZTlmZWI0YmVkMDllMjhjMTVkMDE2Li41
Nzc4NDJiZTRkNTRhMjBlNDY0Mjc2ZWYxZmY1OGZjYmJmZDAxYzRjIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQt
MTEtMDkgIEJyaWFuIE1pY2hlbCAgPGJyaWFuLm1pY2hlbEBnbWFpbC5jb20+CisKKyAgICAgICAg
SGFuZGxlIE9wZW4gUGFuZWwgRnVuY3Rpb25zIEFyZSBVbmltcGxlbWVudGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9X
SzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93
Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd3NN
dWx0aXBsZUZpbGVzOl0pOgorCiAyMDE0LTEwLTE1ICBKYWtlIE5pZWxzZW4gIDxqYWNvYl9uaWVs
c2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgLS1qc29uIGZsYWcgdG8gdGVzdC13ZWJraXRw
eSB0byBlbWl0IEpTT04gZm9ybWF0dGVkIHRlc3QgcmVzdWx0cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA0MWU1NzdjOTE0
OGUyMzcxNjljMjE4YWIzZDliY2U1MjE0ZDMxMWRlLi45ZTEzZWIwMmQwMmUzYWRiNTBmMjBmM2Fi
MDM0OTAxNGQ2ZWMxZDQyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMzY4LDYgKzM2OCwyMiBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFBy
b21wdDooTlNTdAogI2VuZGlmCiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXI+KWxpc3RlbmVyIGFsbG93c011bHRpcGxlRmlsZXM6KEJPT0wpYWxsb3dzTXVsdGlw
bGVGaWxlcworeworICAgIE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3Bl
blBhbmVsXTsKKyAgICBbb3BlblBhbmVsIHNldEFsbG93c011bHRpcGxlU2VsZWN0aW9uOmFsbG93
c011bHRpcGxlRmlsZXNdOworICAgIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorICAgIFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYu
d2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3BvbnNlT0spCisgICAgICAgICAgICBbbGlzdGVu
ZXIgY2hvb3NlRmlsZXM6b3BlblBhbmVsLlVSTHNdOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBbbGlzdGVuZXIgY2FuY2VsXTsKKyAgICB9XTsKKyNlbmRpZgorfQorCiAtICh2b2lkKXVwZGF0
ZVRleHRGaWVsZEZyb21VUkw6KE5TVVJMICopVVJMCiB7CiAgICAgaWYgKCFVUkwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267946</attachid>
            <date>2015-12-27 13:23:50 -0800</date>
            <delta_ts>2015-12-27 21:42:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20151227162314.patch</filename>
            <type>text/plain</type>
            <size>19549</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1NGE0MGUyMjgwNTUy
YjY3ZjFmZjRhNDU0Mjc0N2VhYjFiNzEzYi4uODhlMTBiM2RjNTJlOTlhMTdlYWQ5MTk2YzhlZjEw
NzBhOTRhNWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEyLTI3ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBPcGVu
IFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm06IEFkZGVkLgorICAgICAgICAo
LVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgaW5pdFdpdGhMaXN0ZW5lclByb3h5
Ol0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3Nl
RmlsZXM6XSk6CisgICAgICAgICgtW1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBj
YW5jZWxdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTUtMTItMjYgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtXSzJdW0VGTF0gVXNlIGVpbmFfZmlsZV9wYXRoX2pvaW4gYXQgcGxhdGZvcm1EZWZh
dWx0SWNvbkRhdGFiYXNlUGF0aCBpbiBXZWJQcm9jZXNzUG9vbEVmbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggZDUyM2UzYzFk
NDViM2YwNTIzZWM2NDA2Mzc4ODY5NTAzOTYxNDYxNC4uYzdiOWY4MjY0MmYyMGYyMjRjNzM4YjA5
Zjg1ZTNmYzMwZWQxMGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZS5oCkBAIC0zNSw2ICszNSwyNCBAQCBXS19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uOwogQGNsYXNzIFdLV2luZG93RmVhdHVyZXM7CitAY2xhc3MgV0tXZWJWaWV3Owor
CisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgcHJv
dmlkZXMgbWV0aG9kcyBtZXRob2RzCitmb3IgaW50ZXJhY3Rpbmcgd2l0aCBmaWxlcy4KKyovCitA
cHJvdG9jb2wgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA8TlNPYmplY3Q+CisKKy8qISBAYWJz
dHJhY3QgcGFzc2VzIGFuIGFycmF5IG9mIGZpbGUgdXJscyB0byB0aGUgd2ViIHZpZXcuCisgQHBh
cmFtIGZpbGVVUkxzIFRoZSBhcnJheSBvZiBmaWxlIHVybHMgdG8gcGFzcyB0byB0aGUgd2ViIHZp
ZXcuCisgQGRpc2N1c3Npb24gcGFzc2luZyBuaWwsIG9yIGFuIGVtcHR5IGFycmF5IHdpbGwgaGF2
ZSB0aGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhlIGNhbmNlbCBzZWxlY3Rvci4KKyAqLworLSAodm9p
ZCljaG9vc2VGaWxlczooTlNBcnJheSAqKWZpbGVVUkxzOworCisvKiEgQGFic3RyYWN0IENhbmNl
bHMgYSBmaWxlIG9wZW4gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MuCisgKi8KKy0gKHZvaWQpY2Fu
Y2VsOworCitAZW5kCiAKIC8qISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gdGhlIFdLVUlEZWxlZ2F0
ZSBwcm90b2NvbCBwcm92aWRlcyBtZXRob2RzIGZvcgogIHByZXNlbnRpbmcgbmF0aXZlIFVJIG9u
IGJlaGFsZiBvZiBhIHdlYnBhZ2UuCkBAIC0xMTQsNiArMTMyLDE3IEBAIFdLX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZh
dWx0VGV4dDooV0tfTlVMTEFCTEUgTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqIFdLX05VTExBQkxFX1NQRUNJRklFUiByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwog
CisvKiEgQGFic3RyYWN0IERpc3BsYXlzIGEgZmlsZSBvcGVuIHBhbmVsLgorIEBwYXJhbSB3ZWJW
aWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgorIEBwYXJhbSBs
aXN0ZW5lciBUaGUgbGlzdGVuZXIgb2JqZWN0IHRvIGJlIGNhbGxlZCB3aGVuIHNlbGVjdGlvbiBo
YXMgY29tcGxldGVkCisgb3IgY2FuY2VsbGVkLgorIEBwYXJhbSBhbGxvd3NNdWx0aXBsZUZpbGVz
IFdoZXRoZXIgb3Igbm90IHRoZSBvcGVuIHBhbmVsIHNob3VsZCBhbGxvdyBtdWx0aXBsZQorIHNl
bGVjdGlvbi4KKworIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2Vi
IHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIgc2VsZWN0ZWQgdGhlIENhbmNlbCBidXR0
b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilsaXN0
ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93c011bHRpcGxlRmlsZXM7CisKIEBl
bmQKIAogV0tfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAppbmRleCA3NDk2ZmZiNWYwNDk5NzkyNjQzNzMwMzc3NDU5N2UwNzk2
ZjYwZWRjLi4xOWNlMjZiNDQzODIxMmEyMzc2MmQzMmYzYzZjNDQxMDVjOWViMTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTk2LDYgKzk2LDEw
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIGltYWdlT3JNZWRpYURv
Y3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCisj
aWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
Kikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7
CiAgICAgfTsKIApAQCAtMTIyLDYgKzEyNiwxMCBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdl
YlZpZXdBY3Rpb25zRm9yRWxlbWVudERlZmF1bHRBY3Rpb25zIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRM
aXN0ZW5lckFsbG93c011bHRpcGxlRmlsZXMgOiAxOworI2VuZGlmCiAgICAgICAgIGJvb2wgd2Vi
Vmlld0ltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgOiAxOwogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCmluZGV4IGYzODJjNDgyM2FjNjRhYzlkNzgwYjcyMzc4MzUzNTBlNTViODM1NjAuLmM1Zjdj
MzgwNTEwMGRkOTg2ZjZjZDc3NjA4ZWZlYTQwMDY1N2EwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25B
Y3Rpb25EYXRhLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlv
bkFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIK
QEAgLTM3LDYgKzM4LDkgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKKyNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFBhcmFtZXRl
cnMuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbXBv
cnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxl
SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC05
Myw2ICs5NywxMSBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdh
dGU+IGRlbGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdBY3Rpb25zRm9yRWxl
bWVudERlZmF1bHRBY3Rpb25zID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6YWN0aW9uc0ZvckVsZW1lbnQ6ZGVmYXVsdEFjdGlvbnM6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50ID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxl
VGFwQXNDbGlja0F0UG9pbnQ6KV07CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyQWxs
b3dzTXVsdGlwbGVGaWxlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93c011bHRpcGxlRmls
ZXM6KV07CisjZW5kaWYKKwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdJbWFnZU9yTWVk
aWFEb2N1bWVudFNpemVDaGFuZ2VkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDopXTsKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjI3LDYgKzIzNiw0MCBAQCB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOgogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9XTsKIH0KKyNpZiBQTEFURk9STShNQUMpCitib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkgKnBhZ2UsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSAqZnJhbWUsIFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyAqcGFyYW1ldGVy
cywgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5ICpsaXN0ZW5lcikKK3sK
KyAgICAvLyBJZiBvdXIgZGVsZWdhdGUgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG1ldGhvZCwgaW52
YWxpZGF0ZSB0aGUgbGlzdGVuZXIgYW5kIHJldHVybiBmYWxzZS4KKyAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3Rl
bmVyQWxsb3dzTXVsdGlwbGVGaWxlcykgeworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX3VpRGVsZWdhdGUu
bV93ZWJWaWV3KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW21fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgd2luZG93XTsKKworICAgIGlmICghd2luZG93KSB7CisgICAgICAgIGxpc3Rl
bmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBh
dXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisKKyAgICAvLyBJ
ZiB3ZSBoYXZlIG5vIGRlbGVnYXRlLCBpbnZhbGlkZSB0aGUgbGlzdGVuZXIgYW5kIHJldHVybiBm
YWxzZS4KKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBbKChpZCA8V0tVSURlbGVn
YXRlPikgZGVsZWdhdGUpIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilhZG9w
dE5TKFtbV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aExp
c3RlbmVyUHJveHk6bGlzdGVuZXJdKSBhbGxvd3NNdWx0aXBsZUZpbGVzOnBhcmFtZXRlcnMtPmFs
bG93TXVsdGlwbGVGaWxlcygpXTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCiAKIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwg
dW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAodW5z
aWduZWQgbG9uZyBsb25nKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZiYzdjOTU0N2QyYjU0ZjQ1NjQzMzRiOWMy
YTJhMGFjOTVhMjE4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWljaGVs
QGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldL
Rm91bmRhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5OworfQorCitAaW50ZXJmYWNlIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA6IE5TT2JqZWN0IDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPgorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJLaXQ6OldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkgKilwcm94eTsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0NvbmNy
ZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZm
MzNkYTQ4ZjRmZDQyNTQ5MWQ0YmExMDE5MjI0MGE2YzgzYzM2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5tCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJp
YW4gTWljaGVsIChicmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQ
SUFycmF5LmgiCisjaW1wb3J0ICJBUElPYmplY3QuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5o
IgorI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCisjaW1wb3J0ICJXS1VSTENGLmgiCisjaW1w
b3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgeworICAgIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKm1fbGlzdGVuZXI7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aExpc3RlbmVyUHJveHk6KFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkgKilwcm94eSB7CisgICAgQVNTRVJUX0FSRyhwcm94eSwgcHJv
eHkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIG1f
bGlzdGVuZXIgPSBwcm94eTsKKworICAgIHJldHVybiBzZWxmOworfQorCisjcHJhZ21hIG1hcmsg
LSBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyCisKKy0gKHZvaWQpY2hvb3NlRmlsZXM6KE5TQXJy
YXkgKilmaWxlVVJMcyB7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFtmaWxlVVJMcyBjb3VudF07
CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgbV9saXN0ZW5lci0+Y2FuY2VsKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOworICAgICAgICB1
cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoTlNVUkwg
KmZpbGVVUkwgaW4gZmlsZVVSTHMpCisgICAgICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChh
ZG9wdFJlZih0b0ltcGwoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWZpbGVVUkwpKSkp
OworCisgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJyYXk6
OmNyZWF0ZShXVEY6Om1vdmUodXJscykpOworICAgICAgICBtX2xpc3RlbmVyLT5jaG9vc2VGaWxl
cyhmaWxlVVJMc1JlZi5nZXQoKSk7CisgICAgfQorfQorCistICh2b2lkKWNhbmNlbCB7CisgICAg
bV9saXN0ZW5lci0+Y2FuY2VsKCk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTdjZmIyNTk0NzViNmJkNDc3OWFkMmIwYTdlYjUzNWQ1ZTQxYzgwOC4uODgyNDEy
YjBhMzFmMWRhMzQ2YWExMTcyMmUxNDc0MDUzNmM5Njc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3Niw2ICsxMDc2LDgg
QEAKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFODQ5QzYx
MzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOEU4NkYxMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLzsgfTsK
KwkJNzJGQ0I2QjQxQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJGQ0I2QjExQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyRkNCNkI2MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
RkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIubSAqLzsgfTsKIAkJNzUzRTNFMEQxODg3Mzk4NTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0Uz
RTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgKi87IH07CiAJCTc1M0Uz
RTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUzRTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8q
IFNlc3Npb25UcmFja2VyLmggKi87IH07CiAJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBX
S1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0zMjYx
LDYgKzMyNjMsOCBAQAogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyRkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXNzaW9uVHJhY2tlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRy
YWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vzc2lvblRy
YWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlG
MDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDkzNCw2ICs0OTM4LDggQEAKIAkJCQkyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyog
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNC
QUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8sCiAJCQkJMkRDNkQ5
QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1t
ICovLAorCQkJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQk3MkZDQjZCMjFDMzA3QzJCMDBFOEEwMTIgLyogV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENv
Y29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgxNzYsNiArODE4Miw3IEBACiAJ
CQkJQkM3MDQzQ0MxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNzI4REUxQjFCQUQzODAwMTAyRUVFIC8qIFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEJFRkUxMTIw
QTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyRkNCNkI0MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc0NTBDMTI2M0IxNTUwMDZGMEYxMiAvKiBX
S0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNTI4MTEx
Qzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Y0
N0ZGNzE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTk4NDMsNiArOTg1MCw3IEBACiAJCQkJMkRBOTQ0QkExODg0RUEzQzAwRUQ4NkRCIC8q
IFdlYlBhZ2VJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzk2M0Q2RTExM0REMUE1MDA1NzRC
RTIgLyogV2ViUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwQ0U3MkEwMTI0N0U3MUQw
MEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTcyRkNCNkI2MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIubSBpbiBTb3VyY2VzICovLAogCQkJCTJENUM5RDA1MTlDODFEOEYwMEIzQzVDMSAvKiBX
ZWJQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIwRjExMkY1RTRGMDAz
MzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzAyNzNGMTk2
NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNlMzRlOWUw
YzIxZjFmMGJlZTAxNzBiMjQ2NWUxNzEwMjliOTA0ZjEuLjk2MTBiNmE5M2YyZDQ5ZjlmOWMxOWJi
NWE1MzM3ZGM0ZGQ3ODlmYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMi0yNyAgQnJpYW4gTWljaGVsICA8
YnJpYW4ubWljaGVsQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5kbGUgT3BlbiBQYW5lbCBGdW5j
dGlvbnMgQXJlIFVuaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93c011bHRpcGxlRmlsZXM6XSk6CisKIDIw
MTUtMTItMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSB1bnVzZWQgI2RlZmluZSBfVVNFX01BVEhfREVGSU5FUwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA3
MzkzY2RjNGRkNjA2NDMzZDNhOTBhZWQ3OWQzMmM2ZTFmMmUyYjRiLi4wYmQ1OTIzMTMxNjEwMTU4
MDc4MzY3ZGE2MWMyYjg5NzJiMDA3MzM2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNDQ0LDYgKzQ0NCwyMiBAQCAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOihpZDxXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyPilsaXN0ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFs
bG93c011bHRpcGxlRmlsZXMKK3sKKyAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0gW05TT3Bl
blBhbmVsIG9wZW5QYW5lbF07CisgICAgW29wZW5QYW5lbCBzZXRBbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbjphbGxvd3NNdWx0aXBsZUZpbGVzXTsKKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAorICAgIFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93
OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3BvbnNlT0spCisgICAgICAgICAgICBb
bGlzdGVuZXIgY2hvb3NlRmlsZXM6b3BlblBhbmVsLlVSTHNdOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBbbGlzdGVuZXIgY2FuY2VsXTsKKyAgICB9XTsKKyNlbmRpZgorfQorCiAtICh2b2lk
KXVwZGF0ZVRleHRGaWVsZEZyb21VUkw6KE5TVVJMICopVVJMCiB7CiAgICAgaWYgKCFVUkwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267951</attachid>
            <date>2015-12-27 21:42:12 -0800</date>
            <delta_ts>2015-12-30 11:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20151228004136.patch</filename>
            <type>text/plain</type>
            <size>29915</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1NGE0MGUyMjgwNTUy
YjY3ZjFmZjRhNDU0Mjc0N2VhYjFiNzEzYi4uODhlMTBiM2RjNTJlOTlhMTdlYWQ5MTk2YzhlZjEw
NzBhOTRhNWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEyLTI3ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBPcGVu
IFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm06IEFkZGVkLgorICAgICAgICAo
LVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgaW5pdFdpdGhMaXN0ZW5lclByb3h5
Ol0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3Nl
RmlsZXM6XSk6CisgICAgICAgICgtW1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBj
YW5jZWxdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTUtMTItMjYgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtXSzJdW0VGTF0gVXNlIGVpbmFfZmlsZV9wYXRoX2pvaW4gYXQgcGxhdGZvcm1EZWZh
dWx0SWNvbkRhdGFiYXNlUGF0aCBpbiBXZWJQcm9jZXNzUG9vbEVmbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggZDUyM2UzYzFk
NDViM2YwNTIzZWM2NDA2Mzc4ODY5NTAzOTYxNDYxNC4uYzdiOWY4MjY0MmYyMGYyMjRjNzM4YjA5
Zjg1ZTNmYzMwZWQxMGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZS5oCkBAIC0zNSw2ICszNSwyNCBAQCBXS19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uOwogQGNsYXNzIFdLV2luZG93RmVhdHVyZXM7CitAY2xhc3MgV0tXZWJWaWV3Owor
CisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgcHJv
dmlkZXMgbWV0aG9kcyBtZXRob2RzCitmb3IgaW50ZXJhY3Rpbmcgd2l0aCBmaWxlcy4KKyovCitA
cHJvdG9jb2wgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA8TlNPYmplY3Q+CisKKy8qISBAYWJz
dHJhY3QgcGFzc2VzIGFuIGFycmF5IG9mIGZpbGUgdXJscyB0byB0aGUgd2ViIHZpZXcuCisgQHBh
cmFtIGZpbGVVUkxzIFRoZSBhcnJheSBvZiBmaWxlIHVybHMgdG8gcGFzcyB0byB0aGUgd2ViIHZp
ZXcuCisgQGRpc2N1c3Npb24gcGFzc2luZyBuaWwsIG9yIGFuIGVtcHR5IGFycmF5IHdpbGwgaGF2
ZSB0aGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhlIGNhbmNlbCBzZWxlY3Rvci4KKyAqLworLSAodm9p
ZCljaG9vc2VGaWxlczooTlNBcnJheSAqKWZpbGVVUkxzOworCisvKiEgQGFic3RyYWN0IENhbmNl
bHMgYSBmaWxlIG9wZW4gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MuCisgKi8KKy0gKHZvaWQpY2Fu
Y2VsOworCitAZW5kCiAKIC8qISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gdGhlIFdLVUlEZWxlZ2F0
ZSBwcm90b2NvbCBwcm92aWRlcyBtZXRob2RzIGZvcgogIHByZXNlbnRpbmcgbmF0aXZlIFVJIG9u
IGJlaGFsZiBvZiBhIHdlYnBhZ2UuCkBAIC0xMTQsNiArMTMyLDE3IEBAIFdLX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZh
dWx0VGV4dDooV0tfTlVMTEFCTEUgTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqIFdLX05VTExBQkxFX1NQRUNJRklFUiByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwog
CisvKiEgQGFic3RyYWN0IERpc3BsYXlzIGEgZmlsZSBvcGVuIHBhbmVsLgorIEBwYXJhbSB3ZWJW
aWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgorIEBwYXJhbSBs
aXN0ZW5lciBUaGUgbGlzdGVuZXIgb2JqZWN0IHRvIGJlIGNhbGxlZCB3aGVuIHNlbGVjdGlvbiBo
YXMgY29tcGxldGVkCisgb3IgY2FuY2VsbGVkLgorIEBwYXJhbSBhbGxvd3NNdWx0aXBsZUZpbGVz
IFdoZXRoZXIgb3Igbm90IHRoZSBvcGVuIHBhbmVsIHNob3VsZCBhbGxvdyBtdWx0aXBsZQorIHNl
bGVjdGlvbi4KKworIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2Vi
IHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIgc2VsZWN0ZWQgdGhlIENhbmNlbCBidXR0
b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilsaXN0
ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93c011bHRpcGxlRmlsZXM7CisKIEBl
bmQKIAogV0tfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAppbmRleCA3NDk2ZmZiNWYwNDk5NzkyNjQzNzMwMzc3NDU5N2UwNzk2
ZjYwZWRjLi4xOWNlMjZiNDQzODIxMmEyMzc2MmQzMmYzYzZjNDQxMDVjOWViMTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTk2LDYgKzk2LDEw
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIGltYWdlT3JNZWRpYURv
Y3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCisj
aWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
Kikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7
CiAgICAgfTsKIApAQCAtMTIyLDYgKzEyNiwxMCBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdl
YlZpZXdBY3Rpb25zRm9yRWxlbWVudERlZmF1bHRBY3Rpb25zIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRM
aXN0ZW5lckFsbG93c011bHRpcGxlRmlsZXMgOiAxOworI2VuZGlmCiAgICAgICAgIGJvb2wgd2Vi
Vmlld0ltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgOiAxOwogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCmluZGV4IGYzODJjNDgyM2FjNjRhYzlkNzgwYjcyMzc4MzUzNTBlNTViODM1NjAuLmM1Zjdj
MzgwNTEwMGRkOTg2ZjZjZDc3NjA4ZWZlYTQwMDY1N2EwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25B
Y3Rpb25EYXRhLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlv
bkFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIK
QEAgLTM3LDYgKzM4LDkgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKKyNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFBhcmFtZXRl
cnMuaCIKKyNpbXBvcnQgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbXBv
cnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxl
SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC05
Myw2ICs5NywxMSBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdh
dGU+IGRlbGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdBY3Rpb25zRm9yRWxl
bWVudERlZmF1bHRBY3Rpb25zID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6YWN0aW9uc0ZvckVsZW1lbnQ6ZGVmYXVsdEFjdGlvbnM6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50ID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxl
VGFwQXNDbGlja0F0UG9pbnQ6KV07CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyQWxs
b3dzTXVsdGlwbGVGaWxlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93c011bHRpcGxlRmls
ZXM6KV07CisjZW5kaWYKKwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdJbWFnZU9yTWVk
aWFEb2N1bWVudFNpemVDaGFuZ2VkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDopXTsKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjI3LDYgKzIzNiw0MCBAQCB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOgogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9XTsKIH0KKyNpZiBQTEFURk9STShNQUMpCitib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkgKnBhZ2UsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSAqZnJhbWUsIFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyAqcGFyYW1ldGVy
cywgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5ICpsaXN0ZW5lcikKK3sK
KyAgICAvLyBJZiBvdXIgZGVsZWdhdGUgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG1ldGhvZCwgaW52
YWxpZGF0ZSB0aGUgbGlzdGVuZXIgYW5kIHJldHVybiBmYWxzZS4KKyAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3Rl
bmVyQWxsb3dzTXVsdGlwbGVGaWxlcykgeworICAgICAgICBsaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX3VpRGVsZWdhdGUu
bV93ZWJWaWV3KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW21fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgd2luZG93XTsKKworICAgIGlmICghd2luZG93KSB7CisgICAgICAgIGxpc3Rl
bmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBh
dXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisKKyAgICAvLyBJ
ZiB3ZSBoYXZlIG5vIGRlbGVnYXRlLCBpbnZhbGlkZSB0aGUgbGlzdGVuZXIgYW5kIHJldHVybiBm
YWxzZS4KKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBbKChpZCA8V0tVSURlbGVn
YXRlPikgZGVsZWdhdGUpIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilhZG9w
dE5TKFtbV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aExp
c3RlbmVyUHJveHk6bGlzdGVuZXJdKSBhbGxvd3NNdWx0aXBsZUZpbGVzOnBhcmFtZXRlcnMtPmFs
bG93TXVsdGlwbGVGaWxlcygpXTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCiAKIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwg
dW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAodW5z
aWduZWQgbG9uZyBsb25nKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZiYzdjOTU0N2QyYjU0ZjQ1NjQzMzRiOWMy
YTJhMGFjOTVhMjE4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWljaGVs
QGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldL
Rm91bmRhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5OworfQorCitAaW50ZXJmYWNlIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA6IE5TT2JqZWN0IDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPgorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJLaXQ6OldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkgKilwcm94eTsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0NvbmNy
ZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZm
MzNkYTQ4ZjRmZDQyNTQ5MWQ0YmExMDE5MjI0MGE2YzgzYzM2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5tCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJp
YW4gTWljaGVsIChicmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQ
SUFycmF5LmgiCisjaW1wb3J0ICJBUElPYmplY3QuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5o
IgorI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCisjaW1wb3J0ICJXS1VSTENGLmgiCisjaW1w
b3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgeworICAgIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKm1fbGlzdGVuZXI7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aExpc3RlbmVyUHJveHk6KFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkgKilwcm94eSB7CisgICAgQVNTRVJUX0FSRyhwcm94eSwgcHJv
eHkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIG1f
bGlzdGVuZXIgPSBwcm94eTsKKworICAgIHJldHVybiBzZWxmOworfQorCisjcHJhZ21hIG1hcmsg
LSBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyCisKKy0gKHZvaWQpY2hvb3NlRmlsZXM6KE5TQXJy
YXkgKilmaWxlVVJMcyB7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFtmaWxlVVJMcyBjb3VudF07
CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgbV9saXN0ZW5lci0+Y2FuY2VsKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOworICAgICAgICB1
cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoTlNVUkwg
KmZpbGVVUkwgaW4gZmlsZVVSTHMpCisgICAgICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChh
ZG9wdFJlZih0b0ltcGwoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWZpbGVVUkwpKSkp
OworCisgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJyYXk6
OmNyZWF0ZShXVEY6Om1vdmUodXJscykpOworICAgICAgICBtX2xpc3RlbmVyLT5jaG9vc2VGaWxl
cyhmaWxlVVJMc1JlZi5nZXQoKSk7CisgICAgfQorfQorCistICh2b2lkKWNhbmNlbCB7CisgICAg
bV9saXN0ZW5lci0+Y2FuY2VsKCk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTdjZmIyNTk0NzViNmJkNDc3OWFkMmIwYTdlYjUzNWQ1ZTQxYzgwOC4uODgyNDEy
YjBhMzFmMWRhMzQ2YWExMTcyMmUxNDc0MDUzNmM5Njc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3Niw2ICsxMDc2LDgg
QEAKIAkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFODQ5QzYx
MzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOEU4NkYxMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi87IH07CiAJCTcyOEU4NkYyMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBp
Y2tlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLzsgfTsK
KwkJNzJGQ0I2QjQxQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJGQ0I2QjExQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyRkNCNkI2MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
RkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIubSAqLzsgfTsKIAkJNzUzRTNFMEQxODg3Mzk4NTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0Uz
RTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAgKi87IH07CiAJCTc1M0Uz
RTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUzRTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8q
IFNlc3Npb25UcmFja2VyLmggKi87IH07CiAJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBX
S1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0zMjYx
LDYgKzMyNjMsOCBAQAogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyRkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXNzaW9uVHJhY2tlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRy
YWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vzc2lvblRy
YWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlG
MDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDkzNCw2ICs0OTM4LDggQEAKIAkJCQkyRDdBQUZEMjE4Qzg2NDA2MDBBN0FDRDQgLyog
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNC
QUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8sCiAJCQkJMkRDNkQ5
QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1t
ICovLAorCQkJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQk3MkZDQjZCMjFDMzA3QzJCMDBFOEEwMTIgLyogV0tD
b25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENv
Y29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgxNzYsNiArODE4Miw3IEBACiAJ
CQkJQkM3MDQzQ0MxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNzI4REUxQjFCQUQzODAwMTAyRUVFIC8qIFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEJFRkUxMTIw
QTFBNEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyRkNCNkI0MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc0NTBDMTI2M0IxNTUwMDZGMEYxMiAvKiBX
S0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNTI4MTEx
Qzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Y0
N0ZGNzE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTk4NDMsNiArOTg1MCw3IEBACiAJCQkJMkRBOTQ0QkExODg0RUEzQzAwRUQ4NkRCIC8q
IFdlYlBhZ2VJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzk2M0Q2RTExM0REMUE1MDA1NzRC
RTIgLyogV2ViUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwQ0U3MkEwMTI0N0U3MUQw
MEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTcyRkNCNkI2MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIubSBpbiBTb3VyY2VzICovLAogCQkJCTJENUM5RDA1MTlDODFEOEYwMEIzQzVDMSAvKiBX
ZWJQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIwRjExMkY1RTRGMDAz
MzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzAyNzNGMTk2
NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNlMzRlOWUw
YzIxZjFmMGJlZTAxNzBiMjQ2NWUxNzEwMjliOTA0ZjEuLjljMDgyMTJmZjA2NmE2Y2Y0NjJmMzE5
Y2M1YjllZjQxM2JkNmM2MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0xMi0yNyAgQnJpYW4gTWljaGVsICA8
YnJpYW4ubWljaGVsQGdtYWlsLmNvbT4KKworICAgICAgICBIYW5kbGUgT3BlbiBQYW5lbCBGdW5j
dGlvbnMgQXJlIFVuaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFsbG93c011bHRpcGxlRmlsZXM6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVs
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9XS1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxUZXN0RGVsZWdhdGUgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVu
ZXI6YWxsb3dzTXVsdGlwbGVGaWxlczpdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxUZXN0RGVs
ZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTUtMTItMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSB1bnVzZWQgI2RlZmluZSBfVVNFX01BVEhf
REVGSU5FUwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQppbmRleCA3MzkzY2RjNGRkNjA2NDMzZDNhOTBhZWQ3OWQzMmM2ZTFmMmUyYjRi
Li4wYmQ1OTIzMTMxNjEwMTU4MDc4MzY3ZGE2MWMyYjg5NzJiMDA3MzM2IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNDQ0
LDYgKzQ0NCwyMiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwogfQogCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFJlc3VsdExp
c3RlbmVyOihpZDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilsaXN0ZW5lciBhbGxvd3NNdWx0
aXBsZUZpbGVzOihCT09MKWFsbG93c011bHRpcGxlRmlsZXMKK3sKKyAgICBOU09wZW5QYW5lbCAq
b3BlblBhbmVsID0gW05TT3BlblBhbmVsIG9wZW5QYW5lbF07CisgICAgW29wZW5QYW5lbCBzZXRB
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbjphbGxvd3NNdWx0aXBsZUZpbGVzXTsKKworI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIFtvcGVuUGFuZWwgYmVnaW5T
aGVldE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRl
Z2VyIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3BvbnNl
T0spCisgICAgICAgICAgICBbbGlzdGVuZXIgY2hvb3NlRmlsZXM6b3BlblBhbmVsLlVSTHNdOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBbbGlzdGVuZXIgY2FuY2VsXTsKKyAgICB9XTsKKyNl
bmRpZgorfQorCiAtICh2b2lkKXVwZGF0ZVRleHRGaWVsZEZyb21VUkw6KE5TVVJMICopVVJMCiB7
CiAgICAgaWYgKCFVUkwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZmNjYThkNjk3MjNh
OWMwYzljZjM2NzkzMWExM2IyZjYxNWFjMGYuLjc2NDJkNTE5YTBiNWEyZThiNzE2ZWU4Yjk5OTg0
MzBlYTY0NWU2ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NCw2ICs3NCw4IEBACiAJ
CTUyQjhDRjk4MTU4NjhEOTEwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjhDRjk0MTU4
NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sICovOyB9OwogCQk1MkQ2NzNFRTFB
RkIxMjczMDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENjczRUMx
QUZCMTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNw
cCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1
Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJ
NzJGQ0I2QjkxQzMwQ0IyODAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZDQjZCNzFD
MzBCRUQ0MDBFOEEwMTIgLyogV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSAqLzsgfTsKKwkJ
NzJGQ0I2QkIxQzMwRDQ3OTAwRThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZDQjZC
QTFDMzBEMzNEMDBFOEEwMTIgLyogYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sICovOyB9OwogCQk3
NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1
MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9
OwogCQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWls
UHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRpbmdE
dXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRE
MTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1Njkx
MDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwpAQCAtMzc3
LDYgKzM3OSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlk
c3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTcyRkNCNkJCMUMzMEQ0Nzkw
MEU4QTAxMiAvKiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQ0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NTFCQzZGMTA4MDA1OTRGRUMgLyogdmlk
ZW8td2l0aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OTYxQkM2
RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTU5Myw2ICs1OTYsOCBAQAogCQk1MkQ2NzNFQzFBRkIxMjY4MDBGQTE5RkUgLyog
V0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJC
RDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0
ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkNCNkI3MUMzMEJFRDQwMEU4QTAxMiAvKiBXS1VJRGVs
ZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbTsgcGF0aCA9IFdlYktpdDJPYmpDL1dL
VUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyRkNCNkJBMUMzMEQzM0QwMEU4QTAxMiAvKiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8qIE1l
bW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVy
YWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNh
bGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0MzIyRDUxQjYxQ0NB
NDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NSw2ICsxMDUwLDcgQEAKIAkJ
CQkyOTQzQkU4NDE2MURGRUI4MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovLAogCQkJ
CUJDM0M0QzdEMTQ1ODdBQTYwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5t
bSAqLywKIAkJCQlCQzNDNEM3MDE0NTc1QjZBMDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGVUZXN0Lm1tICovLAorCQkJCTcyRkNCNkI3MUMzMEJFRDQwMEU4QTAxMiAvKiBX
S1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAiV2ViS2l0
MiBPYmplY3RpdmUtQyI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTIzMyw2ICsx
MjM5LDcgQEAKIAkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzJGQ0I2QkExQzMwRDMz
RDAwRThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCAqLywKIAkJCQk3QUU5RTUwODFB
RTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgKi8sCiAJCQkJN0ExNDU4RkIxQUQ1QzAzNTAwRTA2
NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICovLAogCQkJCUMwNDVGOTQ2MTM4NUMy
RjgwMEMwRjNDRCAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgKi8sCkBAIC0xNzM1LDYgKzE3NDIsNyBA
QAogCQkJCTdDQ0U3RjREMUE0MTFCOUYwMDQ0N0M0QyAvKiBSZXRhaW5QdHIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0Y0RjFBNDExQkE0MDA0NDdDNEMgLyogUmV0YWluUHRySGFzaGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Y0MzFBNDExQjhFMDA0NDdDNEMgLyogU2F0dXJh
dGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzJGQ0I2Qjkx
QzMwQ0IyODAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YxMjFBNDExQUU2MDA0NDdDNEMgLyogU2Nyb2xsUGlubmluZ0JlaGF2
aW9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDQjFBNDExQTdFMDA0NDdDNEMgLyog
U2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNDMUE0
MTFBN0UwMDQ0N0M0QyAvKiBTZXREb2N1bWVudFVSSS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVsZW1l
bnQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy1pbnB1dC1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJmMmM1OTJiMTg3NjJhZWQzMTAxMzNmZTIyM2M0Njdh
MjhmYzNiNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9iYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAg
IDx0aXRsZT5CYXNpYyBJbnB1dCBFbGVtZW50PC90aXRsZT4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgICBmdW5jdGlvbiB1cGxvYWQoKQorICAgICAgeworICAgICAg
ICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsK
KyAgICAgICAgaW5wdXQuY2xpY2soKTsKKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFk
PgorICA8Ym9keSBvbmNsaWNrPSJ1cGxvYWQoKSIgc3R5bGU9IndpZHRoOiA0MDAwMGVtOyBoZWln
aHQ6IDQwMDAwZW07Ij4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgc3R5bGU9Im9wYWNpdHk6IDAu
MDsiPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJPYmpDL1dLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1dLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3Qu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjNmYzc1OTExODk4NGY3OGRlY2I4M2M0OGU2OGY0NmUzOTM0NjRlZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
V0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWljaGVsQGdtYWlsLmNvbSkuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1Mp
CisKK3N0YXRpYyBib29sIGRvbmVPcGVuaW5nOworc3RhdGljIGJvb2wgZG9uZUxvYWRpbmc7CisK
K0BpbnRlcmZhY2UgV0tPcGVuUGFuZWxUZXN0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVn
YXRlLCBXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLT3Bl
blBhbmVsVGVzdERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyPilsaXN0ZW5lciBhbGxvd3NNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93c011bHRpcGxl
RmlsZXMKK3sKKyAgICBFWFBFQ1RfTk9UX05VTEwod2ViVmlldyk7CisgICAgRVhQRUNUX05PVF9O
VUxMKGxpc3RlbmVyKTsKKyAgICBkb25lT3BlbmluZyA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uCit7CisgICAgZG9uZUxvYWRpbmcgPSB0cnVlOworfQorCitAZW5kCisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQyLCBPcGVuUGFuZWxUZXN0
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1dLT3BlblBhbmVsVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpbd2ViVmlldy5nZXQoKSBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgIFtbd2lu
ZG93LmdldCgpIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAg
d2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldy5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImJhc2ljLWlucHV0LWVsZW1lbnQiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
KworICAgIFt3ZWJWaWV3LmdldCgpIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVXRpbDo6
cnVuKCZkb25lTG9hZGluZyk7CisKKyAgICBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCgxMDAsIDEwMCk7CisKKyAgICBbW3dlYlZpZXcgaGl0VGVzdDpjbGlja1BvaW50XSBtb3VzZURv
d246W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TTGVmdE1vdXNlRG93biBsb2NhdGlvbjpj
bGlja1BvaW50IG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6MCB3aW5kb3dOdW1iZXI6W3dpbmRv
dy5nZXQoKSB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3Vu
dDoxIHByZXNzdXJlOjFdXTsKKworICAgIFtbd2ViVmlldyBoaXRUZXN0OmNsaWNrUG9pbnRdIG1v
dXNlVXA6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TTGVmdE1vdXNlVXAgbG9jYXRpb246
Y2xpY2tQb2ludCBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1wOjAgd2luZG93TnVtYmVyOlt3aW5k
b3cuZ2V0KCkgd2luZG93TnVtYmVyXSBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291
bnQ6MSBwcmVzc3VyZToxXV07CisKKyAgICBVdGlsOjpydW4oJmRvbmVPcGVuaW5nKTsKKworICAg
IGRvbmVMb2FkaW5nID0gZmFsc2U7CisgICAgZG9uZU9wZW5pbmcgPSBmYWxzZTsKK30KKworfQor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268008</attachid>
            <date>2015-12-30 11:07:26 -0800</date>
            <delta_ts>2016-01-22 20:22:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20151230140651.patch</filename>
            <type>text/plain</type>
            <size>29572</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1NGE0MGUyMjgwNTUy
YjY3ZjFmZjRhNDU0Mjc0N2VhYjFiNzEzYi4uODhlMTBiM2RjNTJlOTlhMTdlYWQ5MTk2YzhlZjEw
NzBhOTRhNWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEyLTI3ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBPcGVu
IFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm06IEFkZGVkLgorICAgICAgICAo
LVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgaW5pdFdpdGhMaXN0ZW5lclByb3h5
Ol0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3Nl
RmlsZXM6XSk6CisgICAgICAgICgtW1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBj
YW5jZWxdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTUtMTItMjYgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtXSzJdW0VGTF0gVXNlIGVpbmFfZmlsZV9wYXRoX2pvaW4gYXQgcGxhdGZvcm1EZWZh
dWx0SWNvbkRhdGFiYXNlUGF0aCBpbiBXZWJQcm9jZXNzUG9vbEVmbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggZDUyM2UzYzFk
NDViM2YwNTIzZWM2NDA2Mzc4ODY5NTAzOTYxNDYxNC4uNTVmNmYwNmVhN2U5NWIxNGEzZWNlYzgw
Yzk2ZTNjMGJkMTc5NTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZS5oCkBAIC0zNSw2ICszNSwyNCBAQCBXS19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uOwogQGNsYXNzIFdLV2luZG93RmVhdHVyZXM7CitAY2xhc3MgV0tXZWJWaWV3Owor
CisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgcHJv
dmlkZXMgbWV0aG9kcworZm9yIGludGVyYWN0aW5nIHdpdGggZmlsZXMuCisqLworQHByb3RvY29s
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPE5TT2JqZWN0PgorCisvKiEgQGFic3RyYWN0IHBh
c3NlcyBhbiBhcnJheSBvZiBmaWxlIHVybHMgdG8gdGhlIHdlYiB2aWV3LgorIEBwYXJhbSBmaWxl
VVJMcyBUaGUgYXJyYXkgb2YgZmlsZSB1cmxzIHRvIHBhc3MgdG8gdGhlIHdlYiB2aWV3LgorIEBk
aXNjdXNzaW9uIHBhc3NpbmcgbmlsLCBvciBhbiBlbXB0eSBhcnJheSB3aWxsIGhhdmUgdGhlIGVm
ZmVjdCBvZiBjYWxsaW5nIHRoZSBjYW5jZWwgc2VsZWN0b3IuCisgKi8KKy0gKHZvaWQpY2hvb3Nl
RmlsZXM6KE5TQXJyYXkgKilmaWxlVVJMczsKKworLyohIEBhYnN0cmFjdCBDYW5jZWxzIGEgZmls
ZSBvcGVuIGludGVyYWN0aW9uIGluIHByb2dyZXNzLgorICovCistICh2b2lkKWNhbmNlbDsKKwor
QGVuZAogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS1VJRGVsZWdhdGUgcHJvdG9j
b2wgcHJvdmlkZXMgbWV0aG9kcyBmb3IKICBwcmVzZW50aW5nIG5hdGl2ZSBVSSBvbiBiZWhhbGYg
b2YgYSB3ZWJwYWdlLgpAQCAtMTE0LDYgKzEzMiwxNyBAQCBXS19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6
KFdLX05VTExBQkxFIE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBX
S19OVUxMQUJMRV9TUEVDSUZJRVIgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLyohIEBh
YnN0cmFjdCBEaXNwbGF5cyBhIGZpbGUgb3BlbiBwYW5lbC4KKyBAcGFyYW0gd2ViVmlldyBUaGUg
d2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyBAcGFyYW0gbGlzdGVuZXIg
VGhlIGxpc3RlbmVyIG9iamVjdCB0byBiZSBjYWxsZWQgd2hlbiBzZWxlY3Rpb24gaGFzIGNvbXBs
ZXRlZAorIG9yIGNhbmNlbGxlZC4KKyBAcGFyYW0gYWxsb3dzTXVsdGlwbGVGaWxlcyBXaGV0aGVy
IG9yIG5vdCB0aGUgb3BlbiBwYW5lbCBzaG91bGQgYWxsb3cgbXVsdGlwbGUKKyBzZWxlY3Rpb24u
CisKKyBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2aWV3IHdp
bGwgYmVoYXZlIGFzIGlmIHRoZSB1c2VyIHNlbGVjdGVkIHRoZSBDYW5jZWwgYnV0dG9uLgorICov
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFJl
c3VsdExpc3RlbmVyOihpZCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pbGlzdGVuZXIgYWxs
b3dzTXVsdGlwbGVGaWxlczooQk9PTClhbGxvd3NNdWx0aXBsZUZpbGVzOworCiBAZW5kCiAKIFdL
X0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKaW5kZXggNzQ5NmZmYjVmMDQ5OTc5MjY0MzczMDM3NzQ1OTdlMDc5NmY2MGVkYy4u
MTljZTI2YjQ0MzgyMTJhMjM3NjJkMzJmM2M2YzQ0MTA1YzllYjEzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC05Niw2ICs5NiwxMCBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNp
emVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAorI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2ViT3BlblBhbmVsUGFy
YW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJy
aWRlOworI2VuZGlmCisKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07
CiAKQEAgLTEyMiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3QWN0
aW9uc0ZvckVsZW1lbnREZWZhdWx0QWN0aW9ucyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0Rp
ZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50IDogMTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXJB
bGxvd3NNdWx0aXBsZUZpbGVzIDogMTsKKyNlbmRpZgogICAgICAgICBib29sIHdlYlZpZXdJbWFn
ZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkIDogMTsKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRl
eCBmMzgyYzQ4MjNhYzY0YWM5ZDc4MGI3MjM3ODM1MzUwZTU1YjgzNTYwLi43NTM2Mjg2ZTdmZmY1
OGQ5NmE4MmZhNzQ2OWQyNjg2YzgzOTdmZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oIgorI2ltcG9ydCAiV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW1w
b3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25BY3Rpb25J
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCkBAIC0zNyw2
ICszOCw5IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXaW5k
b3dGZWF0dXJlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCisj
aW1wb3J0ICJXS1VSTENGLmgiCisjaW1wb3J0ICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisj
aW1wb3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJfV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFs
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtOTMsNiArOTcs
MTEgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxl
Z2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QWN0aW9uc0ZvckVsZW1lbnREZWZh
dWx0QWN0aW9ucyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmFjdGlvbnNGb3JFbGVtZW50OmRlZmF1bHRBY3Rpb25zOildOwogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xp
Y2tBdFBvaW50OildOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lckFsbG93c011bHRp
cGxlRmlsZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd3NNdWx0aXBsZUZpbGVzOildOwor
I2VuZGlmCisKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQ6KV07CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKQEAgLTIyNyw2ICsyMzYsMjkgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdU
RjoKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfV07
CiB9CisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3Bl
blBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5ICpwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkg
KmZyYW1lLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMgKnBhcmFtZXRlcnMsIFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSAqbGlzdGVuZXIpCit7CisgICAgLy8g
SWYgb3VyIGRlbGVnYXRlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtZXRob2QsIGludmFsaWRhdGUg
dGhlIGxpc3RlbmVyIGFuZCByZXR1cm4gZmFsc2UuCisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lckFsbG93
c011bHRpcGxlRmlsZXMpIHsKKyAgICAgICAgbGlzdGVuZXItPmludmFsaWRhdGUoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbbV91aURl
bGVnYXRlLm1fd2ViVmlldyB3aW5kb3ddOworCisgICAgaWYgKCF3aW5kb3cpIHsKKyAgICAgICAg
bGlzdGVuZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKworICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0
aFJlc3VsdExpc3RlbmVyOihpZCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pYWRvcHROUyhb
W1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5l
clByb3h5Omxpc3RlbmVyXSkgYWxsb3dzTXVsdGlwbGVGaWxlczpwYXJhbWV0ZXJzLT5hbGxvd011
bHRpcGxlRmlsZXMoKV07CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgogCiB2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVk
IGxvbmcgbG9uZyk+IGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YmM3Yzk1NDdkMmI1NGY0NTY0MzM0YjljMmEyYTBh
Yzk1YTIxOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlhbiBNaWNoZWwgKGJyaWFuLm1pY2hlbEBnbWFp
bC5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0ZvdW5k
YXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVn
YXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTsKK30KKworQGludGVyZmFjZSBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgOiBOU09iamVjdCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTGlzdGVuZXJQcm94eTooV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5ICopcHJveHk7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2ZjMzZGE0
OGY0ZmQ0MjU0OTFkNGJhMTAxOTIyNDBhNmM4M2MzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIubQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1p
Y2hlbCAoYnJpYW4ubWljaGVsQGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tDb25jcmV0ZU9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcnJh
eS5oIgorI2ltcG9ydCAiQVBJT2JqZWN0LmgiCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKyNp
bXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorI2ltcG9ydCAi
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitAaW1wbGVtZW50YXRpb24gV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
IHsKKyAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5ICptX2xpc3RlbmVyOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5ICopcHJveHkgeworICAgIEFTU0VSVF9BUkcocHJveHksIHByb3h5KTsK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBtX2xpc3Rl
bmVyID0gcHJveHk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworI3ByYWdtYSBtYXJrIC0gV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lcgorCistICh2b2lkKWNob29zZUZpbGVzOihOU0FycmF5ICop
ZmlsZVVSTHMgeworICAgIE5TVUludGVnZXIgY291bnQgPSBbZmlsZVVSTHMgY291bnRdOworICAg
IGlmICghY291bnQpCisgICAgICAgIG1fbGlzdGVuZXItPmNhbmNlbCgpOworICAgIGVsc2Ugewor
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKKyAgICAgICAgdXJscy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKE5TVVJMICpmaWxl
VVJMIGluIGZpbGVVUkxzKQorICAgICAgICAgICAgdXJscy51bmNoZWNrZWRBcHBlbmQoYWRvcHRS
ZWYodG9JbXBsKFdLVVJMQ3JlYXRlV2l0aENGVVJMKChDRlVSTFJlZilmaWxlVVJMKSkpKTsKKwor
ICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gZmlsZVVSTHNSZWYgPSBBUEk6OkFycmF5OjpjcmVh
dGUoV1RGOjptb3ZlKHVybHMpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmls
ZVVSTHNSZWYuZ2V0KCkpOworICAgIH0KK30KKworLSAodm9pZCljYW5jZWwgeworICAgIG1fbGlz
dGVuZXItPmNhbmNlbCgpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE3Y2ZiMjU5NDc1YjZiZDQ3NzlhZDJiMGE3ZWI1MzVkNWU0MWM4MDguLjg4MjQxMmIwYTMx
ZjFkYTM0NmFhMTE3MjJlMTQ3NDA1MzZjOTY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzYsNiArMTA3Niw4IEBACiAJ
CTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5
MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUg
LyogV2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1h
Yy5oICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhF
ODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi87IH07CisJCTcy
RkNCNkI0MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNC
NkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkZD
QjZCNjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZDQjZC
MjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0g
Ki87IH07CiAJCTc1M0UzRTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTNFM0UwQjE4
ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovOyB9OwogCQk3NTNFM0UwRTE4
ODczOTg5MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBTZXNz
aW9uVHJhY2tlci5oICovOyB9OwogCQk3NUE4RDJDODE4N0NDRkFCMDBDMzlDOUUgLyogV0tXZWJz
aXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMzI2MSw2ICsz
MjYzLDggQEAKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0
ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZh
dGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkZDQjZCMTFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29uY3Jl
dGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkZDQjZCMjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFdLQ29uY3Jl
dGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vzc2lvblRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25UcmFja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5
QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ5MzQsNiArNDkzOCw4IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAv
KiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZEOUMyMThD
NDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLywK
KwkJCQk3MkZDQjZCMTFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmggKi8sCisJCQkJNzJGQ0I2QjIxQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29uY3Jl
dGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MTc2LDYgKzgxODIsNyBAQAogCQkJCUJD
NzA0M0NDMTJGNzVFRTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQTcyOERFMUIxQkFEMzgwMDEwMkVFRSAvKiBXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRCRUZFMTEyMEExQTRD
MDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZD
QjZCNDFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NDUwQzEyNjNCMTU1MDA2RjBGMTIgLyogV0tCdW5k
bGVOb2RlSGFuZGxlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDUyODExMUM5NDI4
NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGNDdGRjcx
NzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8sCkBA
IC05ODQzLDYgKzk4NTAsNyBAQAogCQkJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQ
YWdlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8q
IFdlYlBhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzJBMDEyNDdFNzFEMDBCQzBF
QzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MkZD
QjZCNjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Lm0gaW4gU291cmNlcyAqLywKIAkJCQkyRDVDOUQwNTE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFn
ZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMEYxMTJGNUU0RjAwMzM3QkFC
IC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMwMjczRjE5NjYyMkQ2
MDBDMTJCNzUgLyogV2ViUGFnZVByb3h5Q29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZTM0ZTllMGMyMWYx
ZjBiZWUwMTcwYjI0NjVlMTcxMDI5YjkwNGYxLi45YzA4MjEyZmYwNjZhNmNmNDYyZjMxOWNjNWI5
ZWY0MTNiZDZjNjM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTItMjcgIEJyaWFuIE1pY2hlbCAgPGJyaWFu
Lm1pY2hlbEBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIE9wZW4gUGFuZWwgRnVuY3Rpb25z
IEFyZSBVbmltcGxlbWVudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
OgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5Q
YW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd3NNdWx0aXBsZUZpbGVzOl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy1pbnB1dC1lbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
V0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLT3BlblBh
bmVsVGVzdERlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOmFs
bG93c011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsVGVzdERlbGVnYXRl
IHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE1LTEyLTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2VkICNkZWZpbmUgX1VTRV9NQVRIX0RFRklO
RVMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0KaW5kZXggNzM5M2NkYzRkZDYwNjQzM2QzYTkwYWVkNzlkMzJjNmUxZjJlMmI0Yi4uNjcz
MWRlNzE4NWNiZDFlZTIyNGI1YTYyZmVhZWNmYzIwZmIzN2Q5YiAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTQ0NCw2ICs0
NDQsMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICB9XTsKIH0KIAorLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5l
cjooaWQ8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pbGlzdGVuZXIgYWxsb3dzTXVsdGlwbGVG
aWxlczooQk9PTClhbGxvd3NNdWx0aXBsZUZpbGVzCit7CisgICAgTlNPcGVuUGFuZWwgKm9wZW5Q
YW5lbCA9IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dz
TXVsdGlwbGVTZWxlY3Rpb246YWxsb3dzTXVsdGlwbGVGaWxlc107CisKKyAgICBbb3BlblBhbmVs
IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TSW50ZWdlciByZXN1bHQpCisgICAgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxS
ZXNwb25zZU9LKQorICAgICAgICAgICAgW2xpc3RlbmVyIGNob29zZUZpbGVzOm9wZW5QYW5lbC5V
UkxzXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW2xpc3RlbmVyIGNhbmNlbF07CisgICAg
fV07Cit9CisKIC0gKHZvaWQpdXBkYXRlVGV4dEZpZWxkRnJvbVVSTDooTlNVUkwgKilVUkwKIHsK
ICAgICBpZiAoIVVSTCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVmY2NhOGQ2OTcyM2E5
YzBjOWNmMzY3OTMxYTEzYjJmNjE1YWMwZi4uNzY0MmQ1MTlhMGI1YTJlOGI3MTZlZThiOTk5ODQz
MGVhNjQ1ZTZlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0LDYgKzc0LDggQEAKIAkJ
NTJCOENGOTgxNTg2OEQ5MTAwMjgxMDUzIC8qIFNldERvY3VtZW50VVJJLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCOENGOTQxNTg2
OENGMDAwMjgxMDUzIC8qIFNldERvY3VtZW50VVJJLmh0bWwgKi87IH07CiAJCTUyRDY3M0VFMUFG
QjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ2NzNFQzFB
RkIxMjY4MDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3Bw
ICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTVD
RTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9OworCQk3
MkZDQjZCOTFDMzBDQjI4MDBFOEEwMTIgLyogV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNCNkI3MUMz
MEJFRDQwMEU4QTAxMiAvKiBXS1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovOyB9OworCQk3
MkZDQjZCQjFDMzBENDc5MDBFOEEwMTIgLyogYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNCNkJB
MUMzMEQzM0QwMEU4QTAxMiAvKiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgKi87IH07CiAJCTc2
NDMyMkQ3MUI2MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY0MzIyRDUx
QjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi87IH07
CiAJCTc2NzM0OTlEMTkzMEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1
cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQx
NTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEw
MEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CkBAIC0zNzcs
NiArMzc5LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRz
dFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNzJGQ0I2QkIxQzMwRDQ3OTAw
RThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlDREM4RTQ5NDFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQzhFNDk1MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRl
by13aXRoLWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NjFCQzZG
MTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aG91dC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLApAQCAtNTkzLDYgKzU5Niw4IEBACiAJCTUyRDY3M0VDMUFGQjEyNjgwMEZBMTlGRSAvKiBX
S1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTREMjFFOUQwMDNCMkJE
OCAvKiBQYXJlbnRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYXJlbnRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ4
MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJGQ0I2QjcxQzMwQkVENDAwRThBMDEyIC8qIFdLVUlEZWxl
Z2F0ZU9wZW5QYW5lbFRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvV0tV
SURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJGQ0I2QkExQzMwRDMzRDAwRThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVt
b3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJh
bFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjQzMjJENTFCNjFDQ0E0
MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ1LDYgKzEwNTAsNyBAQAogCQkJ
CTI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8sCiAJCQkJ
QkMzQzRDN0QxNDU4N0FBNjAwMjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1t
ICovLAogCQkJCUJDM0M0QzcwMTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZVRlc3QubW0gKi8sCisJCQkJNzJGQ0I2QjcxQzMwQkVENDAwRThBMDEyIC8qIFdL
VUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQy
IE9iamVjdGl2ZS1DIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjMzLDYgKzEy
MzksNyBAQAogCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3NTYgLyogUmVzb3VyY2VzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3MkZDQjZCQTFDMzBEMzNE
MDBFOEEwMTIgLyogYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sICovLAogCQkJCTdBRTlFNTA4MUFF
NUFFOEIwMENGODc0QiAvKiB0ZXN0LnBkZiAqLywKIAkJCQk3QTE0NThGQjFBRDVDMDM1MDBFMDY3
NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwgKi8sCiAJCQkJQzA0NUY5NDYxMzg1QzJG
ODAwQzBGM0NEIC8qIDE4LWNoYXJhY3RlcnMuaHRtbCAqLywKQEAgLTE3MzUsNiArMTc0Miw3IEBA
CiAJCQkJN0NDRTdGNEQxQTQxMUI5RjAwNDQ3QzRDIC8qIFJldGFpblB0ci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RjRGMUE0MTFCQTQwMDQ0N0M0QyAvKiBSZXRhaW5QdHJIYXNoaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjQzMUE0MTFCOEUwMDQ0N0M0QyAvKiBTYXR1cmF0
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MkZDQjZCOTFD
MzBDQjI4MDBFOEEwMTIgLyogV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZp
b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNCMUE0MTFBN0UwMDQ0N0M0QyAvKiBT
ZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQ0MxQTQx
MUE3RTAwNDQ3QzRDIC8qIFNldERvY3VtZW50VVJJLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvYmFzaWMtaW5wdXQtZWxlbWVu
dC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVs
ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmYyYzU5MmIxODc2MmFlZDMxMDEzM2ZlMjIzYzQ2N2Ey
OGZjM2I1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL2Jhc2ljLWlucHV0LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHRpdGxlPkJhc2ljIElucHV0IEVsZW1lbnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICAgIGZ1bmN0aW9uIHVwbG9hZCgpCisgICAgICB7CisgICAgICAg
IHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdOwor
ICAgICAgICBpbnB1dC5jbGljaygpOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+
CisgIDxib2R5IG9uY2xpY2s9InVwbG9hZCgpIiBzdHlsZT0id2lkdGg6IDQwMDAwZW07IGhlaWdo
dDogNDAwMDBlbTsiPgorICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBzdHlsZT0ib3BhY2l0eTogMC4w
OyI+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mk9iakMvV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42M2ZjNzU5MTE4OTg0Zjc4ZGVjYjgzYzQ4ZTY4ZjQ2ZTM5MzQ2NGVkCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9X
S1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQnJpYW4gTWljaGVsIChicmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykK
Kworc3RhdGljIGJvb2wgZG9uZU9wZW5pbmc7CitzdGF0aWMgYm9vbCBkb25lTG9hZGluZzsKKwor
QGludGVyZmFjZSBXS09wZW5QYW5lbFRlc3REZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdh
dGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tPcGVu
UGFuZWxUZXN0RGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjooaWQgPFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI+KWxpc3RlbmVyIGFsbG93c011bHRpcGxlRmlsZXM6KEJPT0wpYWxsb3dzTXVsdGlwbGVG
aWxlcworeworICAgIEVYUEVDVF9OT1RfTlVMTCh3ZWJWaWV3KTsKKyAgICBFWFBFQ1RfTk9UX05V
TEwobGlzdGVuZXIpOworICAgIGRvbmVPcGVuaW5nID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24KK3sKKyAgICBkb25lTG9hZGluZyA9IHRydWU7Cit9CisKK0BlbmQKKwor
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdDIsIE9wZW5QYW5lbFRlc3Qp
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbV0tPcGVuUGFuZWxUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKworICAg
IGF1dG8gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0Olt3ZWJWaWV3LmdldCgpIGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgW1t3aW5k
b3cuZ2V0KCkgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICB3
ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICB3ZWJWaWV3Lmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYmFzaWMtaW5wdXQtZWxlbWVudCIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwor
CisgICAgW3dlYlZpZXcuZ2V0KCkgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBVdGlsOjpy
dW4oJmRvbmVMb2FkaW5nKTsKKworICAgIE5TUG9pbnQgY2xpY2tQb2ludCA9IE5TTWFrZVBvaW50
KDEwMCwgMTAwKTsKKworICAgIFtbd2ViVmlldyBoaXRUZXN0OmNsaWNrUG9pbnRdIG1vdXNlRG93
bjpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNMZWZ0TW91c2VEb3duIGxvY2F0aW9uOmNs
aWNrUG9pbnQgbW9kaWZpZXJGbGFnczowIHRpbWVzdGFtcDowIHdpbmRvd051bWJlcjpbd2luZG93
LmdldCgpIHdpbmRvd051bWJlcl0gY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50
OjEgcHJlc3N1cmU6MV1dOworCisgICAgW1t3ZWJWaWV3IGhpdFRlc3Q6Y2xpY2tQb2ludF0gbW91
c2VVcDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNMZWZ0TW91c2VVcCBsb2NhdGlvbjpj
bGlja1BvaW50IG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6MCB3aW5kb3dOdW1iZXI6W3dpbmRv
dy5nZXQoKSB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3Vu
dDoxIHByZXNzdXJlOjFdXTsKKworICAgIFV0aWw6OnJ1bigmZG9uZU9wZW5pbmcpOworCisgICAg
ZG9uZUxvYWRpbmcgPSBmYWxzZTsKKyAgICBkb25lT3BlbmluZyA9IGZhbHNlOworfQorCit9CisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0oSU9TKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269635</attachid>
            <date>2016-01-22 20:23:10 -0800</date>
            <delta_ts>2016-01-23 10:02:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20160122202240.patch</filename>
            <type>text/plain</type>
            <size>39736</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1NGE0MGUyMjgwNTUy
YjY3ZjFmZjRhNDU0Mjc0N2VhYjFiNzEzYi4uODhlMTBiM2RjNTJlOTlhMTdlYWQ5MTk2YzhlZjEw
NzBhOTRhNWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEyLTI3ICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBPcGVu
IFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm06IEFkZGVkLgorICAgICAgICAo
LVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgaW5pdFdpdGhMaXN0ZW5lclByb3h5
Ol0pOgorICAgICAgICAoLVtXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgY2hvb3Nl
RmlsZXM6XSk6CisgICAgICAgICgtW1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBj
YW5jZWxdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTUtMTItMjYgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtXSzJdW0VGTF0gVXNlIGVpbmFfZmlsZV9wYXRoX2pvaW4gYXQgcGxhdGZvcm1EZWZh
dWx0SWNvbkRhdGFiYXNlUGF0aCBpbiBXZWJQcm9jZXNzUG9vbEVmbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggYzNkN2YxNTQxNWYwNTdhODE1YWE0YjY5MDIw
MjllMmJhNmQxNTMyNS4uN2NiMTIxZjI2YzlkNzNhMzk0MjY3Yzc1YTlkYWQyZmE3MmI1NjVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zOCw2ICszOCw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2Vy
U2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaAppbmRleCBkNTIzZTNjMWQ0
NWIzZjA1MjNlYzY0MDYzNzg4Njk1MDM5NjE0NjE0Li5mOTVjNTliNWQ4ZDFkYWM1YTBiZjQzMTFi
NjFmNjEyOWZmNzBkYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlLmgKQEAgLTM1LDYgKzM1LDI1IEBAIFdLX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiBAY2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwogQGNsYXNzIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb247CiBAY2xhc3MgV0tXaW5kb3dGZWF0dXJlczsKK0BjbGFzcyBXS1dlYlZpZXc7CitA
Y2xhc3MgV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnM7CisKKy8qISBBIGNsYXNzIGNvbmZvcm1pbmcg
dG8gV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBwcm92aWRlcyBtZXRob2RzCitmb3IgaW50ZXJh
Y3Rpbmcgd2l0aCBmaWxlcy4KKyovCitAcHJvdG9jb2wgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciA8TlNPYmplY3Q+CisKKy8qISBAYWJzdHJhY3QgcGFzc2VzIGFuIGFycmF5IG9mIGZpbGUgdXJs
cyB0byB0aGUgd2ViIHZpZXcuCisgQHBhcmFtIGZpbGVVUkxzIFRoZSBhcnJheSBvZiBmaWxlIHVy
bHMgdG8gcGFzcyB0byB0aGUgd2ViIHZpZXcuCisgQGRpc2N1c3Npb24gcGFzc2luZyBuaWwsIG9y
IGFuIGVtcHR5IGFycmF5IHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhlIGNhbmNl
bCBzZWxlY3Rvci4KKyAqLworLSAodm9pZCljaG9vc2VGaWxlczooTlNBcnJheSAqKWZpbGVVUkxz
OworCisvKiEgQGFic3RyYWN0IENhbmNlbHMgYSBmaWxlIG9wZW4gaW50ZXJhY3Rpb24gaW4gcHJv
Z3Jlc3MuCisgKi8KKy0gKHZvaWQpY2FuY2VsOworCitAZW5kCiAKIC8qISBBIGNsYXNzIGNvbmZv
cm1pbmcgdG8gdGhlIFdLVUlEZWxlZ2F0ZSBwcm90b2NvbCBwcm92aWRlcyBtZXRob2RzIGZvcgog
IHByZXNlbnRpbmcgbmF0aXZlIFVJIG9uIGJlaGFsZiBvZiBhIHdlYnBhZ2UuCkBAIC0xMTQsNiAr
MTMzLDE2IEBAIFdLX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgKi8KIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooV0tfTlVMTEFCTEUgTlNTdHJpbmcgKilk
ZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqIFdLX05VTExBQkxFX1NQRUNJRklFUiByZXN1
bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCisvKiEgQGFic3RyYWN0IERpc3BsYXlzIGEgZmlsZSBv
cGVuIHBhbmVsLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVs
ZWdhdGUgbWV0aG9kLgorIEBwYXJhbSBsaXN0ZW5lciBUaGUgbGlzdGVuZXIgb2JqZWN0IHRvIGJl
IGNhbGxlZCB3aGVuIHNlbGVjdGlvbiBoYXMgY29tcGxldGVkCisgb3IgY2FuY2VsbGVkLgorIEBw
YXJhbSBwYXJhbWV0ZXJzIFBhcmFtZXRlcnMgdG8gY29uZmlndXJlIHRoZSBvcGVuIHBhbmVsIHdp
dGggYXMgc3BlY2lmaWNlZCBieSB0aGUgd2VicGFnZS4KKworIElmIHlvdSBkbyBub3QgaW1wbGVt
ZW50IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIg
c2VsZWN0ZWQgdGhlIENhbmNlbCBidXR0b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkIDxXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyPilsaXN0ZW5lciBwYXJhbWV0ZXJzOihXS1VJT3BlblBhbmVsUGFy
YW1ldGVycyAqKXBhcmFtZXRlcnM7CisKIEBlbmQKIAogV0tfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlP
cGVuUGFuZWxQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFjNDk5MjEwZDMwOTdmZjNmMmY4N2Nj
OTFiNjllYmI2ODEwYTI0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWljaGVsQGdt
YWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorCisvKiEgQSBjbGFzcyB0byBwYXNzIGNvbmZpZ3VyYXRpb24g
ZmxhZ3MgdG8gYW4gb3BlbiBwYW5lbCBiYXNlZCBvbiBvcHRpb25zIHNwZWNpZmllZCBpbiB0aGUg
d2VicGFnZS4KKyAqLworQGludGVyZmFjZSBXS1VJT3BlblBhbmVsUGFyYW1ldGVycyA6IE5TT2Jq
ZWN0CisKKy8qISBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgbXVsdGlwbGUgZmlsZXMgYXJlIGFs
bG93ZWQuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhbGxvd3NN
dWx0aXBsZUZpbGVzOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhNmNjY2ExODkyY2JjZGI1ZTMzOWY2MzYxZDcwMzczYTJjOTdlMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlPcGVu
UGFuZWxQYXJhbWV0ZXJzLm0KQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBCcmlhbiBNaWNoZWwgKGJyaWFuLm1pY2hlbEBnbWFpbC5jb20pLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLVUlPcGVu
UGFuZWxQYXJhbWV0ZXJzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRp
b24gV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMKKworLSAodm9pZClfc2V0QWxsb3dzTXVsdGlwbGVG
aWxlczooQk9PTClhbGxvd3NNdWx0aXBsZUZpbGVzIHsKKyAgICBfYWxsb3dzTXVsdGlwbGVGaWxl
cyA9IGFsbG93c011bHRpcGxlRmlsZXM7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2Y2NjNiMGM2Njc3NzJhOGQ1
MjE3OTY4M2RlMzRkZGFjNWZjMTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEJyaWFuIE1pY2hlbCAoYnJp
YW4ubWljaGVsQGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPFdlYktpdC9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oPgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworQGludGVyZmFjZSBXS1VJT3BlblBhbmVsUGFyYW1ldGVycyAoV0tQcml2YXRlKQor
CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NNdWx0aXBsZUZpbGVzOikg
Qk9PTCBhbGxvd3NNdWx0aXBsZUZpbGVzOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggNzQ5NmZmYjVmMDQ5OTc5MjY0
MzczMDM3NzQ1OTdlMDc5NmY2MGVkYy4uOGI3ZDY5NjkwM2VmZTQyNjM5ZjMwYWI3YTkzMjQ0ZGQ4
N2E0YjdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC05Niw2ICs5NiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgdmlydHVhbCBib29sIHJ1
bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOworI2VuZGlmCisKICAgICAgICAgVUlEZWxlZ2F0
ZSYgbV91aURlbGVnYXRlOwogICAgIH07CiAKQEAgLTEyMiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCB3ZWJWaWV3QWN0aW9uc0ZvckVsZW1lbnREZWZhdWx0QWN0aW9ucyA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50IDogMTsK
ICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVu
UGFuZWxXaXRoUmVzdWx0TGlzdGVuZXJQYXJhbWV0ZXJzIDogMTsKKyNlbmRpZgogICAgICAgICBi
b29sIHdlYlZpZXdJbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkIDogMTsKIAogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmMzgyYzQ4MjNhYzY0YWM5ZDc4MGI3MjM3ODM1MzUwZTU1YjgzNTYw
Li40OGQwMzAzNmExZWRjZjUxZTI1ODlmYmNjZGQ5MWVkNTFmOGJkYWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMzAsMTMgKzMwLDE4IEBA
CiAKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIk5h
dmlnYXRpb25BY3Rpb25EYXRhLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
TmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCisjaW1wb3J0ICJXS1VSTENGLmgiCisjaW1wb3J0
ICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAj
aW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgpAQCAtOTMsNiArOTgsMTEgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXRE
ZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3QWN0aW9uc0ZvckVsZW1lbnREZWZhdWx0QWN0aW9ucyA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFjdGlvbnNGb3JFbGVtZW50OmRlZmF1
bHRBY3Rpb25zOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVU
YXBBc0NsaWNrQXRQb2ludCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5l
bFdpdGhSZXN1bHRMaXN0ZW5lclBhcmFtZXRlcnMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjpwYXJh
bWV0ZXJzOildOworI2VuZGlmCisKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VP
ck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQ6KV07CiAK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIyNyw2ICsyMzcsMzIgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSosIGNvbnN0IFdURjoKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfV07CiB9CisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5ICpwYWdlLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkgKmZyYW1lLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMgKnBhcmFt
ZXRlcnMsIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSAqbGlzdGVuZXIp
Cit7CisgICAgLy8gSWYgb3VyIGRlbGVnYXRlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtZXRob2Qs
IGludmFsaWRhdGUgdGhlIGxpc3RlbmVyIGFuZCByZXR1cm4gZmFsc2UuCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhSZXN1bHRM
aXN0ZW5lclBhcmFtZXRlcnMpIHsKKyAgICAgICAgbGlzdGVuZXItPmludmFsaWRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbbV91
aURlbGVnYXRlLm1fd2ViVmlldyB3aW5kb3ddOworCisgICAgaWYgKCF3aW5kb3cpIHsKKyAgICAg
ICAgbGlzdGVuZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKwor
ICAgIGF1dG8gZGVsZWdhdGVQYXJhbWV0ZXJzID0gYWRvcHROUyhbW1dLVUlPcGVuUGFuZWxQYXJh
bWV0ZXJzIGFsbG9jXSBpbml0XSk7CisgICAgW2RlbGVnYXRlUGFyYW1ldGVycy5nZXQoKSBfc2V0
QWxsb3dzTXVsdGlwbGVGaWxlczpwYXJhbWV0ZXJzLT5hbGxvd011bHRpcGxlRmlsZXMoKV07CisK
KyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5l
bFdpdGhSZXN1bHRMaXN0ZW5lcjooaWQgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KWFkb3B0
TlMoW1tXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoTGlz
dGVuZXJQcm94eTpsaXN0ZW5lcl0pIHBhcmFtZXRlcnM6KFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJz
ICopZGVsZWdhdGVQYXJhbWV0ZXJzXTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCiAK
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2Fn
ZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
dW5zaWduZWQgbG9uZyBsb25nKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZiYzdjOTU0N2QyYjU0ZjQ1NjQzMzRi
OWMyYTJhMGFjOTVhMjE4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWlj
aGVsQGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpbXBvcnQgPFdlYktpdC9X
S1VJRGVsZWdhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OworfQorCitAaW50ZXJmYWNlIFdLQ29uY3JldGVPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lciA6IE5TT2JqZWN0IDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPgorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJLaXQ6OldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkgKilwcm94eTsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0Nv
bmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MzZmMzNkYTQ4ZjRmZDQyNTQ5MWQ0YmExMDE5MjI0MGE2YzgzYzM2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5tCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QnJpYW4gTWljaGVsIChicmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0NvbmNyZXRlT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQg
IkFQSUFycmF5LmgiCisjaW1wb3J0ICJBUElPYmplY3QuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlv
bi5oIgorI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCisjaW1wb3J0ICJXS1VSTENGLmgiCisj
aW1wb3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIgeworICAgIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKm1fbGlzdGVu
ZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aExpc3RlbmVyUHJveHk6KFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKilwcm94eSB7CisgICAgQVNTRVJUX0FSRyhwcm94eSwg
cHJveHkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAgICAg
IG1fbGlzdGVuZXIgPSBwcm94eTsKKworICAgIHJldHVybiBzZWxmOworfQorCisjcHJhZ21hIG1h
cmsgLSBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyCisKKy0gKHZvaWQpY2hvb3NlRmlsZXM6KE5T
QXJyYXkgKilmaWxlVVJMcyB7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFtmaWxlVVJMcyBjb3Vu
dF07CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgbV9saXN0ZW5lci0+Y2FuY2VsKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOworICAgICAg
ICB1cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoTlNV
UkwgKmZpbGVVUkwgaW4gZmlsZVVSTHMpCisgICAgICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVu
ZChhZG9wdFJlZih0b0ltcGwoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWZpbGVVUkwp
KSkpOworCisgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEY6Om1vdmUodXJscykpOworICAgICAgICBtX2xpc3RlbmVyLT5jaG9vc2VG
aWxlcyhmaWxlVVJMc1JlZi5nZXQoKSk7CisgICAgfQorfQorCistICh2b2lkKWNhbmNlbCB7Cisg
ICAgbV9saXN0ZW5lci0+Y2FuY2VsKCk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTdjZmIyNTk0NzViNmJkNDc3OWFkMmIwYTdlYjUzNWQ1ZTQxYzgwOC4uYzc4
ODBhYmQzOWQzODY4M2FkZWZmMjk1ZDJhNDE2MWM1YjI2YzZiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3Niw2ICsxMDc2
LDExIEBACiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0
OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjhFODZGMTE3OTUxODhD
MDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5oICovOyB9OwogCQk3MjhFODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi87
IH07CisJCTcyQzA2Q0ZEMUM1MzFBQTQwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVy
cy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMDZD
RkIxQzUzMUFBNDAwMTI5MURFIC8qIFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzLm0gKi87IH07CisJ
CTcyQzA2Q0ZGMUM1MzFEMUEwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzA2
Q0ZFMUM1MzFEMUEwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkMwNkQw
MDFDNTMyNjUzMDAxMjkxREUgLyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzA2Q0ZBMUM1MzFBQTQwMDEy
OTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNzJGQ0I2QjQxQzMwN0MyQjAwRThBMDEyIC8qIFdL
Q29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGQ0I2QjExQzMwN0MyQjAwRThBMDEyIC8qIFdLQ29u
Y3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkNCNkI2MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0Nv
bmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNy
ZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSAqLzsgfTsKIAkJNzUzRTNFMEQxODg3Mzk4NTAw
MTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0UzRTBCMTg4NzM5NzMwMDE4ODQ5NiAvKiBTZXNzaW9uVHJh
Y2tlci5jcHAgKi87IH07CiAJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUz
RTNFMDkxODg3Mzk0QjAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggKi87IH07CiAJCTc1QThE
MkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5
RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CkBAIC0zMjYxLDYgKzMyNjYsMTEgQEAKIAkJNkVFODQ5QzYxMzY4RDky
RDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0luc3Bl
Y3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYx
Nzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkMwNkNGQTFDNTMxQUE0MDAx
MjkxREUgLyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzJDMDZDRkIxQzUzMUFBNDAwMTI5MURFIC8qIFdLVUlPcGVuUGFuZWxQYXJh
bWV0ZXJzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLVUlPcGVuUGFu
ZWxQYXJhbWV0ZXJzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQzA2Q0ZFMUM1
MzFEMUEwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAx
MiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkNCNkIyMUMzMDdDMkIwMEU4QTAxMiAvKiBX
S0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5j
b2RpbmcgPSA0OyBwYXRoID0gV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5NiAvKiBT
ZXNzaW9uVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXNzaW9u
VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTNFM0UwQjE4ODczOTcz
MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2Vzc2lvblRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkzNCw2ICs0OTQ0LDggQEAKIAkJCQkyRDdBQUZE
MjE4Qzg2NDA2MDBBN0FDRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJ
MkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5LmggKi8sCiAJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5Lm1tICovLAorCQkJCTcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAv
KiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQk3MkZDQjZCMjFD
MzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0gKi8s
CiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTU0MDIsNiArNTQxNCw5IEBACiAJCQkJMUFENjBGNUMxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2lu
ZG93RmVhdHVyZXMuaCAqLywKIAkJCQkxQUQ2MEY1QjE4RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5k
b3dGZWF0dXJlcy5tbSAqLywKIAkJCQkxQUQ2MEY1RjE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5k
b3dGZWF0dXJlc0ludGVybmFsLmggKi8sCisJCQkJNzJDMDZDRkExQzUzMUFBNDAwMTI5MURFIC8q
IFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8sCisJCQkJNzJDMDZDRkIxQzUzMUFBNDAwMTI5
MURFIC8qIFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzLm0gKi8sCisJCQkJNzJDMDZDRkUxQzUzMUQx
QTAwMTI5MURFIC8qIFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03OTQyLDcg
Kzc5NTcsOSBAQAogCQkJCUNFRTRBRTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE1RTc3MzAxODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTY1NEYwMDE4NEVGMzRBMDA3REM4MzcgLyog
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQzA2
RDAwMUM1MzI2NTMwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE2NTRFRkUxODRFRjMzRjAwN0RDODM3IC8qIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkMwNkNGRjFDNTMxRDFB
MDAxMjkxREUgLyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTVFNzczNDE4NDAyRDUxMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjQ1RTEyREUyOUExMDBDQUFFMkMgLyog
VXBkYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzNjgxODU2NUI1NzAwRjNFQzA1
IC8qIFVzZXJEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTgxNzYsNiArODE5Myw3IEBACiAJCQkJ
QkM3MDQzQ0MxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFBNzI4REUxQjFCQUQzODAwMTAyRUVFIC8qIFdLQnVuZGxlTmF2
aWdhdGlvbkFjdGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEJFRkUxMTIwQTFB
NEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
RkNCNkI0MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc0NTBDMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1
bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNTI4MTExQzk0
Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Y0N0ZG
NzE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTk0MDIsNiArOTQyMCw3IEBACiAJCQkJMUEyQTRCMEUxNTg2QTIyNDAwOTBDOUU5IC8qIENv
bG9yU3BhY2VEYXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RjlGQjcxMUUxNDA4NTAwREIx
MzcxIC8qIENvbW1hbmRMaW5lUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCRUM0RTAx
OTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLywKKwkJCQk3MkMwNkNGRDFDNTMxQUE0MDAxMjkxREUgLyogV0tVSU9wZW5QYW5lbFBh
cmFtZXRlcnMubSBpbiBTb3VyY2VzICovLAogCQkJCUJDMDMyREFBMTBGNDM3RDEwMDU4QzE1QSAv
KiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzBFQUM2MTE1RDdEQTMwMDUz
RTkzNyAvKiBDb25uZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNkQ3QzIxOEJE
QkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC05ODQzLDYgKzk4NjIsNyBAQAogCQkJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBX
ZWJQYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUy
IC8qIFdlYlBhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzJBMDEyNDdFNzFEMDBC
QzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
MkZDQjZCNjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLm0gaW4gU291cmNlcyAqLywKIAkJCQkyRDVDOUQwNTE5QzgxRDhGMDBCM0M1QzEgLyogV2Vi
UGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMEYxMTJGNUU0RjAwMzM3
QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMwMjczRjE5NjYy
MkQ2MDBDMTJCNzUgLyogV2ViUGFnZVByb3h5Q29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZTM0ZTllMGMy
MWYxZjBiZWUwMTcwYjI0NjVlMTcxMDI5YjkwNGYxLi45YzA4MjEyZmYwNjZhNmNmNDYyZjMxOWNj
NWI5ZWY0MTNiZDZjNjM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTItMjcgIEJyaWFuIE1pY2hlbCAgPGJy
aWFuLm1pY2hlbEBnbWFpbC5jb20+CisKKyAgICAgICAgSGFuZGxlIE9wZW4gUGFuZWwgRnVuY3Rp
b25zIEFyZSBVbmltcGxlbWVudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzc3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9w
ZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd3NNdWx0aXBsZUZpbGVzOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy1pbnB1dC1lbGVt
ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9i
akMvV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLT3Bl
blBhbmVsVGVzdERlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3RlbmVy
OmFsbG93c011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsVGVzdERlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE1LTEyLTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2VkICNkZWZpbmUgX1VTRV9NQVRIX0RF
RklORVMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KaW5kZXggNzM5M2NkYzRkZDYwNjQzM2QzYTkwYWVkNzlkMzJjNmUxZjJlMmI0Yi4u
NjZiNTI3ZmQ5YzExYmM1MmQ4MWYyZmZhZjI1MTVhNzFkMDZmZGRiNiAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTMzLDYg
KzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURl
bGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJh
cy5oPgpAQCAtNDQ0LDYgKzQ0NSwyMCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1d
OwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVs
V2l0aFJlc3VsdExpc3RlbmVyOihpZDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilsaXN0ZW5l
ciBwYXJhbWV0ZXJzOihub25udWxsIFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVy
cworeworICAgIE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVs
XTsKKyAgICBbb3BlblBhbmVsIHNldEFsbG93c011bHRpcGxlU2VsZWN0aW9uOnBhcmFtZXRlcnMu
YWxsb3dzTXVsdGlwbGVGaWxlc107CisKKyAgICBbb3BlblBhbmVsIGJlZ2luU2hlZXRNb2RhbEZv
cldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQp
CisgICAgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKQorICAgICAg
ICAgICAgW2xpc3RlbmVyIGNob29zZUZpbGVzOm9wZW5QYW5lbC5VUkxzXTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgW2xpc3RlbmVyIGNhbmNlbF07CisgICAgfV07Cit9CisKIC0gKHZvaWQp
dXBkYXRlVGV4dEZpZWxkRnJvbVVSTDooTlNVUkwgKilVUkwKIHsKICAgICBpZiAoIVVSTCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVmY2NhOGQ2OTcyM2E5YzBjOWNmMzY3OTMxYTEzYjJm
NjE1YWMwZi4uNzY0MmQ1MTlhMGI1YTJlOGI3MTZlZThiOTk5ODQzMGVhNjQ1ZTZlYSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTc0LDYgKzc0LDggQEAKIAkJNTJCOENGOTgxNTg2OEQ5MTAw
MjgxMDUzIC8qIFNldERvY3VtZW50VVJJLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCOENGOTQxNTg2OENGMDAwMjgxMDUzIC8qIFNl
dERvY3VtZW50VVJJLmh0bWwgKi87IH07CiAJCTUyRDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBX
S1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ2NzNFQzFBRkIxMjY4MDBGQTE5RkUgLyog
V0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwICovOyB9OwogCQk1MkU1Q0U0
OTE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJE
OCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9OworCQk3MkZDQjZCOTFDMzBDQjI4MDBF
OEEwMTIgLyogV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNCNkI3MUMzMEJFRDQwMEU4QTAxMiAvKiBX
S1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovOyB9OworCQk3MkZDQjZCQjFDMzBENDc5MDBF
OEEwMTIgLyogYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkNCNkJBMUMzMEQzM0QwMEU4QTAxMiAv
KiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgKi87IH07CiAJCTc2NDMyMkQ3MUI2MUNDQzMwMDI0
RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8q
IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi87IH07CiAJCTc2NzM0OTlEMTkzMEM1
QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRfYnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNp
b25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQUREIC8q
IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2Vu
ZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CkBAIC0zNzcsNiArMzc5LDcgQEAKIAkJCWRz
dFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3
OwogCQkJZmlsZXMgPSAoCisJCQkJNzJGQ0I2QkIxQzMwRDQ3OTAwRThBMDEyIC8qIGJhc2ljLWlu
cHV0LWVsZW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NDFCQzZG
MTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUNEQzhFNDk1MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NjFCQzZGMTA4MDA1OTRGRUMgLyogdmlk
ZW8td2l0aG91dC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNTkzLDYgKzU5
Niw4IEBACiAJCTUyRDY3M0VDMUFGQjEyNjgwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0
YXRlV2l0aEZpbHRlcmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAv
KiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzJGQ0I2QjcxQzMwQkVENDAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1VJRGVsZWdhdGVP
cGVuUGFuZWxUZXN0Lm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvV0tVSURlbGVnYXRlT3BlblBhbmVs
VGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJGQ0I2QkExQzMwRDMzRDAw
RThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRv
Q2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1v
cnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVO
b0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJv
dW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDQ1LDYgKzEwNTAsNyBAQAogCQkJCTI5NDNCRTg0MTYxREZFQjgw
MDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8sCiAJCQkJQkMzQzRDN0QxNDU4N0FBNjAw
MjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tICovLAogCQkJCUJDM0M0Qzcw
MTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0g
Ki8sCisJCQkJNzJGQ0I2QjcxQzMwQkVENDAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5l
bFRlc3QubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQyIE9iamVjdGl2ZS1DIjsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjMzLDYgKzEyMzksNyBAQAogCQlCQzkwOTc3
QjEyNTU3MUFFMDAwODM3NTYgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3MkZDQjZCQTFDMzBEMzNEMDBFOEEwMTIgLyogYmFzaWMt
aW5wdXQtZWxlbWVudC5odG1sICovLAogCQkJCTdBRTlFNTA4MUFFNUFFOEIwMENGODc0QiAvKiB0
ZXN0LnBkZiAqLywKIAkJCQk3QTE0NThGQjFBRDVDMDM1MDBFMDY3NzIgLyogbW91c2UtYnV0dG9u
LWxpc3RlbmVyLmh0bWwgKi8sCiAJCQkJQzA0NUY5NDYxMzg1QzJGODAwQzBGM0NEIC8qIDE4LWNo
YXJhY3RlcnMuaHRtbCAqLywKQEAgLTE3MzUsNiArMTc0Miw3IEBACiAJCQkJN0NDRTdGNEQxQTQx
MUI5RjAwNDQ3QzRDIC8qIFJldGFpblB0ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjRG
MUE0MTFCQTQwMDQ0N0M0QyAvKiBSZXRhaW5QdHJIYXNoaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjQzMUE0MTFCOEUwMDQ0N0M0QyAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MkZDQjZCOTFDMzBDQjI4MDBFOEEwMTIgLyog
V0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjEy
MUE0MTFBRTYwMDQ0N0M0QyAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUNCMUE0MTFBN0UwMDQ0N0M0QyAvKiBTZXRBbmRVcGRhdGVDYWNoZU1v
ZGVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQ0MxQTQxMUE3RTAwNDQ3QzRDIC8qIFNl
dERvY3VtZW50VVJJLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVsZW1lbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMmYyYzU5MmIxODc2MmFlZDMxMDEzM2ZlMjIzYzQ2N2EyOGZjM2I1Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVs
ZW1lbnQuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8
aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPkJhc2ljIElucHV0
IEVsZW1lbnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICAgIGZ1bmN0aW9uIHVwbG9hZCgpCisgICAgICB7CisgICAgICAgIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdOworICAgICAgICBpbnB1dC5jbGlj
aygpOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IG9uY2xpY2s9
InVwbG9hZCgpIiBzdHlsZT0id2lkdGg6IDQwMDAwZW07IGhlaWdodDogNDAwMDBlbTsiPgorICAg
IDxpbnB1dCB0eXBlPSJmaWxlIiBzdHlsZT0ib3BhY2l0eTogMC4wOyI+CisgIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
V0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTZm
OTgzZjA0MTUwNmFiMTg0NjkxZDViODEyNWM4N2MxMjY2NjVmCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9XS1VJRGVsZWdhdGVPcGVuUGFu
ZWxUZXN0Lm1tCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJp
YW4gTWljaGVsIChicmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKworc3RhdGljIGJvb2wgZG9u
ZU9wZW5pbmc7CitzdGF0aWMgYm9vbCBkb25lTG9hZGluZzsKKworQGludGVyZmFjZSBXS09wZW5Q
YW5lbFRlc3REZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxUZXN0RGVsZWdhdGUK
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhS
ZXN1bHRMaXN0ZW5lcjooaWQ8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pbGlzdGVuZXIgcGFy
YW1ldGVyczooV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzCit7CisgICAgRVhQ
RUNUX05PVF9OVUxMKHdlYlZpZXcpOworICAgIEVYUEVDVF9OT1RfTlVMTChsaXN0ZW5lcik7Cisg
ICAgRVhQRUNUX05PVF9OVUxMKHBhcmFtZXRlcnMpOworICAgIGRvbmVPcGVuaW5nID0gdHJ1ZTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmln
YXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBkb25lTG9hZGluZyA9IHRy
dWU7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktp
dDIsIE9wZW5QYW5lbFRlc3QpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPcGVuUGFuZWxUZXN0RGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKworICAgIGF1dG8gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3LmdldCgpIGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
WUVTXSk7CisgICAgW1t3aW5kb3cuZ2V0KCkgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmll
dy5nZXQoKV07CisKKyAgICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYmFzaWMtaW5wdXQt
ZWxlbWVudCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOworCisgICAgW3dlYlZpZXcuZ2V0KCkgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CisKKyAgICBVdGlsOjpydW4oJmRvbmVMb2FkaW5nKTsKKworICAgIE5TUG9pbnQgY2xpY2tQ
b2ludCA9IE5TTWFrZVBvaW50KDEwMCwgMTAwKTsKKworICAgIFtbd2ViVmlldyBoaXRUZXN0OmNs
aWNrUG9pbnRdIG1vdXNlRG93bjpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNMZWZ0TW91
c2VEb3duIGxvY2F0aW9uOmNsaWNrUG9pbnQgbW9kaWZpZXJGbGFnczowIHRpbWVzdGFtcDowIHdp
bmRvd051bWJlcjpbd2luZG93LmdldCgpIHdpbmRvd051bWJlcl0gY29udGV4dDpuaWwgZXZlbnRO
dW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6MV1dOworCisgICAgW1t3ZWJWaWV3IGhpdFRl
c3Q6Y2xpY2tQb2ludF0gbW91c2VVcDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNMZWZ0
TW91c2VVcCBsb2NhdGlvbjpjbGlja1BvaW50IG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6MCB3
aW5kb3dOdW1iZXI6W3dpbmRvdy5nZXQoKSB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjFdXTsKKworICAgIFV0aWw6OnJ1bigmZG9u
ZU9wZW5pbmcpOworCisgICAgZG9uZUxvYWRpbmcgPSBmYWxzZTsKKyAgICBkb25lT3BlbmluZyA9
IGZhbHNlOworfQorCit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiAhUExBVEZPUk0o
SU9TKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269672</attachid>
            <date>2016-01-23 10:03:02 -0800</date>
            <delta_ts>2016-04-14 12:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20160123130235.patch</filename>
            <type>text/plain</type>
            <size>63524</size>
            <attacher name="Brian Michel">brian.michel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTY0NjNlNjc2MWUyZmUx
YmM1YWEzZTE4M2ViNDBiMjdiZmIzMTFhYy4uZTllNzdhZTZhYjNjMjM0ZWIxNDI2NDBmMjJjMDBh
YjFkOWYwMTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTAxLTIzICBCcmlh
biBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29tPgorCisgICAgICAgIEhhbmRsZSBPcGVu
IFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMubTogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaC4KKyAgICAgICAgKC1bV0tV
SU9wZW5QYW5lbFBhcmFtZXRlcnMgX3NldEFsbG93c011bHRpcGxlRmlsZXM6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXRE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVu
UGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXQuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0LmguCisgICAgICAgICgtW1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lciBpbml0V2l0aExpc3RlbmVyUHJveHk6XSk6CisgICAgICAgICgtW1dLQ29uY3JldGVPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlczpdKToKKyAgICAgICAgKC1bV0tDb25jcmV0
ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGNhbmNlbF0pOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNi0wMS0yMyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENNYWtlIGJ1aWxkIGZpeCBhZnRl
ciByMTk1NDk0LgpAQCAtODEsNyArMTA1LDcgQEAKICAgICAgICAgSG93ZXZlciwgaWYgdGhlIEFQ
SSBjbGllbnQgY29uc3RydWN0cyBhIGRpZmZlcmVudCBXS1VzZXJDb250ZW50Q29udHJvbGxlciBm
b3IgdHdvIHZpZXdzLAogICAgICAgICBhbmQgZm9yY2VzIHRoZW0gYm90aCBpbnRvIHRoZSBzYW1l
IHByb2Nlc3MsIFdlYlBhZ2VQcm94eSdzIGNvbnN0cnVjdG9yIHNlbmRzIGEgbWVzc2FnZQogICAg
ICAgICB3aXRoIGEgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIElEIHRoYXQgZG9lc24ndCBleGlz
dCB5ZXQgb24gdGhlIFdlYlByb2Nlc3Mgc2lkZQotICAgICAgICAoYmVjYXVzZSBjcmVhdGVXZWJQ
YWdlLCB3aGljaCB1c3VhbGx5IGJyaW5ncyBpdCB1cCwgaGFzbid0IGhhcHBlbmVkIHlldCksIGFu
ZCB3ZSAKKyAgICAgICAgKGJlY2F1c2UgY3JlYXRlV2ViUGFnZSwgd2hpY2ggdXN1YWxseSBicmlu
Z3MgaXQgdXAsIGhhc24ndCBoYXBwZW5lZCB5ZXQpLCBhbmQgd2UKICAgICAgICAgZHJvcCB0aGUg
bWVzc2FnZSBvbiB0aGUgZmxvb3IgKGFuZCBnZXQgdGhlIGFmb3JlbWVudGlvbmVkIGxvZ2dpbmcp
LgogCiAgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CkBAIC01OTcsOCArNjIx
LDggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCiAKLSAgICAgICAgcmVx
dWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oKSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4cG9zZWQg
YXMgYW4gCi0gICAgICAgIEVkaXRvckNsaWVudCBmdW5jdGlvbi4gV0sxIGNhbiBqdXN0IGNhbGwg
aW52b2tlIHRoaXMgY29kZSBmcm9tIHRoZSBleGlzdGluZyAKKyAgICAgICAgcmVxdWVzdENhbmRp
ZGF0ZXNGb3JTZWxlY3Rpb24oKSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4cG9zZWQgYXMgYW4KKyAg
ICAgICAgRWRpdG9yQ2xpZW50IGZ1bmN0aW9uLiBXSzEgY2FuIGp1c3QgY2FsbCBpbnZva2UgdGhp
cyBjb2RlIGZyb20gdGhlIGV4aXN0aW5nCiAgICAgICAgIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24gRWRpdG9yQ2xpZW50IGZ1bmN0aW9uLCB3aGljaCBpcyB3aGF0IFdLMiBkb2VzLgogICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CiAKQEAgLTYx
MSw5ICs2MzUsOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpIGFuZCBU
aW0gSG9ydG9uLgogCi0gICAgICAgIE1hYyBuZWVkcyB0byBzdXBwb3J0IHBvc3RMYXlvdXREYXRh
IGluIG9yZGVyIHRvIGhhdmUgc29tZSBsYXlvdXQtcmVsYXRlZCAKLSAgICAgICAgZWRpdGluZyBp
bmZvcm1hdGlvbiB0byByZXF1ZXN0IGNhbmRpZGF0ZXMuIFRoaXMgcGF0Y2ggcmUtc2h1ZmZsZXMg
c29tZSBpdGVtcyAKLSAgICAgICAgaW4gdGhlIHN0cnVjdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNo
YXJlZCBieSBNYWMgYW5kIGlPUywgYW5kIGl0IGFkZHMgMyBuZXcgCisgICAgICAgIE1hYyBuZWVk
cyB0byBzdXBwb3J0IHBvc3RMYXlvdXREYXRhIGluIG9yZGVyIHRvIGhhdmUgc29tZSBsYXlvdXQt
cmVsYXRlZAorICAgICAgICBlZGl0aW5nIGluZm9ybWF0aW9uIHRvIHJlcXVlc3QgY2FuZGlkYXRl
cy4gVGhpcyBwYXRjaCByZS1zaHVmZmxlcyBzb21lIGl0ZW1zCisgICAgICAgIGluIHRoZSBzdHJ1
Y3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBzaGFyZWQgYnkgTWFjIGFuZCBpT1MsIGFuZCBpdCBhZGRz
IDMgbmV3CiAgICAgICAgIGl0ZW1zIGZvciBNYWMgb25seS4KICAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgogICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKQEAg
LTYyMiw5ICs2NDYsOSBAQAogICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91
dERhdGE6OmRlY29kZSk6CiAgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CiAKLSAgICAg
ICAgUmVxdWVzdCBhbmQgaGFuZGxlIGNhbmRpZGF0ZXMgaGVyZSBpbiBXZWJWaWV3SW1wbCwgYW5k
IGNhY2hlIHRoZSAKLSAgICAgICAgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVzdCBzbyB0
aGF0IHdlIGNhbiBlbnN1cmUgdGhlIHJlc3VsdHMgd2UgcmVjZWl2ZSAKLSAgICAgICAgd2VyZSBy
ZWNlaXZlZCBpbiBhIHRpbWVseSBlbm91Z2ggbWFubmVyIHRoYXQgdGhleSBhcmUgc3RpbGwgZm9y
IHRoZSBzYW1lIAorICAgICAgICBSZXF1ZXN0IGFuZCBoYW5kbGUgY2FuZGlkYXRlcyBoZXJlIGlu
IFdlYlZpZXdJbXBsLCBhbmQgY2FjaGUgdGhlCisgICAgICAgIG1fbGFzdFN0cmluZ0ZvckNhbmRp
ZGF0ZVJlcXVlc3Qgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZSByZXN1bHRzIHdlIHJlY2VpdmUK
KyAgICAgICAgd2VyZSByZWNlaXZlZCBpbiBhIHRpbWVseSBlbm91Z2ggbWFubmVyIHRoYXQgdGhl
eSBhcmUgc3RpbGwgZm9yIHRoZSBzYW1lCiAgICAgICAgIFN0cmluZy4KICAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKICAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CkBAIC02MzMsMTEgKzY1NywxMSBAQAogICAgICAgICBXaGVuIHNlbGVjdGlv
biBjaGFuZ2VzLCByZXF1ZXN0IG5ldyBjYW5kaWRhdGVzLgogICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb25JZk5lZWRlZCk6CiAKLSAgICAg
ICAgT25jZSBjYW5kaWRhdGVzIGhhdmUgYmVlbiByZWNlaXZlZCwgd2UgYXNrIHRoZSBzaGFyZWRT
cGVsbENoZWNrZXIgdG8gc2hvdyAKKyAgICAgICAgT25jZSBjYW5kaWRhdGVzIGhhdmUgYmVlbiBy
ZWNlaXZlZCwgd2UgYXNrIHRoZSBzaGFyZWRTcGVsbENoZWNrZXIgdG8gc2hvdwogICAgICAgICB0
aGVtLgogICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlUmVxdWVzdGVkQ2FuZGlk
YXRlcyk6CiAKLSAgICAgICAgSWYgYSBjYW5kaWRhdGUgaXMgYWNjZXB0ZWQsIHdlIGFzayB0aGUg
V2ViUHJvY2VzcyB0byBhY2NlcHQgaXQsIHNvIHdlIHN0YXJ0IAorICAgICAgICBJZiBhIGNhbmRp
ZGF0ZSBpcyBhY2NlcHRlZCwgd2UgYXNrIHRoZSBXZWJQcm9jZXNzIHRvIGFjY2VwdCBpdCwgc28g
d2Ugc3RhcnQKICAgICAgICAgYnkgY29udmVydGluZyB0aGUgTlNUZXh0Q2hlY2tpbmdSZXN1bHQg
dG8gYSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQuCiAgICAgICAgIChXZWJLaXQ6OnRleHRD
aGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdCk6CiAgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6CkBAIC02NTAsNyArNjc0LDcg
QEAKICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6IGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToK
ICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKIAotICAg
ICAgICBOb3cgdGhhdCBNYWMgaGFzIHNvbWUgcG9zdExheW91dERhdGEgaW4gdGhlIEVkaXRvclN0
YXRlLCBmaWxsIHRoYXQgaW4gaW4gCisgICAgICAgIE5vdyB0aGF0IE1hYyBoYXMgc29tZSBwb3N0
TGF5b3V0RGF0YSBpbiB0aGUgRWRpdG9yU3RhdGUsIGZpbGwgdGhhdCBpbiBpbgogICAgICAgICBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkuCiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgogICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlKToKQEAgLTcwMSw3ICs3MjUsNyBAQAogICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sIGlu
aXRXaXRoUmVxdWVzdDpjYWNoZWRSZXNwb25zZTpjbGllbnQ6XSk6CiAgICAgICAgICgtW1dLQ3Vz
dG9tUHJvdG9jb2wgc3RhcnRMb2FkaW5nXSk6CiAgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wg
c3RvcExvYWRpbmddKToKLSAgICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBzdGF0aWMg
cG9pbnRlciB3aGVuIHdlIGNhbiB1c2UgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbiB0byBhY2Nl
c3MgCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBoYXZlIGEgc3RhdGljIHBvaW50ZXIgd2hl
biB3ZSBjYW4gdXNlIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24gdG8gYWNjZXNzCiAgICAgICAg
IHRoZSBwcm9jZXNzLWdsb2JhbCBDdXN0b21Qcm90b2NvbE1hbmFnZXIsIGFuZCBhZGQgbnVsbCBj
aGVja3MgYmVjYXVzZSB0aGF0J3MgYSBnb29kIHRoaW5nIHRvIGRvLgogICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CiAgICAgICAg
IENhbGwgVVRGOEVuY29kaW5nIHdoZW4gY3JlYXRpbmcgdGhlIEN1c3RvbVByb3RvY29sTWFuYWdl
ciBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIGl0IGV4aXN0cwpAQCAtNzI1LDkgKzc0
OSw5IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRW5yaWNhIENhc3VjY2kuCiAKLSAgICAgICAg
TWFjIG5lZWRzIHRvIHN1cHBvcnQgcG9zdExheW91dERhdGEgaW4gb3JkZXIgdG8gaGF2ZSBzb21l
IGxheW91dC1yZWxhdGVkIAotICAgICAgICBlZGl0aW5nIGluZm9ybWF0aW9uIHRvIHJlcXVlc3Qg
Y2FuZGlkYXRlcy4gVGhpcyBwYXRjaCByZS1zaHVmZmxlcyBzb21lIGl0ZW1zIAotICAgICAgICBp
biB0aGUgc3RydWN0IHNvIHRoYXQgdGhleSBjYW4gYmUgc2hhcmVkIGJ5IE1hYyBhbmQgaU9TLCBh
bmQgaXQgYWRkcyAzIG5ldyAKKyAgICAgICAgTWFjIG5lZWRzIHRvIHN1cHBvcnQgcG9zdExheW91
dERhdGEgaW4gb3JkZXIgdG8gaGF2ZSBzb21lIGxheW91dC1yZWxhdGVkCisgICAgICAgIGVkaXRp
bmcgaW5mb3JtYXRpb24gdG8gcmVxdWVzdCBjYW5kaWRhdGVzLiBUaGlzIHBhdGNoIHJlLXNodWZm
bGVzIHNvbWUgaXRlbXMKKyAgICAgICAgaW4gdGhlIHN0cnVjdCBzbyB0aGF0IHRoZXkgY2FuIGJl
IHNoYXJlZCBieSBNYWMgYW5kIGlPUywgYW5kIGl0IGFkZHMgMyBuZXcKICAgICAgICAgaXRlbXMg
Zm9yIE1hYyBvbmx5LgogICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CiAgICAgICAg
IChXZWJLaXQ6OkVkaXRvclN0YXRlOjplbmNvZGUpOgpAQCAtNzM2LDkgKzc2MCw5IEBACiAgICAg
ICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKToKICAgICAg
ICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKIAotICAgICAgICBSZXF1ZXN0IGFuZCBoYW5kbGUg
Y2FuZGlkYXRlcyBoZXJlIGluIFdlYlZpZXdJbXBsLCBhbmQgY2FjaGUgdGhlIAotICAgICAgICBt
X2xhc3RTdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGUg
cmVzdWx0cyB3ZSByZWNlaXZlIAotICAgICAgICB3ZXJlIHJlY2VpdmVkIGluIGEgdGltZWx5IGVu
b3VnaCBtYW5uZXIgdGhhdCB0aGV5IGFyZSBzdGlsbCBmb3IgdGhlIHNhbWUgCisgICAgICAgIFJl
cXVlc3QgYW5kIGhhbmRsZSBjYW5kaWRhdGVzIGhlcmUgaW4gV2ViVmlld0ltcGwsIGFuZCBjYWNo
ZSB0aGUKKyAgICAgICAgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVzdCBzbyB0aGF0IHdl
IGNhbiBlbnN1cmUgdGhlIHJlc3VsdHMgd2UgcmVjZWl2ZQorICAgICAgICB3ZXJlIHJlY2VpdmVk
IGluIGEgdGltZWx5IGVub3VnaCBtYW5uZXIgdGhhdCB0aGV5IGFyZSBzdGlsbCBmb3IgdGhlIHNh
bWUKICAgICAgICAgU3RyaW5nLgogICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgogICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKQEAgLTc0Nywx
MSArNzcxLDExIEBACiAgICAgICAgIFdoZW4gc2VsZWN0aW9uIGNoYW5nZXMsIHJlcXVlc3QgbmV3
IGNhbmRpZGF0ZXMuCiAgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbklmTmVlZGVkKToKIAotICAgICAgICBPbmNlIGNhbmRpZGF0ZXMgaGF2
ZSBiZWVuIHJlY2VpdmVkLCB3ZSBhc2sgdGhlIHNoYXJlZFNwZWxsQ2hlY2tlciB0byBzaG93IAor
ICAgICAgICBPbmNlIGNhbmRpZGF0ZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLCB3ZSBhc2sgdGhlIHNo
YXJlZFNwZWxsQ2hlY2tlciB0byBzaG93CiAgICAgICAgIHRoZW0uCiAgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpoYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKToKIAotICAgICAgICBJZiBh
IGNhbmRpZGF0ZSBpcyBhY2NlcHRlZCwgd2UgYXNrIHRoZSBXZWJQcm9jZXNzIHRvIGFjY2VwdCBp
dCwgc28gd2Ugc3RhcnQgCisgICAgICAgIElmIGEgY2FuZGlkYXRlIGlzIGFjY2VwdGVkLCB3ZSBh
c2sgdGhlIFdlYlByb2Nlc3MgdG8gYWNjZXB0IGl0LCBzbyB3ZSBzdGFydAogICAgICAgICBieSBj
b252ZXJ0aW5nIHRoZSBOU1RleHRDaGVja2luZ1Jlc3VsdCB0byBhIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1Jlc3VsdC4KICAgICAgICAgKFdlYktpdDo6dGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4
dENoZWNraW5nUmVzdWx0KToKICAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlKToKQEAgLTc2NCw3ICs3ODgsNyBAQAogICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjogaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUpOgogICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgogCi0gICAgICAgIE5vdyB0aGF0IE1hYyBoYXMg
c29tZSBwb3N0TGF5b3V0RGF0YSBpbiB0aGUgRWRpdG9yU3RhdGUsIGZpbGwgdGhhdCBpbiBpbiAK
KyAgICAgICAgTm93IHRoYXQgTWFjIGhhcyBzb21lIHBvc3RMYXlvdXREYXRhIGluIHRoZSBFZGl0
b3JTdGF0ZSwgZmlsbCB0aGF0IGluIGluCiAgICAgICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoKS4K
ICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CiAgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUpOgpAQCAtMTE2OCw3ICsxMTky
LDcgQEAKICAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNldFBlbmRpbmdEb3dubG9hZCk6
CiAgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bik6CiAgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgotICAgICAgICBJZiB0aGlzIGxvYWQgaXMgZ29pbmcg
dG8gYmVjb21lIGEgZG93bmxvYWQsIHRoZW4gY2FsbCB0aGUgUGVuZGluZ0Rvd25sb2FkIHZlcnNp
b24gb2YgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIGNvbW11bmljYXRlIHdp
dGggdGhlIAorICAgICAgICBJZiB0aGlzIGxvYWQgaXMgZ29pbmcgdG8gYmVjb21lIGEgZG93bmxv
YWQsIHRoZW4gY2FsbCB0aGUgUGVuZGluZ0Rvd25sb2FkIHZlcnNpb24gb2YgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlCiAgICAgICAgIFVJ
IHByb2Nlc3MgZGlyZWN0bHkgYmVjYXVzZSB0aGVyZSB3YXNuJ3QgbmVjZXNzYXJpbHkgYSB3ZWIg
cHJvY2VzcyBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IHRoYXQgd2lsbCBiZWNvbWUgYSBk
b3dubG9hZC4KICAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgogICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25sb2FkSUQpOgpAQCAtMTE5NSw3ICsx
MjE5LDcgQEAKICAgICAgICAgcmRhcjovL3Byb2JsZW0vMjM3MjgyOTkKIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgotICAgICAgICAKKwogICAgICAgICBDaG9vc2UgYW4gYXBwcm9w
cmlhdGUgYnVmZmVyIGZvcm1hdCBmb3Igc3dpcGUgc25hcHNob3RzLCBhbmQgYXZvaWQgY29udmVy
dGluZwogICAgICAgICB0aGVtIHRvIFlVVjQyMi4KIApAQCAtMTIyMSw3ICsxMjQ1LDcgQEAKICAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKICAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKICAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKLSAgICAgICAgQ3JlYXRlIGEg
UGVuZGluZ0Rvd25sb2FkLCB3aGljaCBpcyBiYXNpY2FsbHkgYSBOZXR3b3JrTG9hZCB0aGF0IGtu
b3dzIHRoYXQgaXQgd2lsbCBiZWNvbWUgYSBEb3dubG9hZCAKKyAgICAgICAgQ3JlYXRlIGEgUGVu
ZGluZ0Rvd25sb2FkLCB3aGljaCBpcyBiYXNpY2FsbHkgYSBOZXR3b3JrTG9hZCB0aGF0IGtub3dz
IHRoYXQgaXQgd2lsbCBiZWNvbWUgYSBEb3dubG9hZAogICAgICAgICB3aGVuIHRoZSByZXNwb25z
ZSBpcyByZWNlaXZlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBpcyBhIENv
bnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyLgogICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKToKICAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CkBAIC0xMjQwLDcgKzEyNjQsNyBAQAogICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tUb0Rvd25sb2FkKToKICAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNldFBlbmRpbmdEb3dubG9hZElEKToKICAgICAgICAg
QWRkZWQgZm9yIGRvd25sb2FkcyB0aGF0IHN0YXJ0IHdpdGggc3RhcnREb3dubG9hZC4gIFRoZSBw
ZW5kaW5nIERvd25sb2FkSUQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0Ci0gICAgICAgIHRoaXMg
cmVxdWVzdCBzaG91bGQgYWx3YXlzIGJlY29tZSBhIGRvd25sb2FkLCByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgb3Igbm90IHRoZSByZXNwb25zZSBoYXMgYSAKKyAgICAgICAgdGhpcyByZXF1ZXN0IHNo
b3VsZCBhbHdheXMgYmVjb21lIGEgZG93bmxvYWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBu
b3QgdGhlIHJlc3BvbnNlIGhhcyBhCiAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVy
LgogICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24pOgogICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
QEAgLTEyNTcsNyArMTI4MSw3IEBACiAgICAgICAgIHRoYXQgd2lsbCBoYXBwZW4gb25jZSB0aGUg
cmVzcG9uc2UgaXMgcmVjZWl2ZWQgYW5kIFBvbGljeURvd25sb2FkIHdpbGwgYmUgcmV0dXJuZWQg
aW4gdGhlIGNvbXBsZXRpb24gaGFuZGxlci4KICAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgogICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRCZWNvbWVEb3dubG9hZFRhc2s6XSk6Ci0gICAg
ICAgIENhbGwgZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sgYWZ0ZXIgZGlkQmVjb21lRG93bmxv
YWQgYmVjYXVzZSB0aGUgbmV0d29ya0RhdGFUYXNrIGlzIGRlbGV0ZWQgYnkgcmVtb3ZpbmcgaXQg
CisgICAgICAgIENhbGwgZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sgYWZ0ZXIgZGlkQmVjb21l
RG93bmxvYWQgYmVjYXVzZSB0aGUgbmV0d29ya0RhdGFUYXNrIGlzIGRlbGV0ZWQgYnkgcmVtb3Zp
bmcgaXQKICAgICAgICAgZnJvbSBtX3BlbmRpbmdEb3dubG9hZHMgaW4gZGF0YVRhc2tCZWNhbWVE
b3dubG9hZFRhc2suCiAKIDIwMTYtMDEtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CkBAIC0xMjY2LDcgKzEyOTAsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODA3CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWmFs
YW4gQnVqdGFzLgotICAgICAgICAKKwogICAgICAgICBXSzIgZGVidWcgcHJlZiBmb3IgZGlzcGxh
eS1saXN0IGRyYXdpbmcsIGRlZmF1bHRzIHRvIG9mZi4KIAogICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmg6CkBAIC0xMjk4LDcgKzEzMjIsNyBAQAogICAgICAgICBZ
b3UgY2FuJ3QgYXNzdW1lIHRoYXQgaWYgYW4gYXV0aG9yIHVzZXMgb3ZlcmZsb3c6aGlkZGVuIG9u
IHRoZSBib2R5LCB0aGV5IGhhdmUgbm8KICAgICAgICAgY29udGVudCBvdXRzaWRlIHRoZSBib2R5
IHRoYXQgaXMgaW1wb3J0YW50LiBTaXRlcyBsaWtlIEdvb2dsZSBUcmFuc2xhdGUgcHV0CiAgICAg
ICAgIGFic3BvcyBlbGVtZW50cyBvdXRzaWRlIHRoZSBib2R5LgotICAgICAgICAKKwogICAgICAg
ICBTbyByZXZlcnQgdGhlIGNoYW5nZS4KIAogICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKQEAgLTE1MTksOCArMTU0Myw4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5keSBFc3Rlcy4KIAotICAgICAgICBUaGVyZSBpcyBubyByZWFzb24gdG8gaGF2ZSBhIE5ldHdv
cmtTZXNzaW9uVGFza0NsaWVudCogaW5zdGVhZCBvZiBhIAotICAgICAgICBOZXR3b3JrU2Vzc2lv
blRhc2tDbGllbnQmIGp1c3Qgc28gd2UgY2FuIGNsZWFyIGl0IGluIHRoZSBOZXR3b3JrTG9hZCBk
ZXN0cnVjdG9yLCAKKyAgICAgICAgVGhlcmUgaXMgbm8gcmVhc29uIHRvIGhhdmUgYSBOZXR3b3Jr
U2Vzc2lvblRhc2tDbGllbnQqIGluc3RlYWQgb2YgYQorICAgICAgICBOZXR3b3JrU2Vzc2lvblRh
c2tDbGllbnQmIGp1c3Qgc28gd2UgY2FuIGNsZWFyIGl0IGluIHRoZSBOZXR3b3JrTG9hZCBkZXN0
cnVjdG9yLAogICAgICAgICB3aGljaCBpbW1lZGlhdGVseSBjYWxscyB+TmV0d29ya0RhdGFUYXNr
LgogICAgICAgICBBbHNvLCBOZXR3b3JrRGF0YVRhc2tzIGFyZSBvd25lZCBvbmx5IGJ5IHRoZSBO
ZXR3b3JrTG9hZCwgc28gdGhlcmUncyBubyByZWFzb24gdG8gcmVmY291bnQgdGhlbS4KIApAQCAt
MTU4NSw3ICsxNjA5LDcgQEAKIAogICAgICAgICBXaGVuIHVzaW5nIE5TVVJMU2Vzc2lvbiwgYSBk
YXRhIHRhc2sgaXMgY29udmVydGVkIHRvIGEgZG93bmxvYWQgdGFzayBhZnRlciB0aGUgY29ubmVj
dGlvbiBoYXMgYWxyZWFkeQogICAgICAgICBiZWVuIGVzdGFibGlzaGVkLCB0aGUgaGVhZGVycyBo
YXZlIGJlZW4gcmVjZWl2ZWQsIGFuZCBXZWJDb3JlIGxvb2tzIGF0IHRoZSByZXNwb25zZSBhbmQg
ZGVjaWRlcyB0aGF0Ci0gICAgICAgIHRoaXMgY29ubmVjdGlvbiBzaG91bGQgYmVjb21lIGEgZG93
bmxvYWQuICBXZSBjYWxsIHRoZSBkaWRSZWNlaXZlUmVzcG9uc2UgdG8gbWF0Y2ggdGhlIGJlaGF2
aW9yIG9mIAorICAgICAgICB0aGlzIGNvbm5lY3Rpb24gc2hvdWxkIGJlY29tZSBhIGRvd25sb2Fk
LiAgV2UgY2FsbCB0aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBv
ZgogICAgICAgICBOU1VSTERvd25sb2FkLCBidXQgdGhpcyBjb3VsZCBiZSBjbGVhbmVkIHVwIGxh
dGVyIHRvIG1hdGNoIHdoYXQgaXMgYWN0dWFsbHkgaGFwcGVuaW5nLiAgV2UgYWxzbyBkbyBub3QK
ICAgICAgICAgbmVlZCB0byB0ZWxsIHRoZSBkb3dubG9hZCB0byBzdGFydCBiZWNhdXNlIGl0IGhh
cyBhbHJlYWR5IHN0YXJ0ZWQuCiAKQEAgLTI1MzYsOSArMjU2MCw5IEBACiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2NDYKIAogICAgICAgICBSZXZp
ZXdlZCBieSBaYWxhbiBCdWp0YXMuCi0gICAgICAgIAorCiAgICAgICAgIEhpc3RvcnlJdGVtIHN0
b3JlcyBhIHNjcm9sbFBvc2l0aW9uLCBzbyBjYWxsIGl0IHRoYXQuCi0gICAgICAgIAorCiAgICAg
ICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KIAogICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUu
Y3BwOgpAQCAtMjU2MiwyMCArMjU4NiwyMCBAQAogICAgICAgICBSZWxvYWRpbmcgYSBsZWZ0LXNj
cm9sbGVkIFJUTCBkb2N1bWVudCB3b3VsZCBjYXVzZSB0aGUgY29udGVudCB0byBhcHBlYXIKICAg
ICAgICAgYXQgYW4gb2RkIG9mZnNldCwgYW5kIHByb2dyYW1tYXRpYyBzaWRld2F5cyBzY3JvbGxz
IGluIFJUTCBkb2N1bWVudHMgYWxzbwogICAgICAgICBqdW1wZWQgdG8gdGhlIHdyb25nIGxvY2F0
aW9uLgotICAgICAgICAKKwogICAgICAgICBGaXggYnkgcmVzb2x2aW5nIG9mZnNldC9wb3NpdGlv
biBjb25mdXNpb24gaW4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpCiAg
ICAgICAgIGFuZCB0aGUgc2Nyb2xsaW5nIHRyZWUuCi0gICAgICAgIAorCiAgICAgICAgIFNjcm9s
bGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKSB3YXMgZXJyb25lb3VzbHkgcGFzc2lu
ZyBhIHNjcm9sbFBvc2l0aW9uCi0gICAgICAgIHRvIHNldFNjcm9sbE9mZnNldCgpLiAKLSAgICAg
ICAgCisgICAgICAgIHRvIHNldFNjcm9sbE9mZnNldCgpLgorCiAgICAgICAgIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGUqIHdlcmUgY29uZnVzZWQgYWJvdXQgb2Zmc2V0cyBhbmQgcG9z
aXRpb25zLiBJdAogICAgICAgICB0dXJucyBvdXQgdGhhdCB0aGUgbGF5ZXIgcG9zaXRpb24gaXMg
anVzdCAtc2Nyb2xsUG9zaXRpb24sIGJ1dCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKQogICAgICAg
ICBhbmQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgbmVlZCBmaXhpbmcgdG8gcmV0dXJuIHBvc2l0
aW9ucywgbm90IG9mZnNldHMuCi0gICAgICAgIAorCiAgICAgICAgIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGU6OnZpZXdUb0NvbnRlbnRzT2Zmc2V0KCkgd2FzIGFsc28gZG9pbmcgaW5j
b3JyZWN0CiAgICAgICAgIG1hdGggd2l0aCBzY3JvbGxPcmlnaW4sIHdoaWNoIHdhcyBkZXRlY3Rl
ZCBieSBhIGZhaWxpbmcgdGVzdC4KLSAgICAgICAgCisKICAgICAgICAgQWRkIG1vcmUgbG9nZ2lu
ZyB0byB0aGUgU2Nyb2xsaW5nIGNoYW5uZWwuCiAKICAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4uaDoKQEAgLTI2NDUsNyArMjY2OSw3IEBACiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2MzAKIAogICAg
ICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCi0gICAgICAgIAorCiAgICAgICAgIFdlYlBh
Z2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoKSB3YXMgc2V0dGluZyB0aGUgU2Nyb2xsVmll
dydzIHNjcm9sbCBwb3NpdGlvbgogICAgICAgICB0byBhIHNjcm9sbE9mZnNldCwgd2hpY2ggd2Fz
IGNvdW50ZXJhY3RlZCBieSBTY3JvbGxWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QoKQogICAg
ICAgICBhZGRpbmcgdGhlIHNjcm9sbE9yaWdpbiB0byB0aGUgc2Nyb2xsUG9zaXRpb24sIHdoaWNo
IHJlc3VsdGVkIGluIHRoZSBjb3JyZWN0CkBAIC0yNzI3LDEzICsyNzUxLDEzIEBACiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCiAKICAgICAgICAgQ3VycmVudCBjb2RlIHVzZXMgc2Ny
b2xsT2Zmc2V0IHZzLiBzY3JvbGxQb3NpdGlvbiBpbnRlcmNoYW5nZWFibHksIGFuZCBjb25mdXNp
bmdseS4KLSAgICAgICAgTG9uZ2VyIHRlcm0sIEkgcGxhbiB0byBtYWtlICJzY3JvbGxQb3NpdGlv
biIgYmUgdGhlIHZhbHVlIHRoYXQgaXMgcmVsYXRpdmUgdG8gdGhlIAorICAgICAgICBMb25nZXIg
dGVybSwgSSBwbGFuIHRvIG1ha2UgInNjcm9sbFBvc2l0aW9uIiBiZSB0aGUgdmFsdWUgdGhhdCBp
cyByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgY29udGVudHMsIGkuZS4gYWZmZWN0ZWQgYnkgc2Ny
b2xsT3JpZ2luLCBhbmQgInNjcm9sbE9mZnNldCIgYmUgdGhlIHplcm8tYmFzZWQgdmFsdWUKICAg
ICAgICAgdGhhdCdzIHVzZWQgdG8gc2V0IHNjcm9sbGJhciB2YWx1ZXMuCi0gICAgICAgIAorCiAg
ICAgICAgIFRvIHByZXBhcmUgZm9yIHRoaXMsIHJlbW92ZSBTY3JvbGxWaWV3OjpzY3JvbGxPZmZz
ZXQoKSwgd2hpY2ggaXMganVzdCB0aGUKICAgICAgICAgc2Nyb2xsUG9zaXRpb24gYXMgYW4gSW50
U2l6ZS4KLSAgICAgICAgCisKICAgICAgICAgQWRkIHNvbWUgdHlwZWRlZnMgaW4gU2Nyb2xsYWJs
ZUFyZWEsIHdoaWNoIHdpbGwgc2xvd2x5IHByb3BhZ2F0ZSB0aHJvdWdoIHRoZQogICAgICAgICBj
b2RlIGFzIHBvc2l0aW9uIHZzLiBvZmZzZXQgaXMgY2xhcmlmaWVkLgogCkBAIC0yODY2LDcgKzI4
OTAsNyBAQAogICAgICAgICBUaGUgJ2dldFdlYlZpc2libGVQbHVnaW5JbmZvJyBpcyBmaWx0ZXJp
bmcgcGx1Z2lucywgZXZlbiB3aGVuIHdlIHdhbnQgdG8gbGlzdAogICAgICAgICBhbGwgcGx1Z2lu
cy4gVG8gYXZvaWQgdGhpcywgd2UgY2hlY2sgdGhlIERvY3VtZW50J3MgU2VjdXJpdHlPcmlnaW4u
IElmIG5vIHN1Y2gKICAgICAgICAgb3JpZ2luIGV4aXN0cywgd2UgY29uc3RydWN0IGEgU2VjdXJp
dHlPcmlnaW4gZnJvbSB0aGUgVVJMLgotICAgICAgICAKKwogICAgICAgICBJZiB0aGUgcmVsZXZh
bnQgU2VjdXJpdHlPcmlnaW4gc2F0c2lmaWVzICdpc0xvY2FsJywgd2Ugc2hvdyBhbGwgcGx1Z2lu
cy4KIAogICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcDoKQEAgLTM2NTEsMTAgKzM2NzUsMTAgQEAKICAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMjM4MTgxMDIKIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgotICAgICAgICAK
KwogICAgICAgICBQbHVtYiB0aHJvdWdoIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0
aGUgV0tXZWJWaWV3IGlzIGluIHNwbGl0IHNjcmVlbiwKICAgICAgICAgYW5kIHVzZSBpdCB0byBj
b25kaXRpb25hbGx5IGVuYWJsZSBzaHJpbmstdG8tZml0IG1vZGUgb25seSBpbiBzcGxpdCBzY3Jl
ZW4uCi0gICAgICAgIAorCiAgICAgICAgICogU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8uY3BwOiBBZGRlZCBtX2FsbG93U2hyaW5rVG9GaXQsIGFuZCBzb3J0CiAgICAgICAgIHRo
ZSBtZW1iZXIgdmFyaWFibGVzLCBhbmQgZW5jb2Rpbmcgb3JkZXIsIHRvIG9wdGltaXplIHBhY2tp
bmcsIHdpdGggc29tZSBpbml0aWFsaXplcnMuCiAgICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm86OmVuY29kZSk6CkBAIC0zNzk4LDcgKzM4MjIsNyBAQAogICAgICAg
ICBSZXBsYWNlIGNvZGUgdGhhdCBjaGVja3MgZm9yIGlzT3ZlcmxheVNjcm9sbGJhcigpIGV4cGxp
Y2l0bHkgd2l0aCBjYWxscyB0byBuZXcKICAgICAgICAgb2NjdXBpZWRXaWR0aCgpL29jY3VwaWVk
SGVpZ2h0KCkgZnVuY3Rpb25zIG9uIFNjcm9sbGJhciwgd2hpY2ggZG8gdGhlIG92ZXJsYXkKICAg
ICAgICAgc2Nyb2xsYmFyIGNoZWNrIGludGVybmFsbHkuCi0gICAgICAgIAorCiAgICAgICAgIEFk
ZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsYmFySW50cnVzaW9uKCkgd2hpY2ggcmV0dXJucyBhbiBJ
bnRTaXplIHdpdGggdGhlIG9jY3VwaWVkV2lkdGgKICAgICAgICAgYW5kIG9jY3VwaWVkSGVpZ2h0
IG9mIGFueSBzY3JvbGxiYXJzLCBhbmQgdXNlIGl0IGluIGEgZmV3IHBsYWNlcy4KIApAQCAtMzgx
Miw3ICszODM2LDcgQEAKIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBKb3NlcGggUGVjb3Jh
cm8uCiAKLSAgICAgICAgUmVuYW1lZCBOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIHRvIFdLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSB0byBjb25mb3JtIHRvIHRoZSAKKyAgICAgICAgUmVuYW1lZCBOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIHRvIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSB0byBjb25mb3Jt
IHRvIHRoZQogICAgICAgICBuZXdseS1lbmZvcmNlZCBzdHlsZSBydWxlIGluIGNoZWNrLWZvci1p
bmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMuCiAKICAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oOgpAQCAtMzk4Miw3ICs0MDA2LDcgQEAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI4MwogCiAgICAgICAgIFJldmll
d2VkIGJ5IERlYW4gSmFja3Nvbi4KLSAgICAgICAgCisKICAgICAgICAgRHVtcCBzb21lIHNjYWxl
IGZhY3RvcnMsIHZpZXdwb3J0IG1ldGEgdGFnIHdpZHRoIGFuZCByZW5kZXIgdHJlZSBzaXplLgog
CiAgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKQEAg
LTQwMjQsNyArNDA0OCw3IEBACiAgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIzODYwNjI0CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0gICAgICAgIAorCiAgICAgICAgIFRoaXMg
Zml4ZXMgaHR0cC90ZXN0cy9jb29raWVzL3NldC1jb29raWUtb24tcmVkaXJlY3QuaHRtbCB3aGVu
IHVzaW5nIE5FVFdPUktfU0VTU0lPTi4KIAogICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcDoKQEAgLTQyNDAsNyArNDI2NCw3IEBACiAgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2spOiBOZXcsIHN0YXJ0IHRoZSByZXF1ZXN0LgogICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6
IE5ldywgY2FuY2VsCiAgICAgICAgICAgdGhlIHJlcXVlc3QuCi0gICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2spOiBOZXcsIAorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKTogTmV3
LAogICAgICAgICAgIGFsbCB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIG1ldGhvZC4KICAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3Qp
OiBEZWxldGVkLgogICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmNhbmNlbFJlcXVlc3QpOiBEZWxldGVkLgpAQCAtNDk1Miw3ICs0OTc2LDcgQEAKIAog
MjAxNS0xMi0wNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKLSAgICAgICAgQ3Jh
c2ggaW4gY2xpZW50cyB1c2luZyB1c2VyRGF0YSBpbiAKKyAgICAgICAgQ3Jhc2ggaW4gY2xpZW50
cyB1c2luZyB1c2VyRGF0YSBpbgogICAgICAgICBfaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29u
dHJvbGxlckZvckhpdFRlc3RSZXN1bHQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTg4NwogCkBAIC00OTY0LDcgKzQ5ODgsNyBAQAogCiAyMDE1LTEy
LTA0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAotICAgICAgICBDcmFzaCBpbiBj
bGllbnRzIHVzaW5nIHVzZXJEYXRhIGluIAorICAgICAgICBDcmFzaCBpbiBjbGllbnRzIHVzaW5n
IHVzZXJEYXRhIGluCiAgICAgICAgIF9pbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
Rm9ySGl0VGVzdFJlc3VsdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxODg3CiAKQEAgLTUyNDgsNyArNTI3Miw3IEBACiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQ2hyaXMgRHVtZXouCiAKLSAgICAgICAgSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDk2OCBJIGNvcGllZCBmdW5jdGlvbmFsaXR5IGZyb20gCisgICAg
ICAgIEluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5NjggSSBj
b3BpZWQgZnVuY3Rpb25hbGl0eSBmcm9tCiAgICAgICAgIE5ldHdvcmtMb2FkOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMgaW50byBOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZQogICAgICAgICBidXQgSSBvdmVybG9va2VkIHRoZSBjYWxsIHRvIG1fY2xp
ZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyB3aGljaCBpcyBu
ZWVkZWQKICAgICAgICAgaWYgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gaXMg
dHJ1ZS4gIFRoaXMgYWRkcyB0aGF0IGNhbGwgYW5kIG1vdmVzIHdoYXQgc2hvdWxkIGhhcHBlbgpA
QCAtNTk0MSw3ICs1OTY1LDcgQEAKICAgICAgICAgTG9va2luZyBhdCBhbGxvY2F0aW9uIHRyYWNl
cyBJIG5vdGljZWQgdGhhdCB3ZSB3ZXJlIG1ha2luZyB3YXkgbW9yZQogICAgICAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9ucyB0aGFuIG1hZGUgc2Vuc2U7IGxvb2tpbmcgYXQgYmFja3RyYWNlcyBJ
IGZvdW5kCiAgICAgICAgIGEgZmV3IGludGVybmFsIGNhbGxlcnMgb2YgLVtXS1dlYlZpZXcgY29u
ZmlndXJhdGlvbl0sIHdoaWNoIGNvcGllcyB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbi4gVGhl
cmUncyBubyByZWFzb24gZm9yIHRoZXNlIGludGVybmFsIGNhbGxlcnMgdG8gbWFrZSAKKyAgICAg
ICAgY29uZmlndXJhdGlvbi4gVGhlcmUncyBubyByZWFzb24gZm9yIHRoZXNlIGludGVybmFsIGNh
bGxlcnMgdG8gbWFrZQogICAgICAgICBzdWNoIGEgY29weSwgdGhvdWdoLgogCiAgICAgICAgIEkn
bSBub3QgZXhhY3RseSBzdXJlIHdoYXQgdGhlIHVzdWFsIGFwcHJvYWNoIGlzIGhlcmUsIGJ1dCBJ
IGFkZGVkCkBAIC01OTU4LDE3ICs1OTgyLDE3IEBACiAgICAgICAgICogRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CiAgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKToKICAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmg6Ci0gICAgICAgIAorCiAg
ICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZS5oOgotICAgICAgICAKKwogICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcDoKICAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdldEluZGV4
UmVjb3JkKToKLSAgICAgICAgCisKICAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKICAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJREJHZXRSZXN1bHQ+OjplbmNv
ZGUpOgogICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPElEQkdldFJlc3VsdD46OmRlY29kZSk6
CiAgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgotICAgICAgICAKKwog
ICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgogCiAyMDE1LTExLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktp
dC5oCmluZGV4IGMzZDdmMTU0MTVmMDU3YTgxNWFhNGI2OTAyMDI5ZTJiYTZkMTUzMjUuLjdjYjEy
MWYyNmM5ZDczYTM5NDI2N2M3NWE5ZGFkMmZhNzJiNTY1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViS2l0
L1dLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdC5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlldy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggZDUyM2UzYzFkNDViM2YwNTIzZWM2NDA2Mzc4ODY5
NTAzOTYxNDYxNC4uZjk1YzU5YjVkOGQxZGFjNWEwYmY0MzExYjYxZjYxMjlmZjcwZGE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZS5o
CkBAIC0zNSw2ICszNSwyNSBAQCBXS19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLTmF2
aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogQGNsYXNzIFdL
V2luZG93RmVhdHVyZXM7CitAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLVUlPcGVuUGFuZWxQ
YXJhbWV0ZXJzOworCisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIgcHJvdmlkZXMgbWV0aG9kcworZm9yIGludGVyYWN0aW5nIHdpdGggZmlsZXMuCisq
LworQHByb3RvY29sIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPE5TT2JqZWN0PgorCisvKiEg
QGFic3RyYWN0IHBhc3NlcyBhbiBhcnJheSBvZiBmaWxlIHVybHMgdG8gdGhlIHdlYiB2aWV3Lgor
IEBwYXJhbSBmaWxlVVJMcyBUaGUgYXJyYXkgb2YgZmlsZSB1cmxzIHRvIHBhc3MgdG8gdGhlIHdl
YiB2aWV3LgorIEBkaXNjdXNzaW9uIHBhc3NpbmcgbmlsLCBvciBhbiBlbXB0eSBhcnJheSB3aWxs
IGhhdmUgdGhlIGVmZmVjdCBvZiBjYWxsaW5nIHRoZSBjYW5jZWwgc2VsZWN0b3IuCisgKi8KKy0g
KHZvaWQpY2hvb3NlRmlsZXM6KE5TQXJyYXkgKilmaWxlVVJMczsKKworLyohIEBhYnN0cmFjdCBD
YW5jZWxzIGEgZmlsZSBvcGVuIGludGVyYWN0aW9uIGluIHByb2dyZXNzLgorICovCistICh2b2lk
KWNhbmNlbDsKKworQGVuZAogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS1VJRGVs
ZWdhdGUgcHJvdG9jb2wgcHJvdmlkZXMgbWV0aG9kcyBmb3IKICBwcmVzZW50aW5nIG5hdGl2ZSBV
SSBvbiBiZWhhbGYgb2YgYSB3ZWJwYWdlLgpAQCAtMTE0LDYgKzEzMywxNiBAQCBXS19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQg
ZGVmYXVsdFRleHQ6KFdLX05VTExBQkxFIE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVk
QnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKiBXS19OVUxMQUJMRV9TUEVDSUZJRVIgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cjsKIAorLyohIEBhYnN0cmFjdCBEaXNwbGF5cyBhIGZpbGUgb3BlbiBwYW5lbC4KKyBAcGFyYW0g
d2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyBAcGFy
YW0gbGlzdGVuZXIgVGhlIGxpc3RlbmVyIG9iamVjdCB0byBiZSBjYWxsZWQgd2hlbiBzZWxlY3Rp
b24gaGFzIGNvbXBsZXRlZAorIG9yIGNhbmNlbGxlZC4KKyBAcGFyYW0gcGFyYW1ldGVycyBQYXJh
bWV0ZXJzIHRvIGNvbmZpZ3VyZSB0aGUgb3BlbiBwYW5lbCB3aXRoIGFzIHNwZWNpZmljZWQgYnkg
dGhlIHdlYnBhZ2UuCisKKyBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhl
IHdlYiB2aWV3IHdpbGwgYmVoYXZlIGFzIGlmIHRoZSB1c2VyIHNlbGVjdGVkIHRoZSBDYW5jZWwg
YnV0dG9uLgorICovCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3Bl
blBhbmVsV2l0aFJlc3VsdExpc3RlbmVyOihpZCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4p
bGlzdGVuZXIgcGFyYW1ldGVyczooV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJz
OworCiBAZW5kCiAKIFdLX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhYzQ5OTIxMGQzMDk3ZmYzZjJmODdjYzkxYjY5ZWJiNjgxMGEyNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlP
cGVuUGFuZWxQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBCcmlhbiBNaWNoZWwgKGJyaWFuLm1pY2hlbEBnbWFpbC5jb20pLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KworLyohIEEgY2xhc3MgdG8gcGFzcyBjb25maWd1cmF0aW9uIGZsYWdzIHRvIGFuIG9wZW4gcGFu
ZWwgYmFzZWQgb24gb3B0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIHdlYnBhZ2UuCisgKi8KK0BpbnRl
cmZhY2UgV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMgOiBOU09iamVjdAorCisvKiEgQGFic3RyYWN0
IFdoZXRoZXIgb3Igbm90IG11bHRpcGxlIGZpbGVzIGFyZSBhbGxvd2VkLgorICovCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYWxsb3dzTXVsdGlwbGVGaWxlczsKKworQGVu
ZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMubSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMubQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTZjY2NhMTg5
MmNiY2RiNWUzMzlmNjM2MWQ3MDM3M2EyYzk3ZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQnJpYW4gTWljaGVsIChi
cmlhbi5taWNoZWxAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIFdLVUlPcGVuUGFuZWxQYXJh
bWV0ZXJzCisKKy0gKHZvaWQpX3NldEFsbG93c011bHRpcGxlRmlsZXM6KEJPT0wpYWxsb3dzTXVs
dGlwbGVGaWxlcyB7CisgICAgX2FsbG93c011bHRpcGxlRmlsZXMgPSBhbGxvd3NNdWx0aXBsZUZp
bGVzOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmNmNjYzYjBjNjY3NzcyYThkNTIxNzk2ODNkZTM0ZGRhYzVmYzEw
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBCcmlhbiBNaWNoZWwgKGJyaWFuLm1pY2hlbEBnbWFpbC5jb20p
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tVSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbnRlcmZhY2Ug
V0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMgKFdLUHJpdmF0ZSkKKworQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0QWxsb3dzTXVsdGlwbGVGaWxlczopIEJPT0wgYWxsb3dzTXVsdGlwbGVG
aWxlczsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCmluZGV4IDc0OTZmZmI1ZjA0OTk3OTI2NDM3MzAzNzc0NTk3ZTA3OTZmNjBl
ZGMuLjhiN2Q2OTY5MDNlZmU0MjYzOWYzMGFiN2E5MzI0NGRkODdhNGI3ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTYsNiArOTYsMTAgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMqLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBv
dmVycmlkZTsKKyNlbmRpZgorCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAg
ICB9OwogCkBAIC0xMjIsNiArMTI2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmll
d0FjdGlvbnNGb3JFbGVtZW50RGVmYXVsdEFjdGlvbnMgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA6IDE7CiAjZW5kaWYKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFJlc3VsdExpc3Rl
bmVyUGFyYW1ldGVycyA6IDE7CisjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3SW1hZ2VPck1l
ZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTll
NGZiODkxZTk1NWVmNDM3YWRiMTlkNGQ3MDYyZmIzZWZiY2IxNC4uODMzYjVhODYwNDg0M2U2MGZj
NjdkNjgwMzRkZWE3Nzc5OWYxZGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KQEAgLTMwLDEzICszMCwxOCBAQAogCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgorI2ltcG9ydCAiV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW1wb3J0
ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25BY3Rpb25JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJX
S1VJT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJp
dmF0ZS5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUGFyYW1l
dGVycy5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2lt
cG9ydCAiX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5k
bGVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAg
LTkzLDYgKzk4LDExIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWxl
Z2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0FjdGlvbnNGb3JF
bGVtZW50RGVmYXVsdEFjdGlvbnMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzphY3Rpb25zRm9yRWxlbWVudDpkZWZhdWx0QWN0aW9uczopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWROb3RIYW5k
bGVUYXBBc0NsaWNrQXRQb2ludDopXTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXJQ
YXJhbWV0ZXJzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6cGFyYW1ldGVyczopXTsKKyNlbmRpZgor
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpp
bWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC0yMjcsNiArMjM3LDMyIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6CiAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH1dOwogfQorI2lm
IFBMQVRGT1JNKE1BQykKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSAqcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5ICpmcmFtZSwg
V2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzICpwYXJhbWV0ZXJzLCBXZWJLaXQ6OldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkgKmxpc3RlbmVyKQoreworICAgIC8vIElmIG91ciBk
ZWxlZ2F0ZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgbWV0aG9kLCBpbnZhbGlkYXRlIHRoZSBsaXN0
ZW5lciBhbmQgcmV0dXJuIGZhbHNlLgorICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXJQYXJhbWV0ZXJzKSB7
CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW21fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
d2luZG93XTsKKworICAgIGlmICghd2luZG93KSB7CisgICAgICAgIGxpc3RlbmVyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIGRlbGVnYXRl
ID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBhdXRvIGRlbGVnYXRlUGFy
YW1ldGVycyA9IGFkb3B0TlMoW1tXS1VJT3BlblBhbmVsUGFyYW1ldGVycyBhbGxvY10gaW5pdF0p
OworICAgIFtkZWxlZ2F0ZVBhcmFtZXRlcnMuZ2V0KCkgX3NldEFsbG93c011bHRpcGxlRmlsZXM6
cGFyYW1ldGVycy0+YWxsb3dNdWx0aXBsZUZpbGVzKCldOworCisgICAgW2RlbGVnYXRlIHdlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6
KGlkIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilhZG9wdE5TKFtbV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aExpc3RlbmVyUHJveHk6bGlzdGVuZXJd
KSBwYXJhbWV0ZXJzOihXS1VJT3BlblBhbmVsUGFyYW1ldGVycyAqKWRlbGVnYXRlUGFyYW1ldGVy
c107CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgogCiB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+
IGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM2YmM3Yzk1NDdkMmI1NGY0NTY0MzM0YjljMmEyYTBhYzk1YTIxOGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0
ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBCcmlhbiBNaWNoZWwgKGJyaWFuLm1pY2hlbEBnbWFpbC5jb20pLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsK
K30KKworQGludGVyZmFjZSBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgOiBOU09i
amVjdCA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoTGlzdGVuZXJQcm94eTooV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
ICopcHJveHk7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLm0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDb25jcmV0ZU9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ5ZDBlNWExZGUyMjhkYTUwM2Iw
ZjdjMmViYzQzOGNjOTU1MzRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubQpAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4u
bWljaGVsQGdtYWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcnJheS5oIgorI2ltcG9y
dCAiQVBJT2JqZWN0LmgiCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIldLU2hh
cmVkQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tVUkxDRi5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1w
bGVtZW50YXRpb24gV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIHsKKyAgICBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5ICptX2xpc3RlbmVyOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhMaXN0ZW5lclByb3h5OihXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5ICopcHJveHkgeworICAgIEFTU0VSVF9BUkcocHJveHksIHByb3h5KTsKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBtX2xpc3RlbmVyID0gcHJveHk7
CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworI3ByYWdtYSBtYXJrIC0gV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcgorCistICh2b2lkKWNob29zZUZpbGVzOihOU0FycmF5ICopZmlsZVVSTHMgewor
ICAgIE5TVUludGVnZXIgY291bnQgPSBbZmlsZVVSTHMgY291bnRdOworICAgIGlmICghY291bnQp
CisgICAgICAgIG1fbGlzdGVuZXItPmNhbmNlbCgpOworICAgIGVsc2UgeworICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKKyAgICAgICAgdXJscy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIGZpbGVV
UkxzKQorICAgICAgICAgICAgdXJscy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKFdL
VVJMQ3JlYXRlV2l0aENGVVJMKChDRlVSTFJlZilmaWxlVVJMKSkpKTsKKworICAgICAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gZmlsZVVSTHNSZWYgPSBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3Zl
KHVybHMpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZVVSTHNSZWYuZ2V0
KCkpOworICAgIH0KK30KKworLSAodm9pZCljYW5jZWwgeworICAgIG1fbGlzdGVuZXItPmNhbmNl
bCgpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzNjk3NmZk
OTZiMzBkNTA4YWY2YjZlNjUxNTlkYmU2Mzc1OTNmODguLmJlODQyOTY4NWQwM2NhMTQ1M2JmNzVk
MTY5NTY1Y2IyMTEyNGNkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzgsNiArMTA3OCwxMSBAQAogCQk2RUU4NDlDODEz
NjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEg
LyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI4RTg2RjExNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLzsgfTsK
IAkJNzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4RTg2RjAxNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovOyB9OworCQk3MkMwNkNGRDFDNTMx
QUE0MDAxMjkxREUgLyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzA2Q0ZCMUM1MzFBQTQwMDEyOTFERSAv
KiBXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tICovOyB9OworCQk3MkMwNkNGRjFDNTMxRDFBMDAx
MjkxREUgLyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMwNkNGRTFDNTMxRDFBMDAxMjkxREUg
LyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJDMDZEMDAxQzUzMjY1MzAwMTI5MURFIC8q
IFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MkMwNkNGQTFDNTMxQUE0MDAxMjkxREUgLyogV0tVSU9wZW5QYW5l
bFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCTcyRkNCNkI0MUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyRkNCNkIxMUMzMDdDMkIwMEU4QTAxMiAvKiBXS0NvbmNyZXRlT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MkZDQjZCNjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkZDQjZCMjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLm0gKi87IH07CiAJCTc1M0UzRTBEMTg4NzM5ODUwMDE4ODQ5NiAvKiBTZXNzaW9uVHJh
Y2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTNFM0UwQjE4ODczOTczMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuY3BwICovOyB9OwogCQk3
NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1M0UzRTA5MTg4NzM5NEIwMDE4ODQ5
NiAvKiBTZXNzaW9uVHJhY2tlci5oICovOyB9OwogCQk3NUE4RDJDODE4N0NDRkFCMDBDMzlDOUUg
LyogV0tXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0
b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAt
MzI2OSw2ICszMjc0LDExIEBACiAJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3Bl
Y3RvclByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNw
ZWN0b3JQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tJbnNwZWN0b3JQcml2YXRlTWFjLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBX
ZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3
OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzJDMDZDRkExQzUzMUFBNDAwMTI5MURFIC8qIFdLVUlPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVUlPcGVu
UGFuZWxQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQzA2Q0ZC
MUM1MzFBQTQwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS1VJT3BlblBhbmVsUGFyYW1ldGVycy5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkMwNkNGRTFDNTMxRDFBMDAxMjkxREUgLyogV0tV
SU9wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MkZDQjZCMTFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkZDQjZCMjFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFdL
Q29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NTNFM0UwOTE4ODczOTRCMDAxODg0OTYgLyogU2Vzc2lvblRyYWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vzc2lvblRyYWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUzRTNFMEIxODg3Mzk3MzAwMTg4NDk2IC8qIFNlc3Npb25U
cmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Npb25U
cmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5
RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ5NDYsNiArNDk1Niw4IEBACiAJCQkJMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8q
IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLAogCQkJCTJEQzZEOUMxMThDNDRBNjEwMDQz
QkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovLAogCQkJCTJEQzZE
OUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5t
bSAqLywKKwkJCQk3MkZDQjZCMTFDMzA3QzJCMDBFOEEwMTIgLyogV0tDb25jcmV0ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmggKi8sCisJCQkJNzJGQ0I2QjIxQzMwN0MyQjAwRThBMDEyIC8qIFdL
Q29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tICovLAogCQkJKTsKIAkJCXBhdGggPSBD
b2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NDE1LDYgKzU0MjcsOSBAQAog
CQkJCTFBRDYwRjVDMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggKi8sCiAJ
CQkJMUFENjBGNUIxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMubW0gKi8sCiAJ
CQkJMUFENjBGNUYxOEUyMEY3NDAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5o
ICovLAorCQkJCTcyQzA2Q0ZBMUM1MzFBQTQwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVsUGFyYW1l
dGVycy5oICovLAorCQkJCTcyQzA2Q0ZCMUM1MzFBQTQwMDEyOTFERSAvKiBXS1VJT3BlblBhbmVs
UGFyYW1ldGVycy5tICovLAorCQkJCTcyQzA2Q0ZFMUM1MzFEMUEwMDEyOTFERSAvKiBXS1VJT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzk2Miw3ICs3OTc3LDkgQEAKIAkJCQlDRUU0
QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NUU3NzMwMTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE2NTRGMDAxODRFRjM0QTAwN0RDODM3IC8qIFVuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkMwNkQwMDFDNTMyNjUzMDAxMjkxREUg
LyogV0tVSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNjU0RUZF
MTg0RUYzM0YwMDdEQzgzNyAvKiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzJDMDZDRkYxQzUzMUQxQTAwMTI5MURFIC8qIFdLVUlPcGVu
UGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1RTc3MzQxODQw
MkQ1MTAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE2NDI0NUUxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQzEzMzY4MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oIGluIEhl
YWRlcnMgKi8sCkBAIC04MTk2LDYgKzgyMTMsNyBAQAogCQkJCUJDNzA0M0NDMTJGNzVFRTAwMDY0
NzJCOSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QTcyOERFMUIxQkFEMzgwMDEwMkVFRSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Qcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRCRUZFMTEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5k
bGVOb2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZDQjZCNDFDMzA3QzJCMDBFOEEw
MTIgLyogV0tDb25jcmV0ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzU3NDUwQzEyNjNCMTU1MDA2RjBGMTIgLyogV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDUyODExMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVu
ZGxlUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGNDdGRjcxNzI3NUI3MTAwOEFDQjkxIC8q
IFdLQnVuZGxlUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDI0LDYgKzk0NDIsNyBA
QAogCQkJCTFBMkE0QjBFMTU4NkEyMjQwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBNkY5RkI3MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZVBP
U0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QkVDNEUwMTk0OTE0ODYwMDhCNDI4NiAvKiBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzJDMDZD
RkQxQzUzMUFBNDAwMTI5MURFIC8qIFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzLm0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzAzMkRBQTEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTMwRUFDNjExNUQ3REEzMDA1M0U5MzcgLyogQ29ubmVjdGlvbk1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMDZEN0MyMThCREJFNzMwMDBBQjE2NiAvKiBDb250
ZXh0TWVudUNvbnRleHREYXRhLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg2Niw2ICs5ODg1LDcg
QEAKIAkJCQkyREE5NDRCQTE4ODRFQTNDMDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDOTYzRDZFMTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzBDRTcyQTAxMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzJGQ0I2QjYxQzMwN0MyQjAwRThB
MDEyIC8qIFdLQ29uY3JldGVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ1QzlEMDUxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMTExQjBGMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMDI3M0YxOTY2MjJENjAwQzEyQjc1IC8qIFdlYlBh
Z2VQcm94eUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDMzN2ZiNWVmN2M2MDRlMzc3YmVhMjdiYTg0YjA1
ZjQ5NTE2MzA0My4uNzBmOGI3OWU1Nzc1ZTNmZGExNWE4MDQ1OTI5ZjcwNjYyOWU4ZmQzYiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE2LTAxLTIzICBCcmlhbiBNaWNoZWwgIDxicmlhbi5taWNoZWxAZ21haWwuY29t
PgorCisgICAgICAgIEhhbmRsZSBPcGVuIFBhbmVsIEZ1bmN0aW9ucyBBcmUgVW5pbXBsZW1lbnRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlz
dGVuZXI6cGFyYW1ldGVyczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1dLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3Qu
bW06IEFkZGVkLgorICAgICAgICAoLVtXS09wZW5QYW5lbFRlc3REZWxlZ2F0ZSB3ZWJWaWV3OnJ1
bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjpwYXJhbWV0ZXJzOl0pOgorICAgICAgICAoLVtX
S09wZW5QYW5lbFRlc3REZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wMS0yMiAgRW5yaWNhIENhc3Vj
Y2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NTQ3NC4KQEAgLTY2LDcgKzgy
LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzMzNAogCiAgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KLSAgICAgICAgCisKICAg
ICAgICAgRXZhbHVhdGluZyBleHByZXNzaW9ucyBpbiB0aGUgTGF5b3V0VW5pdCBzdW1tYXJ5IHBy
b3ZpZGVyIHNlZW1zIHRvIGNhdXNlCiAgICAgICAgIHJlLWVudHJhbmN5IHByb2JsZW1zIGluIGxs
ZGIgcHl0aG9uIGJpbmRpbmdzLCBzbyBqdXN0IGhhcmRjb2RlIHRoZSBMYXlvdXRVbml0CiAgICAg
ICAgIGRlbm9taW5hdG9yIHRvIDY0LgpAQCAtMzE5LDcgKzMzNSw3IEBACiAgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI0MjA4NDg3CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLSAg
ICAgICAgCisKICAgICAgICAgUGxpc3QgdXNlZCBieSBrZGVidWdfdHJhY2UoKSB2aWV3aW5nIHRv
b2xzLgogCiAgICAgICAgICogVHJhY2luZy9TeXN0ZW1UcmFjZVBvaW50cy5wbGlzdDogQWRkZWQu
CkBAIC01MTksMTggKzUzNSwxOCBAQAogICAgICAgICBUaGlzIHBhdGNoIG5vdyBhbGxvd3MgcnVu
LWpzYy1zdHJlc3MtdGVzdHMgdG8gYmUgcnVuCiAgICAgICAgIHdpdGhvdXQgYSAiLS1qc2MgPGpz
Yy1wYXRoPiIgYXJndW1lbnQuIEl0IHRyaWVzCiAgICAgICAgIHRvIHRha2UgaXRzIGJlc3QgZ3Vl
c3MgYXQgYSA8anNjLXBhdGg+IGF1dG9tYWdpY2FsbHkuCi0gICAgICAgIAorCiAgICAgICAgIFRo
aXMgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8ganVzdCBydW4gcnVuLWpzYy1zdHJlc3MtdGVzdHMK
ICAgICAgICAgd2l0aCBhIGRpcmVjdG9yeSBvciBhIHlhbWwgZmlsZSBhcyBhbiBhcmd1bWVudC4K
ICAgICAgICAgWW91IG5vdyBqdXN0IGRvIHRoaXM6CiAgICAgICAgIGBydW4tanNjLXN0cmVzcy10
ZXN0cyA8cGF0aC10by15YW1sPmAKICAgICAgICAgb3IKICAgICAgICAgYHJ1bi1qc2Mtc3RyZXNz
LXRlc3RzIDxwYXRoLXRvLWRpcmVjdG9yeS1vZi1qcy1maWxlcz5gCi0gICAgICAgIAotICAgICAg
ICBJIHdyb3RlIHRoaXMgcGF0Y2ggYmVjYXVzZSBJJ2Qgb2Z0ZW4gZmluZCBteXNlbGYgaGFja2lu
ZyB0aGUgCisKKyAgICAgICAgSSB3cm90ZSB0aGlzIHBhdGNoIGJlY2F1c2UgSSdkIG9mdGVuIGZp
bmQgbXlzZWxmIGhhY2tpbmcgdGhlCiAgICAgICAgIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBm
aWxlIGp1c3QgdG8gcnVuIGEgcGFydGljdWxhciBzdWJzZXQgb2YgdGVzdHMuCiAgICAgICAgIEJl
Y2F1c2UgSSBhbHdheXMgZm9yZ2V0IHRoZSBhcmd1bWVudHMgdG8gcnVuLWpzYy1zdHJlc3MtdGVz
dHMgKHdoaWNoIG1lYW5zCi0gICAgICAgIEkgYWx3YXlzIGZvcmdvdCB0byBwcm92aWRlIGEgLS1q
c2MgYXJndW1lbnQpLCBJIGFsd2F5cyBmb3VuZCBpdCBlYXNpZXIgdG8gCisgICAgICAgIEkgYWx3
YXlzIGZvcmdvdCB0byBwcm92aWRlIGEgLS1qc2MgYXJndW1lbnQpLCBJIGFsd2F5cyBmb3VuZCBp
dCBlYXNpZXIgdG8KICAgICAgICAganVzdCBoYWNrIG9uIHRoYXQgZmlsZSBpbnN0ZWFkIG9mIGNh
bGxpbmcgcnVuLWpzYy1zdHJlc3MtdGVzdHMgZGlyZWN0bHkuCiAgICAgICAgIE5vIGxvbmdlciBp
cyB0aGlzIHRydWUhCiAKQEAgLTgwNSw3ICs4MjEsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODA3CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzLgotICAgICAgICAKKwogICAgICAgICBBZGQgYW4gaXRlbSB0byB0aGUgU2V0
dGluZ3MgbWVudSB0byB0b2dnbGUgZGlzcGxheS1saXN0IGRyYXdpbmcuCiAKICAgICAgICAgKiBN
aW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmg6CkBAIC0xMDU0LDcgKzEwNzAsNyBA
QAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDM0
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KLSAgICAgICAgCisKICAgICAgICAg
VXBkYXRlIHRoaXMgdGVzdCB0byB1c2UgcGlEb3VibGUgZnJvbSBNYXRoRXh0cmFzLmgsIGFuZAog
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPD4uCiAKQEAgLTExMTgsNyArMTEzNCw3IEBACiAg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CiAgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpzZXRVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKICAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luKTogQWRkIE5VTEwgY2hlY2suCi0gICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUp
OiBEb24ndCBhZGQgCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUpOiBEb24ndCBhZGQKICAgICAg
ICAgICBwZXJzaXN0ZW50IHBlcm1pc3Npb24gZm9yIG9yaWdpbiwgdGhhdCBjYW4gYmUgZG9uZSBm
cm9tIHNjcmlwdCBub3cuCiAgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oOgogCkBAIC0xOTQzLDcgKzE5NTksNyBAQAogICAgICAgICA0LiBBcHBlbmQgJ2V4ZScgc3Vm
Zml4IHdoZW4gcnVubmluZyBXaW5kb3dzIGV4ZWN1dGFibGVzLgogICAgICAgICA1LiBVc2UgdGhl
IF93aW5yZWcgUHl0aG9uIG1vZHVsZSBvbiBXaW5kb3dzLCBzaW5jZSB0aGUgQ3lnd2luICdyZWd0
b29sJwogICAgICAgICBjb21tYW5kIGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgIAorCiAgICAgICAg
ICogU2NyaXB0cy91cGRhdGUtd2Via2l0OiBVc2UgUGVybCAkXlggY29tbWFuZCB0byByZWZlciB0
byB0aGUgcGF0aCBvZgogICAgICAgICB0aGUgY3VycmVudCBQZXJsIGV4ZWN1dGFibGUsIHJhdGhl
ciB0aGFuIHJlcXVpcmluZyBhIG5ldyBwYXRoIHNlYXJjaC4KICAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9maW5kX2ZpbGVzX3VuaXR0ZXN0LnB5OgpAQCAtMjI3OSw3ICsyMjk1LDcg
QEAKICAgICAgICAgKFRlc3RXZWJLaXRBUEk6Okdlb2xvY2F0aW9uVHJhbnNpdGlvblRvTG93QWNj
dXJhY3lTdGF0ZVRyYWNrZXI6OmV2ZW50c0NoYW5nZWQpOgogICAgICAgICAoVGVzdFdlYktpdEFQ
STo6R2VvbG9jYXRpb25UcmFuc2l0aW9uVG9IaWdoQWNjdXJhY3lTdGF0ZVRyYWNrZXI6Okdlb2xv
Y2F0aW9uVHJhbnNpdGlvblRvSGlnaEFjY3VyYWN5U3RhdGVUcmFja2VyKTogRGVsZXRlZC4KICAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Okdlb2xvY2F0aW9uVHJhbnNpdGlvblRvTG93QWNjdXJhY3lT
dGF0ZVRyYWNrZXI6Okdlb2xvY2F0aW9uVHJhbnNpdGlvblRvTG93QWNjdXJhY3lTdGF0ZVRyYWNr
ZXIpOiBEZWxldGVkLgotICAgICAgICBQcm9wZXJseSBsb2FkIGFib3V0OmJsYW5rIGluIGFsbCBX
ZWJWaWV3cyB0byBjbGVhbiB1cC4gIFdpdGhvdXQgdGhpcyBjaGFuZ2UsIHdlIGhhZCBhIAorICAg
ICAgICBQcm9wZXJseSBsb2FkIGFib3V0OmJsYW5rIGluIGFsbCBXZWJWaWV3cyB0byBjbGVhbiB1
cC4gIFdpdGhvdXQgdGhpcyBjaGFuZ2UsIHdlIGhhZCBhCiAgICAgICAgIEdlb2xvY2F0aW9uIHBy
b3ZpZGVyIHN0b3BwaW5nIGFmdGVyIGl0cyBzdGF0ZSB0cmFja2VyIHdhcyBkZXN0cm95ZWQgd2l0
aCBpdHMgc3RhY2sgZnJhbWUsCiAgICAgICAgIHNvIGl0IHdhcyBjYWxsaW5nIGEgZnVuY3Rpb24g
b24gYSB0ZXN0IG9iamVjdCB0aGF0IGhhZCBnb25lIG91dCBvZiBzY29wZS4KICAgICAgICAgQWxz
bywgY2FsbCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoY29udGV4dCwgdHJ1ZSkgdG8g
c2hvdyB3aGF0IGNyYXNoIHRoaXMgZml4ZWQsCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IGIyNjAyZWY1YmU2ZTQyMGUyNzk4
YzAzOGI1YjNlNzg4ZDViZjg4MzQuLjM5Yzk4ZDAwYTMyZDNmY2QwMTY0MmNjMTAwNjdhZjFjM2Ri
MjFhNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0
aW9uRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlPcGVu
UGFuZWxQYXJhbWV0ZXJzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KQEAgLTQ0NSw2ICs0NDYsMjAgQEAgLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdp
dGhQcm9tcHQ6KE5TU3QKICAgICB9XTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcj4pbGlzdGVuZXIgcGFyYW1ldGVyczoobm9ubnVsbCBXS1VJT3BlblBhbmVs
UGFyYW1ldGVycyAqKXBhcmFtZXRlcnMKK3sKKyAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0g
W05TT3BlblBhbmVsIG9wZW5QYW5lbF07CisgICAgW29wZW5QYW5lbCBzZXRBbGxvd3NNdWx0aXBs
ZVNlbGVjdGlvbjpwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxlRmlsZXNdOworCisgICAgW29wZW5Q
YW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0ludGVnZXIgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01v
ZGFsUmVzcG9uc2VPSykKKyAgICAgICAgICAgIFtsaXN0ZW5lciBjaG9vc2VGaWxlczpvcGVuUGFu
ZWwuVVJMc107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtsaXN0ZW5lciBjYW5jZWxdOwor
ICAgIH1dOworfQorCiAtICh2b2lkKXVwZGF0ZVRleHRGaWVsZEZyb21VUkw6KE5TVVJMICopVVJM
CiB7CiAgICAgaWYgKCFVUkwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2NzkxODAyZWUw
YzhhNmUyODBlZWJhYjI0OGJmM2U2YjY2N2I0YjMuLmJhZmQzYWYxYjcyMDU3ZjJmOTRjYmZiZWIz
NjEzYTQ2MjdhOGVmMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NCw2ICs3NCw4IEBA
CiAJCTUyQjhDRjk4MTU4NjhEOTEwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjhDRjk0
MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVudFVSSS5odG1sICovOyB9OwogCQk1MkQ2NzNF
RTFBRkIxMjczMDBGQTE5RkUgLyogV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENjcz
RUMxQUZCMTI2ODAwRkExOUZFIC8qIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5n
LmNwcCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsK
KwkJNzJGQ0I2QjkxQzMwQ0IyODAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3Qu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZDQjZC
NzFDMzBCRUQ0MDBFOEEwMTIgLyogV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbSAqLzsgfTsK
KwkJNzJGQ0I2QkIxQzMwRDQ3OTAwRThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZD
QjZCQTFDMzBEMzNEMDBFOEEwMTIgLyogYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sICovOyB9Owog
CQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRl
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMy
MkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICov
OyB9OwogCQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRp
bmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4
MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1
NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwpAQCAt
Mzc5LDYgKzM4MSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJ
CQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTcyRkNCNkJCMUMzMEQ0
NzkwMEU4QTAxMiAvKiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQTE2RjY2QkExQzQwRUI0RjAwQkQ0RDI0IC8qIENvbnRlbnRGaWx0ZXJpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NDFCQzZGMTA4MDA1OTRGRUMgLyog
dmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQzhFNDk1
MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTU5Niw2ICs1OTksOCBAQAogCQk1MkQ2NzNFQzFBRkIxMjY4MDBGQTE5RkUgLyog
V0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29weVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJC
RDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0
ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkNCNkI3MUMzMEJFRDQwMEU4QTAxMiAvKiBXS1VJRGVs
ZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbTsgcGF0aCA9IFdlYktpdDJPYmpDL1dL
VUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyRkNCNkJBMUMzMEQzM0QwMEU4QTAxMiAvKiBiYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYmFzaWMtaW5wdXQtZWxlbWVudC5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8qIE1l
bW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVy
YWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNh
bGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0MzIyRDUxQjYxQ0NB
NDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2Miw2ICsxMDY3LDcgQEAKIAkJ
CQkyOTQzQkU4NDE2MURGRUI4MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovLAogCQkJ
CUJDM0M0QzdEMTQ1ODdBQTYwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5t
bSAqLywKIAkJCQlCQzNDNEM3MDE0NTc1QjZBMDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGVUZXN0Lm1tICovLAorCQkJCTcyRkNCNkI3MUMzMEJFRDQwMEU4QTAxMiAvKiBX
S1VJRGVsZWdhdGVPcGVuUGFuZWxUZXN0Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAiV2ViS2l0
MiBPYmplY3RpdmUtQyI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTI1MCw2ICsx
MjU2LDcgQEAKIAkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzJGQ0I2QkExQzMwRDMz
RDAwRThBMDEyIC8qIGJhc2ljLWlucHV0LWVsZW1lbnQuaHRtbCAqLywKIAkJCQk3QUU5RTUwODFB
RTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgKi8sCiAJCQkJN0ExNDU4RkIxQUQ1QzAzNTAwRTA2
NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICovLAogCQkJCUMwNDVGOTQ2MTM4NUMy
RjgwMEMwRjNDRCAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgKi8sCkBAIC0xNzUyLDYgKzE3NTksNyBA
QAogCQkJCTdDQ0U3RjREMUE0MTFCOUYwMDQ0N0M0QyAvKiBSZXRhaW5QdHIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0Y0RjFBNDExQkE0MDA0NDdDNEMgLyogUmV0YWluUHRySGFzaGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Y0MzFBNDExQjhFMDA0NDdDNEMgLyogU2F0dXJh
dGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzJGQ0I2Qjkx
QzMwQ0IyODAwRThBMDEyIC8qIFdLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YxMjFBNDExQUU2MDA0NDdDNEMgLyogU2Nyb2xsUGlubmluZ0JlaGF2
aW9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDQjFBNDExQTdFMDA0NDdDNEMgLyog
U2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNDMUE0
MTFBN0UwMDQ0N0M0QyAvKiBTZXREb2N1bWVudFVSSS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLWlucHV0LWVsZW1l
bnQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy1pbnB1dC1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJmMmM1OTJiMTg3NjJhZWQzMTAxMzNmZTIyM2M0Njdh
MjhmYzNiNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9iYXNpYy1pbnB1dC1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAg
IDx0aXRsZT5CYXNpYyBJbnB1dCBFbGVtZW50PC90aXRsZT4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgICBmdW5jdGlvbiB1cGxvYWQoKQorICAgICAgeworICAgICAg
ICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsK
KyAgICAgICAgaW5wdXQuY2xpY2soKTsKKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFk
PgorICA8Ym9keSBvbmNsaWNrPSJ1cGxvYWQoKSIgc3R5bGU9IndpZHRoOiA0MDAwMGVtOyBoZWln
aHQ6IDQwMDAwZW07Ij4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgc3R5bGU9Im9wYWNpdHk6IDAu
MDsiPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJPYmpDL1dLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3QubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1dLVUlEZWxlZ2F0ZU9wZW5QYW5lbFRlc3Qu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzU2Zjk4M2YwNDE1MDZhYjE4NDY5MWQ1YjgxMjVjODdjMTI2NjY1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
V0tVSURlbGVnYXRlT3BlblBhbmVsVGVzdC5tbQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEJyaWFuIE1pY2hlbCAoYnJpYW4ubWljaGVsQGdtYWlsLmNvbSkuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShJT1Mp
CisKK3N0YXRpYyBib29sIGRvbmVPcGVuaW5nOworc3RhdGljIGJvb2wgZG9uZUxvYWRpbmc7CisK
K0BpbnRlcmZhY2UgV0tPcGVuUGFuZWxUZXN0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVn
YXRlLCBXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLT3Bl
blBhbmVsVGVzdERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBydW5PcGVuUGFuZWxXaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI+KWxpc3RlbmVyIHBhcmFtZXRlcnM6KFdLVUlPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFy
YW1ldGVycworeworICAgIEVYUEVDVF9OT1RfTlVMTCh3ZWJWaWV3KTsKKyAgICBFWFBFQ1RfTk9U
X05VTEwobGlzdGVuZXIpOworICAgIEVYUEVDVF9OT1RfTlVMTChwYXJhbWV0ZXJzKTsKKyAgICBk
b25lT3BlbmluZyA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7Cisg
ICAgZG9uZUxvYWRpbmcgPSB0cnVlOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworVEVTVChXZWJLaXQyLCBPcGVuUGFuZWxUZXN0KQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1dLT3BlblBh
bmVsVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0
TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldy5nZXQoKSBm
cmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgIFtbd2luZG93LmdldCgpIGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgd2ViVmlldy5nZXQoKS5VSURlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImJhc2ljLWlucHV0LWVsZW1lbnQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKworICAgIFt3ZWJWaWV3LmdldCgp
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVXRpbDo6cnVuKCZkb25lTG9hZGluZyk7CisK
KyAgICBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgxMDAsIDEwMCk7CisKKyAgICBb
W3dlYlZpZXcgaGl0VGVzdDpjbGlja1BvaW50XSBtb3VzZURvd246W05TRXZlbnQgbW91c2VFdmVu
dFdpdGhUeXBlOk5TTGVmdE1vdXNlRG93biBsb2NhdGlvbjpjbGlja1BvaW50IG1vZGlmaWVyRmxh
Z3M6MCB0aW1lc3RhbXA6MCB3aW5kb3dOdW1iZXI6W3dpbmRvdy5nZXQoKSB3aW5kb3dOdW1iZXJd
IGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjFdXTsKKwor
ICAgIFtbd2ViVmlldyBoaXRUZXN0OmNsaWNrUG9pbnRdIG1vdXNlVXA6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOk5TTGVmdE1vdXNlVXAgbG9jYXRpb246Y2xpY2tQb2ludCBtb2RpZmllckZs
YWdzOjAgdGltZXN0YW1wOjAgd2luZG93TnVtYmVyOlt3aW5kb3cuZ2V0KCkgd2luZG93TnVtYmVy
XSBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZToxXV07CisK
KyAgICBVdGlsOjpydW4oJmRvbmVPcGVuaW5nKTsKKworICAgIGRvbmVMb2FkaW5nID0gZmFsc2U7
CisgICAgZG9uZU9wZW5pbmcgPSBmYWxzZTsKK30KKworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQgJiYgIVBMQVRGT1JNKElPUykKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276410</attachid>
            <date>2016-04-14 12:22:06 -0700</date>
            <delta_ts>2016-04-14 14:04:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137759-20160414122218.patch</filename>
            <type>text/plain</type>
            <size>69867</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDdkYTI4Y2UzYTNhNjZj
ZTViYTY4OGFiMTU1Mjg3ODYxMmI3ZDNjMS4uMjRiZjk3NmEyZjcxNzgzZTZhZWRiODgwNjEyNjEy
ZjIwYWY0ZDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxNi0wNC0xNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFkZCBB
UEkgZm9yIG9wZW4gcGFuZWwgaGFuZGxpbmcgdG8gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3NTkKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjMyNzg2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEJyaWFuIE1pY2hlbC4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgIEltcG9ydCBXS09wZW5QYW5lbFBhcmFt
ZXRlcnMuaC4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAg
IChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgQ3JlYXRlIGEgV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzIGZvciBUeXBlOjpPcGVuUGFuZWxQYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmguCisgICAgICAgIFJlbmFt
ZSBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMgdG8gQVBJOjpPcGVuUGFuZWxQYXJhbWV0
ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAo
QVBJOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgQ2hhbmdlIHRoaXMgdG8gdGFr
ZSBhIFNlY3VyaXR5T3JpZ2luRGF0YS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UmVmLmNwcDoKKyAgICAgICAgKFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldFR5cGVJRCk6CisgICAg
ICAgIFJlbmFtZSBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMgdG8gQVBJOjpPcGVuUGFu
ZWxQYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKToKKyAgICAg
ICAgKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQp
OgorICAgICAgICBDaGFuZ2UgY2hvb3NlRmlsZXMgdG8gdGFrZSBhIFZlY3RvcjxTdHJpbmc+IGlu
c3RlYWQgb2YgYW4gQVBJOjpBcnJheSBvZiBVUkxzLgorICAgICAgICAKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbl0p
OgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FwaU9iamVjdF0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGEgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIGNsYXNzIHdoaWNoIGNvbnRhaW5z
IGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZSB1cGxvYWQgY29udHJvbC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmg6CisgICAgICAgIEFkZCBuZXcgZGVsZWdh
dGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICBSZWNvcmQgd2hldGhlciB0aGUgVUkg
ZGVsZWdhdGUgaW1wbGVtZW50cyB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgSW52
b2tlIHRoZSBuZXcgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6aGFuZGxlUnVuT3BlblBhbmVs
KToKKyAgICAgICAgUmVuYW1lIFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyB0byBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICBDaGFuZ2UgY2hvb3NlRmls
ZXMgdG8gdGFrZSBhIFZlY3RvcjxTdHJpbmc+IGluc3RlYWQgb2YgYW4gQVBJOjpBcnJheSBvZiBV
UkxzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIENoYW5nZSB0aGlzIHRvIHRha2UgYSBTZWN1cml0eU9y
aWdpbkRhdGEuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICBDaGFuZ2UgUnVuT3BlTnBhbmVsIHRvIHRha2UgYSBTZWN1cml0eU9yaWdpbkRh
dGEuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aGFuZGxlUnVuT3BlblBhbmVsKToKKyAgICAgICAg
UmVuYW1lIFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyB0byBBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93UnVuT3BlblBhbmVsOnJlc3VsdExp
c3RlbmVyOl0pOgorICAgICAgICBDaGFuZ2UgY2hvb3NlRmlsZXMgdG8gdGFrZSBhIFZlY3RvcjxT
dHJpbmc+IGluc3RlYWQgb2YgYW4gQVBJOjpBcnJheSBvZiBVUkxzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06CisgICAgICAgICgtW1dLRmlsZVVwbG9h
ZFBhbmVsIF9jaG9vc2VGaWxlczpkaXNwbGF5U3RyaW5nOmljb25JbWFnZTpdKToKKyAgICAgICAg
Q2hhbmdlIGNob29zZUZpbGVzIHRvIHRha2UgYSBWZWN0b3I8U3RyaW5nPiBpbnN0ZWFkIG9mIGFu
IEFQSTo6QXJyYXkgb2YgVVJMcy4KKworICAgICAgICAoLVtXS0ZpbGVVcGxvYWRQYW5lbCBwcmVz
ZW50V2l0aFBhcmFtZXRlcnM6cmVzdWx0TGlzdGVuZXI6XSk6CisgICAgICAgIFJlbmFtZSBXZWJL
aXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMgdG8gQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzLgor
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBB
ZGQgbmV3IGZpbGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuT3Bl
blBhbmVsKToKKyAgICAgICAgUGFzcyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBmcmFtZSBh
bG9uZy4KKwogMjAxNi0wNC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRob3V0IEluZGV4ZWREQi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IGRiMzhhMzA2MWQxNmNmMjJmM2Ey
Yzc5YzQ2MTZiNThiZDE5ZTUzNDguLmU2M2ZmOTNhMGQwZDBmMzEzNjNkNTBiNzEzYzU4NTU3NjZh
ZDgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzMs
NiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cmV2aWV3QWN0aW9uSXRlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJldmlld0FjdGlvbkl0ZW1J
ZGVudGlmaWVycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5k
ZXggYjJmNmE2NDFjZWI4Nzc0MDlhMjk3OTUyMzRhMTI4ZDU1ODA0MzY2OS4uMTU3MTg5ZTUzMDE4
MzljNDQ2NGMyM2EzZjA4OTBiYzg0NDlmYTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJXS05hdmlnYXRpb25E
YXRhSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0
ICJXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmgiCisjaW1wb3J0ICJXS09wZW5QYW5lbFBh
cmFtZXRlcnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLU2VjdXJpdHlPcmln
aW5JbnRlcm5hbC5oIgpAQCAtMTgxLDYgKzE4MiwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVj
dChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlv
blJlc3BvbnNlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6Ok9wZW5Q
YW5lbFBhcmFtZXRlcnM6CisgICAgICAgIHdyYXBwZXIgPSBbV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OlBhZ2VHcm91cDoKICAg
ICAgICAgd3JhcHBlciA9IFtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVy
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYTBiNGYyNTA1ZjIyMTgxZDU0
ODkzOGY2ODUyZDdjMzYzOThkZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIK
LQotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJU3RyaW5nLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8V2ViT3BlblBhbmVsUGFyYW1ldGVycz4gV2ViT3BlblBh
bmVsUGFyYW1ldGVyczo6Y3JlYXRlKGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdz
KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViT3BlblBhbmVsUGFyYW1ldGVycyhzZXR0
aW5ncykpOwotfQotCi1XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzKGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQotICAgIDogbV9zZXR0aW5n
cyhzZXR0aW5ncykKLXsKLX0KLQotV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMoKQotewotfQotCi1SZWY8QVBJOjpBcnJheT4gV2ViT3BlblBhbmVsUGFyYW1l
dGVyczo6YWNjZXB0TUlNRVR5cGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQVBJOjpBcnJheTo6
Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpOwotfQotCi0jaWYg
RU5BQkxFKE1FRElBX0NBUFRVUkUpCi1ib29sIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OmNhcHR1
cmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NldHRpbmdzLmNhcHR1cmU7Ci19Ci0jZW5kaWYK
LQotUmVmPEFQSTo6QXJyYXk+IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVkRmlsZU5h
bWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXko
bV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODgwNWYzMzYzMGQ0ZDI0ZjUzYzkzNDMzYWJkMjIx
NTFjZmI1NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViT3Bl
blBhbmVsUGFyYW1ldGVyc19oCi0jZGVmaW5lIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnNfaAotCi0j
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBBcnJheTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpPcGVuUGFuZWxQYXJhbWV0ZXJzPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViT3BlblBhbmVsUGFyYW1ldGVycz4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKLSAgICB+V2ViT3BlblBhbmVsUGFyYW1ldGVy
cygpOwotCi0gICAgYm9vbCBhbGxvd011bHRpcGxlRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRpbmdzLmFsbG93c011bHRpcGxlRmlsZXM7IH0KLSAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0
TUlNRVR5cGVzKCkgY29uc3Q7Ci0gICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVjdGVkRmlsZU5hbWVz
KCkgY29uc3Q7Ci0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgYm9vbCBjYXB0dXJlKCkg
Y29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzKGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKLQotICAgIFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MgbV9zZXR0aW5nczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gV2ViT3BlblBhbmVsUGFyYW1ldGVyc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYjk5OTkzNmExZTRlOWVhMWZhZTc3MmViYjI2MzRiOGNhZjE3MDBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIgor
CisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElTdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
QVBJIHsKKworUGFzc1JlZlB0cjxPcGVuUGFuZWxQYXJhbWV0ZXJzPiBPcGVuUGFuZWxQYXJhbWV0
ZXJzOjpjcmVhdGUoY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuUGFuZWxQYXJhbWV0ZXJzKHNldHRpbmdzKSk7Cit9CisK
K09wZW5QYW5lbFBhcmFtZXRlcnM6Ok9wZW5QYW5lbFBhcmFtZXRlcnMoY29uc3QgRmlsZUNob29z
ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQoreworfQor
CitPcGVuUGFuZWxQYXJhbWV0ZXJzOjp+T3BlblBhbmVsUGFyYW1ldGVycygpCit7Cit9CisKK1Jl
ZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2NlcHRNSU1FVHlwZXMoKSBjb25z
dAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdz
LmFjY2VwdE1JTUVUeXBlcyk7Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKK2Jvb2wg
T3BlblBhbmVsUGFyYW1ldGVyczo6Y2FwdHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0
dGluZ3MuY2FwdHVyZTsKK30KKyNlbmRpZgorCitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFy
YW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLnNlbGVjdGVkRmlsZXMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZTMxYzNkMjZhMTBi
YzU0N2I2NGY3NTRjNWM5ZDliYjE4ZmY4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBB
UEkgeworCitjbGFzcyBBcnJheTsKKworY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVycyA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Ok9wZW5QYW5lbFBhcmFtZXRlcnM+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuUGFuZWxQYXJhbWV0ZXJzPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOworICAgIH5PcGVuUGFu
ZWxQYXJhbWV0ZXJzKCk7CisKKyAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MuYWxsb3dzTXVsdGlwbGVGaWxlczsgfQorICAgIFJlZjxBUEk6OkFy
cmF5PiBhY2NlcHRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gc2VsZWN0
ZWRGaWxlTmFtZXMoKSBjb25zdDsKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBib29s
IGNhcHR1cmUoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE9wZW5Q
YW5lbFBhcmFtZXRlcnMoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOworCisg
ICAgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBtX3NldHRpbmdzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
aW5kZXggMGE5Njk5YWE0MTY4YTY0ZTQ3NDgxMTI1MzBiYjYzMTdmYWVjYWViNS4uNmE4ZmFjZGY2
OThmMGU0NjRiMGZhYzg4NzBlNzgyMDRkNmYzODY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtNTUsNyArNTUsNiBAQCBjbGFzcyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk7CiBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJG
cmFtZVByb3h5OwotY2xhc3MgV2ViT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmF2
aWdhdGlvbkFjdGlvbkRhdGE7CkBAIC03MCw2ICs2OSw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgRGF0YTsKIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBPYmplY3Q7CitjbGFzcyBPcGVuUGFu
ZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVJQ2xpZW50IHsK
QEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1
cnJlbnRRdW90YSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2ViT3Bl
blBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6OldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4q
LCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5JikgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBhZDU4ZDY5
MzA1YWE5YWIzYmM4YjdmMmI2YWZiYTIxOWJmOGE5ZjM2Li43ODdlOTkyNzg5ZmMxOWE1M2FlYmI2
MzQ2YjBjMWViODFlNmJkODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZp
Z2F0aW9uQWN0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkRhdGE7CiBjbGFzcyBOYXZpZ2F0aW9uUmVz
cG9uc2U7CitjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRp
b247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNzaW9uU3RhdGU7
CkBAIC05Nyw3ICs5OCw2IEBAIGNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogY2xh
c3MgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7Ci1jbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VH
cm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBXS19BRERfQVBJ
X01BUFBJTkcoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmLCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFJlZiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiBXS19BRERfQVBJX01BUFBJTkco
V0tOb3RpZmljYXRpb25Qcm92aWRlclJlZiwgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tOb3RpZmljYXRpb25SZWYsIFdlYk5vdGlmaWNhdGlvbikKLVdLX0FE
RF9BUElfTUFQUElORyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMpCitXS19BRERfQVBJX01BUFBJTkcoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclJlZiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS1BhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBh
cmFtZXRlcnNSZWYuY3BwCmluZGV4IGY3YmEwOGIwMTJiYjc5YTUyYWFkZjM5YmZkMjg3ZDg0OTJk
NDg0ZDAuLjllYTNmNjA2MTdjZjY5NmIxNGZlNDYwNTYyYTdjZmYyMTBjZTYxYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNS
ZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBh
cmFtZXRlcnNSZWYuY3BwCkBAIC0yOCwxNCArMjgsMTQgQEAKICNpbmNsdWRlICJXS09wZW5QYW5l
bFBhcmFtZXRlcnNSZWYuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJ
T3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAog
V0tUeXBlSUQgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4g
dG9BUEkoV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJ
KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6QVBJVHlwZSk7CiB9CiAKIGJvb2wgV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNS
ZWYgcGFyYW1ldGVyc1JlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAppbmRleCA4Yzc5MzE4MmRl
ODIyZWVlMTEwNmUyMTkwN2MzOTQ2YzE4OWFlYjIxLi5iNWM0OGFmYzY2YjI1NGJjYTAzZTk2M2Rj
OGJmZGFkZTg5YzM5MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIApAQCAtMzYsOSArMzcsMjUgQEAgV0tUeXBlSUQgV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lckdldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHk6OkFQSVR5cGUpOwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZz4g
ZmlsZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKworICAgIHNpemVfdCBzaXplID0gZmlsZVVSTHMu
c2l6ZSgpOworICAgIGZpbGVQYXRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQVBJOjpVUkwq
IGFwaVVSTCA9IGZpbGVVUkxzLmF0PEFQSTo6VVJMPihpKTsKKyAgICAgICAgaWYgKGFwaVVSTCkK
KyAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBhcGlVUkwtPnN0cmluZygpKS5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmlsZVBhdGhzOworfQorCiB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJDaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBX
S0FycmF5UmVmIGZpbGVVUkxzUmVmKQogewotICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNob29z
ZUZpbGVzKHRvSW1wbChmaWxlVVJMc1JlZikpOworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNo
b29zZUZpbGVzKGZpbGVQYXRoc0Zyb21GaWxlVVJMcygqdG9JbXBsKGZpbGVVUkxzUmVmKSkpOwog
fQogCiB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggYTJhYWZiMzc4NWJhM2E4MzUyNGRhMzBlY2M1NzkxMjcwZTk1ODJh
Yy4uOGUzMDMzZTMwOWVkNDI1OGMyZTc0NjVhOGY2M2M0NmJiNjQyOWJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJBUElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVNlc3Npb25TdGF0ZS5o
IgpAQCAtNjEsNyArNjIsNiBAQAogI2luY2x1ZGUgIldlYkZvcm1DbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCi0jaW5jbHVkZSAi
V2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQ
YWdlTWVzc2FnZXMuaCIKQEAgLTIwNTMsNyArMjA1Myw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NsaWVudC5leGNlZWRlZERhdGFi
YXNlUXVvdGEodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEko
ZGF0YWJhc2VOYW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwg
Y3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBl
eHBlY3RlZFVzYWdlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94
eSogZnJhbWUsIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBvdmVycmlkZQorICAgICAgICBib29sIHJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJ1bk9wZW5QYW5l
bCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NWZhZWRjOGZlMjljMjlmOTFkODU1MmUzMDc4NDg5NTY1ZDdkZTMxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2Vi
S2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qISBX
S09wZW5QYW5lbFBhcmFtZXRlcnMgY29udGFpbnMgcGFyYW1ldGVycyB0aGF0IGEgZmlsZSB1cGxv
YWQgY29udHJvbCBoYXMgc3BlY2lmaWVkLgorICovCitXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFD
X1RCQSwgTkEpCitAaW50ZXJmYWNlIFdLT3BlblBhbmVsUGFyYW1ldGVycyA6IE5TT2JqZWN0CisK
Ky8qISBAYWJzdHJhY3QgV2hldGhlciB0aGUgZmlsZSB1cGxvYWQgY29udHJvbCBzdXBwb3J0cyBt
dWx0aXBsZSBmaWxlcy4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGFsbG93c011bHRpcGxlU2VsZWN0aW9uOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3Y2M2ZTY0YTA1
YjNjMTJkM2FkOTJmMzFiMDNlMzFiMjU3YjZkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCkBAIC0w
LDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldL
T3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCitA
aW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCisKKy0gKEJPT0wpYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24KK3sKKyAgICByZXR1cm4gX29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93
TXVsdGlwbGVGaWxlcygpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4g
Kl9vcGVuUGFuZWxQYXJhbWV0ZXJzOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnNJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyOTJlZWI4ODcyMjFmMTg4NDM0ZDFl
NzE3ZDBiOTNkODZmMmNhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1ldGVycy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJT3BlblBhbmVsUGFyYW1ldGVycy5o
IgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBXS09w
ZW5QYW5lbFBhcmFtZXRlcnMgKndyYXBwZXIoT3BlblBhbmVsUGFyYW1ldGVycyYgb3BlblBhbmVs
UGFyYW1ldGVycykKK3sKKyAgICBBU1NFUlQoW29wZW5QYW5lbFBhcmFtZXRlcnMud3JhcHBlcigp
IGlzS2luZE9mQ2xhc3M6W1dLT3BlblBhbmVsUGFyYW1ldGVycyBjbGFzc11dKTsKKworICAgIHJl
dHVybiAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopb3BlblBhbmVsUGFyYW1ldGVycy53cmFwcGVy
KCk7Cit9CisKK30KKworQGludGVyZmFjZSBXS09wZW5QYW5lbFBhcmFtZXRlcnMgKCkgPFdLT2Jq
ZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnM+IF9vcGVuUGFuZWxQYXJhbWV0ZXJzOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZS5oCmluZGV4
IGQ5ZDg2MjE1MWZkODU1NTNiNDFkNzRhYTRhNjFkNWRkYWFiYjM5NmUuLjJhMTJiZjA1YWM0MDQ5
NTZlNzM4OWUxMDRiZTRkYWY0YjQwMWI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaApAQCAtMzQsNiArMzQsNyBAQCBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tOYXZpZ2F0
aW9uQWN0aW9uOworQGNsYXNzIFdLT3BlblBhbmVsUGFyYW1ldGVyczsKIEBjbGFzcyBXS1ByZXZp
ZXdFbGVtZW50SW5mbzsKIEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogQGNsYXNzIFdL
V2luZG93RmVhdHVyZXM7CkBAIC0xNDMsNyArMTQ0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KICBSZXR1cm5pbmcgbmlsIHdpbGwgcmVzdWx0IGluIFdlYktpdCdzIGRlZmF1bHQgcHJldmll
dyBiZWhhdmlvci4gd2ViVmlldzpjb21taXRQcmV2aWV3aW5nVmlld0NvbnRyb2xsZXI6IHdpbGwg
b25seSBiZSBpbnZva2VkCiAgaWYgYSBub24tbmlsIHZpZXcgY29udHJvbGxlciB3YXMgcmV0dXJu
ZWQuCiAgKi8KLS0gKG51bGxhYmxlIFVJVmlld0NvbnRyb2xsZXIgKil3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHByZXZpZXdpbmdWaWV3Q29udHJvbGxlckZvckVsZW1lbnQ6KFdLUHJldmll
d0VsZW1lbnRJbmZvICopZWxlbWVudEluZm8gZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXkgPGlkIDxX
S1ByZXZpZXdBY3Rpb25JdGVtPj4gKilwcmV2aWV3QWN0aW9ucyBXS19BVkFJTEFCTEUoTkEsIFdL
X0lPU19UQkEpOworLSAobnVsbGFibGUgVUlWaWV3Q29udHJvbGxlciAqKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcHJldmlld2luZ1ZpZXdDb250cm9sbGVyRm9yRWxlbWVudDooV0tQcmV2
aWV3RWxlbWVudEluZm8gKillbGVtZW50SW5mbyBkZWZhdWx0QWN0aW9uczooTlNBcnJheTxpZCA8
V0tQcmV2aWV3QWN0aW9uSXRlbT4+ICopcHJldmlld0FjdGlvbnMgV0tfQVZBSUxBQkxFKE5BLCBX
S19JT1NfVEJBKTsKIAogLyohIEBhYnN0cmFjdCBBbGxvd3MgeW91ciBhcHAgdG8gcG9wIHRvIHRo
ZSB2aWV3IGNvbnRyb2xsZXIgaXQgY3JlYXRlZC4KICBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZp
ZXcgaW52b2tpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KQEAgLTE1Myw2ICsxNTQsMjAgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIAogI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKIAorI2lm
ICFUQVJHRVRfT1NfSVBIT05FCisKKy8qISBAYWJzdHJhY3QgRGlzcGxheXMgYSBmaWxlIHVwbG9h
ZCBwYW5lbC4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIGRlbGVn
YXRlIG1ldGhvZC4KKyBAcGFyYW0gcGFyYW1ldGVycyBQYXJhbWV0ZXJzIGRlc2NyaWJpbmcgdGhl
IGZpbGUgdXBsb2FkIGNvbnRyb2wuCisgQHBhcmFtIGZyYW1lIEluZm9ybWF0aW9uIGFib3V0IHRo
ZSBmcmFtZSB3aG9zZSBmaWxlIHVwbG9hZCBjb250cm9sIGluaXRpYXRlZCB0aGlzIGNhbGwuCisg
QHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gY2FsbCBh
ZnRlciBvcGVuIHBhbmVsIGhhcyBiZWVuIGRpc21pc3NlZC4gUGFzcyB0aGUgc2VsZWN0ZWQgVVJM
cyBpZiB0aGUgdXNlciBjaG9zZSBPSywgb3RoZXJ3aXNlIG5pbC4KKworIElmIHlvdSBkbyBub3Qg
aW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhl
IHVzZXIgc2VsZWN0ZWQgdGhlIENhbmNlbCBidXR0b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICogV0tf
TlVMTEFCTEVfU1BFQ0lGSUVSIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FWQUlMQUJMRShX
S19NQUNfVEJBLCBOQSk7CisKKyNlbmRpZgorCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMjBk
ZjEyYmQwZTdlNzEyODFlOTdiOTdmNDBhOWMyZDUwMGUzZDc0MC4uMDgzYzFmOTM2MzNiODMzYWVm
OWRjMzVmM2YyYzdhYTdkMGJiZDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oCkBAIC04Niw2ICs4Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdU
Rjo6U3RyaW5nJik+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+KSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRf
dCB0b3RhbEJ5dGVzTmVlZGVkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9u
Zyk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMq
LCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7CisjZW5kaWYKICAg
ICAgICAgdm9pZCBwcmludEZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5Kikgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TKQogI2lmIEhBVkUoQVBQX0xJ
TktTKQpAQCAtMTA4LDYgKzExMSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1J1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdSdW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0RGVm
YXVsdFRleHRJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOworI2VuZGlmCiAgICAgICAgIGJv
b2wgd2ViVmlld0RlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRRdW90
YUN1cnJlbnRPcmlnaW5Vc2FnZUN1cnJlbnREYXRhYmFzZVVzYWdlRXhwZWN0ZWRVc2FnZURlY2lz
aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RlY2lkZVdlYkFwcGxpY2F0aW9u
Q2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhVG90YWxCeXRlc05lZWRlZCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1ByaW50RnJhbWUgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAzZmY1MDMxZjNiMThhZGJjZTg2
ZjM3NDE4NWU4NDk5YzAyZThlY2U5Li45YzZiNmJjZGE1YWVlYTM3MTYwNmEyOGE0NjVjYTc5OWU4
ZmVmZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQpAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgog
I2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uQWN0
aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tVSURlbGVn
YXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5o
IgogI2ltcG9ydCAiX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJh
bWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEu
aD4KQEAgLTc4LDYgKzgwLDExIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdL
VUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkph
dmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhh
bmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlw
dENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZh
U2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRp
YXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5p
dGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOworI2VuZGlmCisKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVu
dFF1b3RhQ3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdl
RGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90
YTpjdXJyZW50T3JpZ2luVXNhZ2U6Y3VycmVudERhdGFiYXNlVXNhZ2U6ZXhwZWN0ZWRVc2FnZTpk
ZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVdl
YkFwcGxpY2F0aW9uQ2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhVG90YWxC
eXRlc05lZWRlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRlY2lkZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJl
bnRRdW90YTp0b3RhbEJ5dGVzTmVlZGVkOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3UHJpbnRGcmFtZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByaW50RnJhbWU6KV07CkBAIC0yNTAsNiArMjU3LDQwIEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwKICAgICB9XTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykK
K2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBvcGVu
UGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5l
cikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJh
bWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJlZlB0
cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiByZXN1bHRMaXN0ZW5lciA9IGxpc3Rl
bmVyOworCisgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVs
ZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5Q
YW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlv
bkhhbmRsZXI6W2NoZWNrZXIsIHJlc3VsdExpc3RlbmVyXShOU0FycmF5PE5TVVJMICo+ICpVUkxz
KSB7CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAg
ICAgIGlmICghVVJMcykgeworICAgICAgICAgICAgcmVzdWx0TGlzdGVuZXItPmNhbmNlbCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZmlsZW5hbWVzOworICAgICAgICBmb3IgKE5TVVJMICp1cmwgaW4gVVJMcykKKyAgICAgICAgICAg
IGZpbGVuYW1lcy5hcHBlbmQodXJsLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisKKyAgICAg
ICAgcmVzdWx0TGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcyk7CisgICAgfV07CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2ln
bmVkIGxvbmcgbG9uZyk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRRdW90YVRvdGFsQnl0ZXNOZWVkZWQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDIxMjM5ZGIyOWE0ZmFlYmQ4NTk3ZjMy
MDQ0ODk5ZTJmOTA4OGRkMzYuLjhiMjFkN2YxODIwMzFkMDBmZjRlODhlYmVhODQ0YjVjOGRiYmEx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTUxLDcgKzE1MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93
bmxvYWRQcm94eSopID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlUnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VD
b250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAKaW5kZXggYTM3N2U0YWYwOGUyOTdmM2MyZmE3NDYwNmM5ZTU5NDhhZTdkNDJlOC4u
ZDUwM2U2YWIwMjU4YzFhZWM4YjIyNDFmZGJhMDM2MmFhNmFkZGVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcApAQCAtNDUsMzggKzQ1LDIyIEBAIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHk6On5XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KCkKIHsKIH0KIAotc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoc0Zyb21GaWxlVVJMcyhjb25zdCBBUEk6OkFycmF5JiBm
aWxlVVJMcykKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7Ci0KLSAgICBzaXplX3Qg
c2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsKLSAgICBmaWxlUGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzaXplKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7Ci0gICAg
ICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFVS
TChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZpbGVQYXRoczsKLX0KLQogI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoQVBJOjpBcnJheSogZmlsZVVS
THNBcnJheSwgQVBJOjpTdHJpbmcqIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNv
bkltYWdlRGF0YSkKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3Nl
RmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdlRGF0YSkKIHsKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlUGF0aHNGcm9tRmlsZVVS
THMoKmZpbGVVUkxzQXJyYXkpLCBkaXNwbGF5U3RyaW5nID8gZGlzcGxheVN0cmluZy0+c3RyaW5n
KCkgOiBTdHJpbmcoKSwgaWNvbkltYWdlRGF0YSk7CisgICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlbmFtZXMsIGRpc3BsYXlT
dHJpbmcsIGljb25JbWFnZURhdGEpOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoQVBJOjpBcnJheSogZmlsZVVSTHNBcnJheSkK
K3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlUGF0
aHNGcm9tRmlsZVVSTHMoKmZpbGVVUkxzQXJyYXkpKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcyk7CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCmluZGV4IGFlNmVhZjc4
OGQ1ODJmYjE4ZWNkZjJlZmNkMDVmMDE3MTU3YmQ5MmIuLmVmNTAwMjM4YjQwZjZjMDNkMjljN2Zi
MzRkNzZjNWUwZWVlZDc0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtMjcsOCArMjcsMTAg
QEAKICNkZWZpbmUgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKQEAgLTUwLDkgKzUyLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkoKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNob29zZUZpbGVzKEFQSTo6QXJyYXkqLCBB
UEk6OlN0cmluZyogZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRh
KTsKKyAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VE
YXRhKTsKICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmlsZXMoQVBJOjpBcnJheSopOworICAgIHZv
aWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiOWExY2NkYTdhM2YxMGNiYTBiOTI4NDkxYjc0
Njc1MDc5M2VmN2YwLi4yZmMxMjk5NzRkYTRlYmYyNjBhZGE4MWJjZmZmY2U5ODdhNjU0NTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZp
Z2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJU2Vj
dXJpdHlPcmlnaW4uaCIKQEAgLTkwLDcgKzkxLDYgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblN0YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZUdyb3VwLmgiCkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGFn
ZURpZFNjcm9sbCgpCiAgICAgbV91aUNsaWVudC0+cGFnZURpZFNjcm9sbCh0aGlzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBG
aWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVu
UGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAg
ICBpZiAobV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CkBAIC0zODYzLDEzICszODYzLDE0IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgRmlsZUNo
b29zZXJTZXR0aW5ncyYgc2V0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgUmVm
UHRyPFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpjcmVhdGUoc2V0dGluZ3MpOworICAgIFJlZlB0cjxBUEk6Ok9wZW5QYW5lbFBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnMgPSBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OmNyZWF0ZShzZXR0
aW5ncyk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHk6OmNyZWF0ZSh0aGlzKTsKIAogICAgIC8vIFNpbmNlIHJ1bk9wZW5QYW5l
bCgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVybiBvZmYgdGhlIHJl
c3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0b3AoKTsKIAotICAgIGlmICghbV91aUNsaWVudC0+cnVuT3BlblBhbmVsKHRoaXMsIGZyYW1l
LCBwYXJhbWV0ZXJzLmdldCgpLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdldCgpKSkgewor
CisgICAgaWYgKCFtX3VpQ2xpZW50LT5ydW5PcGVuUGFuZWwodGhpcywgZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHBhcmFtZXRlcnMuZ2V0KCksIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Z2V0KCkpKSB7CiAgICAgICAgIGlmICghbV9wYWdlQ2xpZW50LmhhbmRsZVJ1bk9wZW5QYW5lbCh0
aGlzLCBmcmFtZSwgcGFyYW1ldGVycy5nZXQoKSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5n
ZXQoKSkpCiAgICAgICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWJhOTg5MmM5ZjAzZWZhODRk
ZDMxNDNiNGZjM2Y3ODJlMGQ4MmZmYS4uM2M5YmEzNzliM2I5ZDAzNmUxNDA4OWI5MGM5MmZkMjRl
YTkwYTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIx
MCw3ICsxMjEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZlB0cjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRS
ZXBseT4pOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwotICAg
IHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkZpbGVD
aG9vc2VyU2V0dGluZ3MmKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpGaWxl
Q2hvb3NlclNldHRpbmdzJik7CiAgICAgdm9pZCBwcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
OwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
Y3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0
X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhOjpEZWxheWVkUmVwbHk+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRjNTEyNTlhNzg0ZDk0OTUxMDZkMzM4OTEwMjMx
ZmQ5NWQ3MmFjNmQuLmNhODhkNjAwYjcwZmI5YzgxYzJmOTVlNGNmMzE5MDdjZmFkNjRhMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNzEsNyArNzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlE
KSAtPiAoYm9vbCBzaG91bGRDbG9zZSkgRGVsYXllZAogICAgIFBhZ2VEaWRTY3JvbGwoKQotICAg
IFJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6RmlsZUNob29z
ZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQorICAgIFJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBhcmFtZXRlcnMpCiAgICAgUHJp
bnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQogICAgIFJ1bk1vZGFsKCkKICAgICBOb3Rp
ZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsZXJU
aHVtYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCAyZGU4ZjFlM2JlZjYzYzRlYjBkMzFkYmY4M2YzOTAwZWJlYTUwODQxLi45MDdi
MTdkOGRiZTE5NTkzYWY0ODgzMTgyMTBjMzczOGYxMmNjOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzIsNyArMTMyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVp
bnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQg
c2hyaW5rVGhyZXNob2xkKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkg
b3ZlcnJpZGU7CiAKLSAgICBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChX
ZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwg
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVz
dElEKSBvdmVycmlkZTsKICAgICBkb3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBkb2N1bWVudFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IGEwZjIyN2ZjMjAyMjNhYjFjYTU1MTQ3Mzk1OGY3N2IwNDM2YWU5ZWEuLjZjZjdm
MTEzMjE3ZjBlMDAxMTgzMDk1NTIyZWE4NjU1N2Q0ZmQzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNTYwLDcgKzU2MCw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBJbnRSZWN0JiBlbGVtCiAgICAgW21fY29udGVudFZpZXcgX3Nob3dQbGF5
YmFja1RhcmdldFBpY2tlcjpoYXNWaWRlbyBmcm9tUmVjdDplbGVtZW50UmVjdF07CiB9CiAKLWJv
b2wgUGFnZUNsaWVudEltcGw6OmhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T3Bl
blBhbmVsUGFyYW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eSogbGlzdGVuZXIpCiB7CiAgICAgW21fY29udGVudFZpZXcgX3Nob3dSdW5PcGVuUGFuZWw6
cGFyYW1ldGVycyByZXN1bHRMaXN0ZW5lcjpsaXN0ZW5lcl07CiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaAppbmRleCA3NGE2YTFhYzc4OTY1YzhjMTljOWM0YzM4ZDQzYzQyYjFhN2E2MjM3
Li5iZTAxMjFjMDQxNzA4MTkyNTAwYmI0NzE3NTQ3NDY0ZDkwYWMxMmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBPcGVuUGFuZWxQ
YXJhbWV0ZXJzOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNz
IEZsb2F0UXVhZDsKQEAgLTUzLDcgKzU3LDYgQEAgY2xhc3MgSW50U2l6ZTsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVudDsKIGNsYXNzIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIH0KQEAg
LTIwOSw3ICsyMTIsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClf
b3ZlcmZsb3dTY3JvbGxpbmdEaWRFbmQ7CiAtICh2b2lkKV9kaWRVcGRhdGVCbG9ja1NlbGVjdGlv
bldpdGhUb3VjaDooV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCB3aXRoRmxhZ3M6KFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3MpZmxhZ3MgZ3Jvd1RocmVzaG9sZDooQ0dGbG9hdClncm93VGhyZXNo
b2xkIHNocmlua1RocmVzaG9sZDooQ0dGbG9hdClzaHJpbmtUaHJlc2hvbGQ7CiAtICh2b2lkKV9z
aG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJPT0wpaGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKWVsZW1lbnRSZWN0OwotLSAodm9pZClfc2hvd1J1bk9wZW5QYW5lbDoo
V2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKilwYXJhbWV0ZXJzIHJlc3VsdExpc3RlbmVy
OihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxpc3RlbmVyOworLSAo
dm9pZClfc2hvd1J1bk9wZW5QYW5lbDooQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKilwYXJhbWV0
ZXJzIHJlc3VsdExpc3RlbmVyOihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkqKWxpc3RlbmVyOwogLSAodm9pZClhY2Nlc3NvcnlEb25lOwogLSAodm9pZClfZGlkSGFuZGxl
S2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVkOihCT09MKWV2ZW50
V2FzSGFuZGxlZDsKIC0gKFZlY3RvcjxXZWJLaXQ6Ok9wdGlvbkl0ZW0+JikgYXNzaXN0ZWROb2Rl
U2VsZWN0T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNmY0MjYyMDIzOGM0NjVkYzNjZWFm
MGJjZGFlOWU1M2VlMjFhNWYxYy4uZDNkMWY5ZDk0MjM3M2Y0ODVkOTNkMjU4ZWY1Zjk5MWZkMDIx
OTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM2NjEsNyArMzY2MSw3IEBAIHN0YXRpYyBib29s
IGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICBbX2FpclBsYXlSb3V0
ZVBpY2tlciBzaG93Omhhc1ZpZGVvIGZyb21SZWN0OmVsZW1lbnRSZWN0XTsKIH0KIAotLSAodm9p
ZClfc2hvd1J1bk9wZW5QYW5lbDooV2ViT3BlblBhbmVsUGFyYW1ldGVycyopcGFyYW1ldGVycyBy
ZXN1bHRMaXN0ZW5lcjooV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopbGlzdGVuZXIK
Ky0gKHZvaWQpX3Nob3dSdW5PcGVuUGFuZWw6KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyopcGFy
YW1ldGVycyByZXN1bHRMaXN0ZW5lcjooV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSop
bGlzdGVuZXIKIHsKICAgICBBU1NFUlQoIV9maWxlVXBsb2FkUGFuZWwpOwogICAgIGlmIChfZmls
ZVVwbG9hZFBhbmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5oCmluZGV4IDY5ZDc0OTdkOWIwYzM0ZmIzNWU2ZmEwZTJk
OTQ2ZjdkNGFjZmNiYjIuLjc3YWMyMGE3MGZmYWVlYWRhODliNGI1OTMxYzdkYjVjNjZkNGVlMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBs
b2FkUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmls
ZVVwbG9hZFBhbmVsLmgKQEAgLTMwLDE1ICszMCwxOCBAQAogQGNsYXNzIFdLQ29udGVudFZpZXc7
CiBAcHJvdG9jb2wgV0tGaWxlVXBsb2FkUGFuZWxEZWxlZ2F0ZTsKIAorbmFtZXNwYWNlIEFQSSB7
CitjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNs
YXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5OwogfQogCiBAaW50ZXJmYWNlIFdLRmlsZVVwbG9hZFBhbmVsIDogVUlWaWV3Q29u
dHJvbGxlcgogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdLRmlsZVVwbG9hZFBh
bmVsRGVsZWdhdGU+IGRlbGVnYXRlOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tD
b250ZW50VmlldyAqKXZpZXc7Ci0tICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooV2ViS2l0
OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKilwYXJhbWV0ZXJzIHJlc3VsdExpc3RlbmVyOihXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxpc3RlbmVyOworLSAodm9pZClw
cmVzZW50V2l0aFBhcmFtZXRlcnM6KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyopcGFyYW1ldGVy
cyByZXN1bHRMaXN0ZW5lcjooV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KilsaXN0ZW5lcjsKIC0gKHZvaWQpZGlzbWlzczsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXgg
NzJkMmI5ODZiOGY4YWFhYTc5MTY0OTM2NWMwNTlmZDhkNTVhY2MxZC4uYzE1MjRkNTUzOWQ1YmIy
OTc4N2M3NDU1NDJjNDNiY2Q5YzZhNmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC0zMCwxMyArMzAs
MTMgQEAKIAogI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQSURhdGEuaCIKKyNpbXBv
cnQgIkFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgog
I2ltcG9ydCAiV0tEYXRhLmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1VS
TENGLmgiCi0jaW1wb3J0ICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KQEAgLTMzMywyNCArMzMzLDIx
IEBAIHN0YXRpYyBVSUltYWdlKiBpY29uRm9yRmlsZShOU1VSTCAqZmlsZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAg
IHVybHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisgICAgVmVjdG9yPFN0cmluZz4g
ZmlsZW5hbWVzOworICAgIGZpbGVuYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsK
ICAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIGZpbGVVUkxzKQotICAgICAgICB1cmxzLnVuY2hl
Y2tlZEFwcGVuZChhZG9wdFJlZih0b0ltcGwoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVm
KWZpbGVVUkwpKSkpOwotICAgIFJlZjxBUEk6OkFycmF5PiBmaWxlVVJMc1JlZiA9IEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMpKTsKKyAgICAgICAgZmlsZW5hbWVzLnVuY2hlY2tlZEFw
cGVuZChmaWxlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CiAKICAgICBOU0RhdGEgKmpw
ZWcgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKGljb25JbWFnZSwgMS4wKTsKICAgICBSZWZQ
dHI8QVBJOjpEYXRhPiBpY29uSW1hZ2VEYXRhUmVmID0gYWRvcHRSZWYodG9JbXBsKFdLRGF0YUNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihbanBlZyBieXRlc10p
LCBbanBlZyBsZW5ndGhdKSkpOwogCi0gICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBkaXNwbGF5U3Ry
aW5nUmVmID0gYWRvcHRSZWYodG9JbXBsKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilkaXNwbGF5U3RyaW5nKSkpOwotCi0gICAgX2xpc3RlbmVyLT5jaG9vc2VGaWxlcyhm
aWxlVVJMc1JlZi5wdHIoKSwgZGlzcGxheVN0cmluZ1JlZi5nZXQoKSwgaWNvbkltYWdlRGF0YVJl
Zi5nZXQoKSk7CisgICAgX2xpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMsIGRpc3BsYXlT
dHJpbmcsIGljb25JbWFnZURhdGFSZWYuZ2V0KCkpOwogICAgIFtzZWxmIF9kaXNwYXRjaERpZERp
c21pc3NdOwogfQogCiAjcHJhZ21hIG1hcmsgLSBQcmVzZW50IC8gRGlzbWlzcyBBUEkKIAotLSAo
dm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVy
cyopcGFyYW1ldGVycyByZXN1bHRMaXN0ZW5lcjooV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5KilsaXN0ZW5lcgorLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KEFQ
STo6T3BlblBhbmVsUGFyYW1ldGVycyopcGFyYW1ldGVycyByZXN1bHRMaXN0ZW5lcjooV2ViS2l0
OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KilsaXN0ZW5lcgogewogICAgIEFTU0VS
VCghX2xpc3RlbmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGEyMGQ1MDkxNGQ0MWNmZjMyMWRjMWNmMjJmNWJiYjBhOGI5
OTc3ODYuLmI2NTJiYmNmZDI4NzczNDM0NmNhNmVjNzMyOTg2NjhlNDM5ZjE5ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4
NSw2ICsyODUsNyBAQAogCQkxQTY1NjNFNDFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVh
dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE2NTYzRTIxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLzsgfTsK
IAkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY1NjNFMzFCN0E4QzUw
MDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCAqLzsgfTsKIAkJMUE2NkJGOEYxOEEwNTJF
RDAwMjA3MUI0IC8qIFdLV2ViVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY2QkY4RTE4QTA1MkVEMDAyMDcxQjQgLyogV0tXZWJW
aWV3SW50ZXJuYWwuaCAqLzsgfTsKKwkJMUE2N0NEMkUxQ0JDNTEzRjAwQkZFM0VBIC8qIFdLT3Bl
blBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTY3Q0QyRDFDQkM1MTNGMDBCRkUzRUEgLyogV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzSW50ZXJuYWwuaCAqLzsgfTsKIAkJMUE2RjlGOTAxMUUxM0VGQzAwREIxMzcxIC8q
IENvbW1hbmRMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLzsgfTsKIAkJ
MUE2RjlGQjcxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lUE9TSVguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RjlGQjYxMUUxNDA4NTAw
REIxMzcxIC8qIENvbW1hbmRMaW5lUE9TSVguY3BwICovOyB9OwogCQkxQTZGQTIxRTFCRDA0MzVC
MDBBQUE2NTAgLyogV0tGcmFtZUluZm9Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZGQTIxRDFCRDA0MzVCMDBBQUE2NTAgLyogV0tGcmFt
ZUluZm9Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTQzNiw2ICs0MzcsOCBAQAogCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLzsgfTsK
IAkJMUFDNzVBMUIxQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzVBMUExQjMz
NjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oICovOyB9OwogCQkxQUM3NUEx
RTFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzVBMUMxQjMzNjk1RTAw
NTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLzsgfTsKKwkJMUFDQzUwRjEx
Q0JDMzgxRDAwM0M3RDAzIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0M1MEVGMUNCQzM4MUQwMDNDN0Qw
MyAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gKi87IH07CisJCTFBQ0M1MEYyMUNCQzM4MUQw
MDNDN0QwMyAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0M1MEYwMUNCQzM4MUQwMDNDN0QwMyAvKiBXS09w
ZW5QYW5lbFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CiAJCTFBQ0M4N0JBMTk4MUMzNDEwMDNEMUFGNCAvKiBXS05hdmlnYXRpb25Qcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUND
ODdCOTE5ODFDMzQxMDAzRDFBRjQgLyogV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQ0VDRDI0MTcxNjJEQjEw
MDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFQ0QyMjE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFy
ZWFNYXAuY3BwICovOyB9OwogCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFy
ZWFNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
Q0VDRDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovOyB9OwpAQCAtMTUw
NCw4ICsxNTA3LDggQEAKIAkJQkM4NTdGN0UxMkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxREZFQTMxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlCQzg1N0Y4NTEyQjgyRDBCMDBFREVCMkUg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODU3RjgzMTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlCQzg1N0Y4NjEyQjgyRDBCMDBFREVCMkUg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGODQxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLzsgfTsKLQkJQkM4NTdGQjUxMkI4MzBFNjAwRURF
QjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzLmggKi87IH07Ci0JCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDODU3RkI0MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJQkM4NTdGQjUxMkI4MzBFNjAwRURFQjJFIC8qIEFQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0
ZXJzLmggKi87IH07CisJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDODU3RkI0MTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cCAqLzsgfTsKIAkJQkM4NTdGRTYxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1l
dGVyc1JlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4NTdGRTQxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDODU4MDYy
MTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMURGRThFMTJCMzFDQTgw
MDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJQkM4NTgw
NjMxMkI4NTA1NzAwRURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0ZFNTEyQjg0M0Q4
MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcCAqLzsgfTsKQEAgLTIyMzAs
NiArMjIzMyw3IEBACiAJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0
dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXaW5kb3dG
ZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjU2M0UzMUI3QThD
NTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElXaW5kb3dGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTY2QkY4RTE4QTA1MkVEMDAyMDcxQjQgLyogV0tXZWJWaWV3SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJWaWV3SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2N0NEMkQxQ0JDNTEzRjAwQkZFM0VBIC8qIFdLT3Bl
blBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBNkQxNDFGMUIwMTY3RDUwMDc4NUZGMCAvKiBJbmZvLU9TWC0xMC45LTEwLjEw
LnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiSW5mby1PU1gtMTAuOS0x
MC4xMC5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkQxNDIxMUIwMTY4
MTYwMDc4NUZGMCAvKiBQbHVnaW5TZXJ2aWNlLjMyLTY0LTEwLjktMTAuMTAuSW5mby5wbGlzdCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBuYW1lID0gIlBsdWdpblNlcnZpY2UuMzItNjQtMTAu
OS0xMC4xMC5JbmZvLnBsaXN0IjsgcGF0aCA9ICJQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFj
L1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZS4zMi02NC0xMC45LTEwLjEwLkluZm8ucGxpc3QiOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAv
KiBDb21tYW5kTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5k
TGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQwNCw2ICsyNDA4LDggQEAK
IAkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRp
c2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmdEZXRlY3Rpb25E
aXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3NUExQzFCMzM2OTVF
MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUNDNTBFRjFDQkMzODFEMDAzQzdEMDMgLyogV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQUNDNTBGMDFDQkMzODFEMDAzQzdEMDMgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3BlblBhbmVsUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNDODdCOTE5ODFDMzQxMDAzRDFBRjQg
LyogV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS05hdmlnYXRpb25Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
Q0VDRDIyMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlQXJlYU1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQ0VDRDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJl
YU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYU1hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU2Myw4ICszNTY5LDggQEAKIAkJQkM4
NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VQcm94eU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDODU3RkIzMTJC
ODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
ODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8qIEFQ
SU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNS
ZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODU3RkU1MTJCODQzRDgw
MEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjIxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ZpZXcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MTIsOCArNDUxOCw2IEBACiAJCQkJOTA1NjIwRTkxMkJD
MjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuaCAqLywKIAkJCQlDMDMzN0RBRjEyN0Ey
OEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgKi8sCiAJCQkJQkNGNjlGOTgxMTc2Q0VE
NjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCAqLywKLQkJCQlCQzg1N0ZCNDEy
QjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgKi8sCi0JCQkJQkM4
NTdGQjMxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLywKIAkJ
CQlDMDZDNjA5MzEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgKi8sCiAJCQkJQzA2QzYwOTQxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCAqLywKIAkJCQlCQzdCNjI1MTEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdy
b3VwRGF0YS5jcHAgKi8sCkBAIC01MTM2LDYgKzUxNDAsOSBAQAogCQkJCTFBRDYwRjVDMThFMjBG
NEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggKi8sCiAJCQkJMUFENjBGNUIxOEUyMEY0
QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMubW0gKi8sCiAJCQkJMUFENjBGNUYxOEUyMEY3
NDAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oICovLAorCQkJCTFBQ0M1MEVG
MUNCQzM4MUQwMDNDN0QwMyAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gKi8sCisJCQkJMUFD
QzUwRjAxQ0JDMzgxRDAwM0M3RDAzIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5oICovLAorCQkJ
CTFBNjdDRDJEMUNCQzUxM0YwMEJGRTNFQSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5h
bC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC01OTgyLDYgKzU5ODksOCBAQAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAv
KiBtYWMgKi8sCiAJCQkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25D
bGllbnQuaCAqLywKIAkJCQk5OTBEMjhCMzFDNjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaCAqLywKKwkJCQlCQzg1N0ZCNDEyQjgzMEU2MDBFREVCMkUgLyogQVBJ
T3BlblBhbmVsUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJQkM4NTdGQjMxMkI4MzBFNjAwRURFQjJF
IC8qIEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLywKIAkJCQkwNzZFODg0RDFBMTNDQURGMDA1
RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQk4Mzg5MUI2MjFBNjhCMzQy
MDAzMEYzODYgLyogQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKIAkJCQkxRjdEMzZD
MDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxvYWRDbGllbnQuaCAqLywKQEAgLTczNDcsNiAr
NzM1Niw3IEBACiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEg
LyogRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdENENBMTI4OEFBQTcw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUNDNTBGMjFD
QkMzODFEMDAzQzdEMDMgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUQyNUU5NjE2N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCN0Q2MUExMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3MDcsNyArNzcxNyw3
IEBACiAJCQkJMzFCQTkyNEUxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNEIxNDg5OTdDMjAwODEwRDcx
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFB
MkVDNEUxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGQjUxMkI4MzBFNjAwRURFQjJFIC8q
IEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODU3Rjg1MTJC
ODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxREZFQTQxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDhGMTBGNDM3QTAwMDU4QzE1
QSAvKiBXZWJQYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTc4MjQsNiArNzgzNCw3IEBACiAJCQkJ
QkM3MDQzQ0MxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFBNzI4REUxQjFCQUQzODAwMTAyRUVFIC8qIFdLQnVuZGxlTmF2
aWdhdGlvbkFjdGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEJFRkUxMTIwQTFB
NEMwMEZCQTBDNyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFB
NjdDRDJFMUNCQzUxM0YwMEJGRTNFQSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NzQ1MEMxMjYzQjE1NTAwNkYwRjEyIC8qIFdLQnVuZGxl
Tm9kZUhhbmRsZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjA1MjgxMTFDOTQyODQw
MDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRjQ3RkY3MTcy
NzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
OTAzNSw2ICs5MDQ2LDcgQEAKIAkJCQk3NTNFM0UwRDE4ODczOTg1MDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIwRTQxMkRDRTJGRjAwQ0FBRTJD
IC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDFBMjYwMTEyNjYy
RjIxMDBDOUVENTUgLyogU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUFDQzUwRjExQ0JDMzgxRDAwM0M3RDAzIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTI0QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyog
U2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQUYwNkQ3MThCRDFBNDcw
MDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8s
CkBAIC05MTkwLDcgKzkyMDIsNyBAQAogCQkJCTMxQkE5MjREMTQ4ODMxMjYwMDYyRURCNSAvKiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxQTJFQzRBMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNEQxNDg5OTdDMjAwODEwRDcxIC8qIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDODU3RkI2MTJC
ODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0ZXJz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODU3Rjg2MTJCODJEMEIwMEVERUIyRSAvKiBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1N0Y3RTEy
QjgyQ0VFMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21hdGlvblBy
b3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApp
bmRleCAyN2QwOTI4YTE2OTk4MTdlNmUzNmIxYzYxNTQwOTNlNDU2ODc0Mzk4Li5mNDE4M2FmZmMz
OGNlNWQ4ZGM4MDk1MWE2ODRhNTA0OGQwZjFmNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCi0j
aW5jbHVkZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTcxOCw3ICs3MTcsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4gcHJwRmlsZQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpmcmFtZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5PcGVuUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwg
ZmlsZUNob29zZXItPnNldHRpbmdzKCkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuT3BlblBhbmVsKHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbUZyYW1lKGZyYW1lKSwgZmlsZUNob29zZXItPnNldHRpbmdzKCkpKTsKIH0K
IAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRmlsZUljb25Mb2FkZXIqIGxvYWRlcikK
</data>
<flag name="review"
          id="300704"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>