<?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>209678</bug_id>
          
          <creation_ts>2020-03-27 13:11:12 -0700</creation_ts>
          <short_desc>API::PageConfiguration may have conflicting preference values between WebPreferences and WebPreferencesStore::ValueMap instance variables</short_desc>
          <delta_ts>2020-04-02 11:37:12 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1634963</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 13:11:12 -0700</bug_when>
    <thetext>API::PageConfiguration may have conflicting preference values between WebPreferences and WebPreferencesStore::ValueMap instance variables.

In other words, it&apos;s possible for this invariant NOT to be true for any preference (not just attachmentElementEnabled) on an API::PageConfiguration object (named `pageConfiguration`):

    pageConfiguration.preferences()-&gt;attachmentElementEnabled() == pageConfiguration.preferencesStore().getBoolValueForKey(WebPreferencesKey::attachmentElementEnabledKey())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634964</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-27 13:11:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/60981271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634983</commentid>
    <comment_count>2</comment_count>
      <attachid>394754</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 13:49:46 -0700</bug_when>
    <thetext>Created attachment 394754
Patch v1 (check EWS)

This is literally the dumbest patch that would &quot;fix&quot; the issue.  I want to see what fails.

The obvious failure point would be a crash if API::PageConfiguration::m_preferences isn&apos;t set before m_preferenceValues is used.

We probably need to require a WebPreferences object when creating an API::PageConfiguration object--or construct a default WebPreferences object--to prevent such the crash if it occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634984</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 13:51:24 -0700</bug_when>
    <thetext>The content of attachment 394754 has been deleted for the following reason:

Wrong file uploaded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634986</commentid>
    <comment_count>4</comment_count>
      <attachid>394755</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 13:52:34 -0700</bug_when>
    <thetext>Created attachment 394755
Patch v2 (check EWS)

This is literally the dumbest patch that would &quot;fix&quot; the issue.  I want to see what fails.

The obvious failure point would be a crash if API::PageConfiguration::m_preferences isn&apos;t set before m_preferenceValues is used.

We probably need to require a WebPreferences object when creating an API::PageConfiguration object--or construct a default WebPreferences object--to prevent such the crash if it occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635084</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 18:46:18 -0700</bug_when>
    <thetext>Sam, if you have insight about this topic (such as why API::PageConfiguration::preferenceValues() and API::PageConfiguration::preferences()::m_store aren&apos;t kept in sync), or potential future refactoring directions, I&apos;d appreciate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635085</commentid>
    <comment_count>6</comment_count>
      <attachid>394777</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 18:59:33 -0700</bug_when>
    <thetext>Created attachment 394777
Patch v3 (check EWS)

This is Patch v2 plus a required WebKit::WebPreferences argument to the API::PageConfiguration constructor.

I&apos;m sure this isn&apos;t correct, but I want to see what fails with this change on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635103</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 20:29:12 -0700</bug_when>
    <thetext>I think I have a better fix--remove API::PageConfiguration::preferenceValues() and then fix the compiler errors.  There are only two source files where this needs to be done for the macOS port, and tests should tell me if the API::PageConfiguration::preferences() object is not set when the settings are changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635119</commentid>
    <comment_count>8</comment_count>
      <attachid>394789</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 21:14:22 -0700</bug_when>
    <thetext>Created attachment 394789
Patch v4 (check EWS)

This is crazy enough it just might work.

It removes API::PageConfiguration::preferenceValues() and then fixes build errors by using setters on API::PageConfiguration::preferences() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635121</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 21:19:22 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #8)
&gt; Created attachment 394789 [details]
&gt; Patch v4 (check EWS)
&gt; 
&gt; This is crazy enough it just might work.
&gt; 
&gt; It removes API::PageConfiguration::preferenceValues() and then fixes build
&gt; errors by using setters on API::PageConfiguration::preferences() instead.

Modulo some iOS build errors due to typos.  Checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635123</commentid>
    <comment_count>10</comment_count>
      <attachid>394790</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 21:21:34 -0700</bug_when>
    <thetext>Created attachment 394790
Patch v5 (check EWS)

Crazy enough to work v2.  Fixed iOS build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635126</commentid>
    <comment_count>11</comment_count>
      <attachid>394791</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-27 22:57:30 -0700</bug_when>
    <thetext>Created attachment 394791
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635159</commentid>
    <comment_count>12</comment_count>
      <attachid>394791</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-28 04:12:09 -0700</bug_when>
    <thetext>Comment on attachment 394791
Patch v6

Need to investigate LayoutTests/editing/undo-manager/ test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635210</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-28 10:41:30 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #12)
&gt; Comment on attachment 394791 [details]
&gt; Patch v6
&gt; 
&gt; Need to investigate LayoutTests/editing/undo-manager/ test failures.

The tests that are failing all have this:

&lt;!DOCTYPE html&gt; &lt;!-- webkit-test-runner [ enableUndoManagerAPI=true ] --&gt;

Tim Horton was telling someone that there is a check (in WebKitTestRunner?) that determines whether a new WebContent process needs to be started based on whether configuration/preferences changed.  I wonder if that&apos;s the issue here?  I don&apos;t recall where that was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635212</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-28 10:47:13 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #13)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #12)
&gt; &gt; Comment on attachment 394791 [details]
&gt; &gt; Patch v6
&gt; &gt; 
&gt; &gt; Need to investigate LayoutTests/editing/undo-manager/ test failures.
&gt; 
&gt; The tests that are failing all have this:
&gt; 
&gt; &lt;!DOCTYPE html&gt; &lt;!-- webkit-test-runner [ enableUndoManagerAPI=true ] --&gt;
&gt; 
&gt; Tim Horton was telling someone that there is a check (in WebKitTestRunner?)
&gt; that determines whether a new WebContent process needs to be started based
&gt; on whether configuration/preferences changed.  I wonder if that&apos;s the issue
&gt; here?  I don&apos;t recall where that was.

I think this was struct TestOptions::hasSameInitializationOptions() in TestOptions.h, but `enableUndoManagerAPI` is checked there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635214</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-28 10:50:19 -0700</bug_when>
    <thetext>Added some fprintf() debugging statements, and it looks like the WKWebViewConfiguration setting is not being propagated to the RuntimeEnabledFeatures setting while running LayoutTests/editing/undo-manager/undo-manager-add-item-exceptions.html.  Time to print some stack traces.

&gt;&gt;&gt;&gt;&gt; TestController::platformCreateWebView(): options.enableUndoManagerAPI = YES
&gt;&gt;&gt;&gt;&gt; -[WKWebView initWithFrame:configuration:]: configuration._undoManagerAPIEnabled = YES
&gt;&gt;&gt;&gt;&gt; -[WKWebView _setupPageConfiguration:]: !![_configuration _undoManagerAPIEnabled] = YES
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::setUndoManagerAPIEnabled(): was: NO  now: NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO
&gt;&gt;&gt;&gt;&gt; RuntimeEnabledFeatures::undoManagerAPIEnabled(): NO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635907</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-30 18:48:08 -0700</bug_when>
    <thetext>So here&apos;s the fix for the LayoutTests/editing/undo-manager/ failures:

-&lt;!DOCTYPE html&gt; &lt;!-- webkit-test-runner [ enableUndoManagerAPI=true ] --&gt;
+&lt;!DOCTYPE html&gt; &lt;!-- webkit-test-runner [ internal:UndoManagerAPIEnabled=true ] --&gt;

It turns out that for internal settings, the second way is the correct way to set this so that it gets propagated everywhere it needs to go.  I can probably remove support for `enableUndoManagerAPI` from WebKitTestRunner/DRT and the TestOptions class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636115</commentid>
    <comment_count>17</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 10:39:12 -0700</bug_when>
    <thetext>Created attachment 395063
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636121</commentid>
    <comment_count>18</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 10:42:09 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:-153
&gt; -    if (options.enableUndoManagerAPI)
&gt; -        [copiedConfiguration _setUndoManagerAPIEnabled:YES];

Note that I did not remove WKWebViewConfiguration._undoManagerAPIEnabled because it was exposed as SPI in the original patch that added it, even though this call was the last user of it:

@property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636140</commentid>
    <comment_count>19</comment_count>
      <attachid>395072</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 11:13:45 -0700</bug_when>
    <thetext>Created attachment 395072
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636141</commentid>
    <comment_count>20</comment_count>
      <attachid>395072</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 11:14:23 -0700</bug_when>
    <thetext>Comment on attachment 395072
Patch v5

Posted to wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636143</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 11:14:54 -0700</bug_when>
    <thetext>The content of attachment 395072 has been deleted for the following reason:

Posted to wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636326</commentid>
    <comment_count>22</comment_count>
      <attachid>395063</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 17:37:41 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt;&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:-153
&gt;&gt; -        [copiedConfiguration _setUndoManagerAPIEnabled:YES];
&gt; 
&gt; Note that I did not remove WKWebViewConfiguration._undoManagerAPIEnabled because it was exposed as SPI in the original patch that added it, even though this call was the last user of it:
&gt; 
&gt; @property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0));

Seems like you should at least mark it deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636329</commentid>
    <comment_count>23</comment_count>
      <attachid>395063</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 17:44:54 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        API::PageConfiguration::m_preferenceValues and

I&apos;m wondering why we had this in the first place.

&gt; Source/WebKit/UIProcess/API/mac/WKView.mm:1198
&gt; +    configuration-&gt;preferences()-&gt;setSystemLayoutDirection(static_cast&lt;uint32_t&gt;(toUserInterfaceLayoutDirection(self.userInterfaceLayoutDirection)));

static_cast&lt;TextDirection&gt;

&gt; Tools/TestWebKitAPI/Tests/WebKit/mac/GetBackingScaleFactor.mm:71
&gt; +    WKRetainPtr&lt;WKPageGroupRef&gt; pageGroup = adoptWK(WKPageGroupCreateWithIdentifier(Util::toWK(&quot;GetBackingScaleFactorPageGroup&quot;).get()));

auto

&gt;&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:-153
&gt;&gt; -        [copiedConfiguration _setUndoManagerAPIEnabled:YES];
&gt; 
&gt; Note that I did not remove WKWebViewConfiguration._undoManagerAPIEnabled because it was exposed as SPI in the original patch that added it, even though this call was the last user of it:
&gt; 
&gt; @property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0));

Let&apos;s remove SPI if it&apos;s not used and hasn&apos;t been used by anything that needs it to stay around for binary compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636336</commentid>
    <comment_count>24</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 17:55:36 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt;&gt;&gt;&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:-153
&gt;&gt;&gt;&gt; -        [copiedConfiguration _setUndoManagerAPIEnabled:YES];
&gt;&gt;&gt; 
&gt;&gt;&gt; Note that I did not remove WKWebViewConfiguration._undoManagerAPIEnabled because it was exposed as SPI in the original patch that added it, even though this call was the last user of it:
&gt;&gt;&gt; 
&gt;&gt;&gt; @property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0));
&gt;&gt; 
&gt;&gt; Seems like you should at least mark it deprecated.
&gt; 
&gt; Let&apos;s remove SPI if it&apos;s not used and hasn&apos;t been used by anything that needs it to stay around for binary compatibility.

I&apos;m going to break this part out out into a separate patch (switching from &quot;enableUndoManagerAPI=true&quot; to &quot;internal:UndoManagerAPIEnabled=true&quot; for layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636369</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 20:21:00 -0700</bug_when>
    <thetext>*** Bug 209844 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636375</commentid>
    <comment_count>26</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-31 21:33:11 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt;&gt;&gt;&gt;&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:-153
&gt;&gt;&gt;&gt;&gt; -        [copiedConfiguration _setUndoManagerAPIEnabled:YES];
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Note that I did not remove WKWebViewConfiguration._undoManagerAPIEnabled because it was exposed as SPI in the original patch that added it, even though this call was the last user of it:
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; @property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0));
&gt;&gt;&gt; 
&gt;&gt;&gt; Seems like you should at least mark it deprecated.
&gt;&gt; 
&gt;&gt; Let&apos;s remove SPI if it&apos;s not used and hasn&apos;t been used by anything that needs it to stay around for binary compatibility.
&gt; 
&gt; I&apos;m going to break this part out out into a separate patch (switching from &quot;enableUndoManagerAPI=true&quot; to &quot;internal:UndoManagerAPIEnabled=true&quot; for layout tests.

Turns out these changes to stop using &quot;enableUndoManagerAPI&quot; only work with the other part of this patch, so I&apos;m leaving this here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636623</commentid>
    <comment_count>27</comment_count>
      <attachid>395063</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-01 13:10:46 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:-2775
&gt; -    return store;

Didn&apos;t this approach allow a given WebPageProxy to have settings that differed from the global preferences?

Is this needed to support some form of per-page preference setting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636762</commentid>
    <comment_count>28</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-01 18:38:24 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        API::PageConfiguration::m_preferenceValues and
&gt; 
&gt; I&apos;m wondering why we had this in the first place.

Well, because Chris Dumez thought in &lt;https://bugs.webkit.org/attachment.cgi?id=394576&amp;action=review&gt; that this looked suspicious in WebPageProxy.cpp:

    preferencesStore().getBoolValueForKey(WebPreferencesKey::attachmentElementEnabledKey())

And that this looked more correct:

    m_preferences-&gt;attachmentElementEnabled()

So in order to make the latter work in all cases, I eliminated API::PageConfiguration::m_preferenceValues and WebPageProxy::m_configurationPreferenceValues and forced all values to be stored on WebPreferences::store() instead, which is where they end up anyway the first time WebPageProxy::preferencesStore() is called.  (As I mention in reply to Bren&apos;t comment below, WebPageProxy::preferencesStore() just looks like it&apos;s implementing lazy initialization in way that requires WebProxyPage::preferencesStore() to be called at least once before direct methods on m_preferences work as expected.)

So I could have fixed this by somehow calling WebPageProxy::preferencesStore() somewhere in WKWebView&apos;s initialization code, but eliminating the lazy initialization seemed like a better solution.  I didn&apos;t see what advantage the lazy initialization had, especially when WebPageProxy::preferencesStore() recopied every value in m_configurationPreferenceValues each time it was called.

And as I mention a couple lines below, the only thing you have to do is to make sure that API::PageConfiguration::m_preferences is set to a valid WebPreferences object before setting values.  (Maybe there was a reason that API::PageConfiguration also needed to lazily set its m_preferences instance variable, but I&apos;m not sure what that was.  In all but one case (in -[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]), API::PageConfiguration::m_preferences already existed by the time it was needed.

&gt;&gt; Source/WebKit/UIProcess/API/mac/WKView.mm:1198
&gt;&gt; +    configuration-&gt;preferences()-&gt;setSystemLayoutDirection(static_cast&lt;uint32_t&gt;(toUserInterfaceLayoutDirection(self.userInterfaceLayoutDirection)));
&gt; 
&gt; static_cast&lt;TextDirection&gt;

Wil fix.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:-2775
&gt;&gt; -    return store;
&gt; 
&gt; Didn&apos;t this approach allow a given WebPageProxy to have settings that differed from the global preferences?
&gt; 
&gt; Is this needed to support some form of per-page preference setting?

No, I don&apos;t think it is.

This method simply copies all the values from m_configurationPreferenceValues back into the m_preferences-&gt;store() (and does it _every_ time you call the method; -[WKWebView _setupPageConfiguration:] stores nearly 50 values in it!), so after the first time it&apos;s called, every page would have the what was in m_preferences-&gt;store() with values in m_configurationPreferenceValues overriding them.

At best it was a way to override default preference settings with what was stored in m_configurationPreferenceValues, but using lazy initialization code with an implicit assumption that clients would _always_ call this:

    preferencesStore().getBoolValueForKey(WebPreferencesKey::attachmentElementEnabledKey())

Instead of this:

    m_preferences-&gt;attachmentElementEnabled()

In practice, WebPageProxy::preferencesStore() would just have to be called once (to copy the values from m_configurationPreferenceValues into m_preferences-&gt;store()), then calling direct methods like m_preferences-&gt;attachmentElementEnabled() would just work after that.  (This is undesirable because calling direct methods on m_preferences should always work the first time.)

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit/mac/GetBackingScaleFactor.mm:71
&gt;&gt; +    WKRetainPtr&lt;WKPageGroupRef&gt; pageGroup = adoptWK(WKPageGroupCreateWithIdentifier(Util::toWK(&quot;GetBackingScaleFactorPageGroup&quot;).get()));
&gt; 
&gt; auto

Wil fix this one and the line below it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636767</commentid>
    <comment_count>29</comment_count>
      <attachid>395063</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-01 19:18:55 -0700</bug_when>
    <thetext>Comment on attachment 395063
Patch v7

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/mac/WKView.mm:1198
&gt;&gt;&gt; +    configuration-&gt;preferences()-&gt;setSystemLayoutDirection(static_cast&lt;uint32_t&gt;(toUserInterfaceLayoutDirection(self.userInterfaceLayoutDirection)));
&gt;&gt; 
&gt;&gt; static_cast&lt;TextDirection&gt;
&gt; 
&gt; Wil fix.

Sorry, can&apos;t fix:

In file included from WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource30-mm.mm:3:
OpenSource/Source/WebKit/UIProcess/API/mac/WKView.mm:1198:60: error: reference to type &apos;const uint32_t&apos; (aka &apos;const unsigned int&apos;) could not bind to an rvalue of type &apos;WebCore::TextDirection&apos;
    configuration-&gt;preferences()-&gt;setSystemLayoutDirection(static_cast&lt;WebCore::TextDirection&gt;(toUserInterfaceLayoutDirection(self.userInterfaceLayoutDirection)));
                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource30-mm.mm:1:
In file included from OpenSource/Source/WebKit/UIProcess/API/mac/WKContentViewMac.mm:32:
In file included from OpenSource/Source/WebKit/UIProcess/WebPageProxy.h:70:
OpenSource/Source/WebKit/UIProcess/WebPreferences.h:62:32: note: passing argument to parameter &apos;value&apos; here
    FOR_EACH_WEBKIT_PREFERENCE(DECLARE_PREFERENCE_GETTER_AND_SETTERS)
                               ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636771</commentid>
    <comment_count>30</comment_count>
      <attachid>395235</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-01 19:34:12 -0700</bug_when>
    <thetext>Created attachment 395235
Patch v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636772</commentid>
    <comment_count>31</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-01 19:34:55 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #30)
&gt; Created attachment 395235 [details]
&gt; Patch v8

This fixed Alex&apos;s review feedback that didn&apos;t cause compiler errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636950</commentid>
    <comment_count>32</comment_count>
      <attachid>395235</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-02 11:00:09 -0700</bug_when>
    <thetext>Comment on attachment 395235
Patch v8

Looks good. I don&apos;t have any remaining concerns. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636969</commentid>
    <comment_count>33</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-02 11:37:12 -0700</bug_when>
    <thetext>Committed r259399: &lt;https://trac.webkit.org/changeset/259399&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395235.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>394754</attachid>
            <date>2020-03-27 13:49:46 -0700</date>
            <delta_ts>2020-03-27 13:49:46 -0700</delta_ts>
            <desc>Patch v1 (check EWS)</desc>
            <filename>crash_73477867_com.apple.WebKit.WebContent_20A237y-20A252_internal_20200327.zip</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394755</attachid>
            <date>2020-03-27 13:52:34 -0700</date>
            <delta_ts>2020-03-27 21:14:22 -0700</delta_ts>
            <desc>Patch v2 (check EWS)</desc>
            <filename>bug-209678-dumbest-thing-that-could-possibly-work.diff</filename>
            <type>text/plain</type>
            <size>2273</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IGQwOTE3NjUxZWY5Li4xNjM3NGI1OTFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC02OCw3
ICs2OCw2IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNvcHko
KSBjb25zdAogICAgIGNvcHktPm1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdGhpcy0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXI7CiAgICAgY29weS0+bV9wYWdlR3JvdXAgPSB0aGlzLT5tX3BhZ2VH
cm91cDsKICAgICBjb3B5LT5tX3ByZWZlcmVuY2VzID0gdGhpcy0+bV9wcmVmZXJlbmNlczsKLSAg
ICBjb3B5LT5tX3ByZWZlcmVuY2VWYWx1ZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VWYWx1ZXM7CiAg
ICAgY29weS0+bV9yZWxhdGVkUGFnZSA9IHRoaXMtPm1fcmVsYXRlZFBhZ2U7CiAgICAgY29weS0+
bV92aXNpdGVkTGlua1N0b3JlID0gdGhpcy0+bV92aXNpdGVkTGlua1N0b3JlOwogICAgIGNvcHkt
Pm1fd2Vic2l0ZURhdGFTdG9yZSA9IHRoaXMtPm1fd2Vic2l0ZURhdGFTdG9yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXgg
NThkMTk3ZDkwYjcuLmI0NzlkZTZkYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3
Q2F0ZWdvcnkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBWaXNpdGVk
TGlua1N0b3JlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwotY2xh
c3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNj
aGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKQEAgLTc3
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKCk7CiAgICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlByZWZlcmVuY2VzKik7
CiAKLSAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwJiBwcmVmZXJlbmNl
VmFsdWVzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlVmFsdWVzOyB9CisgICAgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygpIHsgcmV0dXJuICpj
b25zdF9jYXN0PFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAqPigmKHByZWZl
cmVuY2VzKCktPnN0b3JlKCkubV92YWx1ZXMpKTsgfQogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSopOwpAQCAtMTU2LDcgKzE1NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250
cm9sbGVyOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CiAg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7Ci0gICAgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBtX3ByZWZlcmVuY2VWYWx1ZXM7CiAg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3JlbGF0ZWRQYWdlOwogICAgIFJlZlB0
cjxXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU+IG1fdmlzaXRlZExpbmtTdG9yZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394777</attachid>
            <date>2020-03-27 18:59:33 -0700</date>
            <delta_ts>2020-03-27 21:14:22 -0700</delta_ts>
            <desc>Patch v3 (check EWS)</desc>
            <filename>bug-209678-dumbest-thing-that-could-possibly-work-with-WebPreferences-always-set.diff</filename>
            <type>text/plain</type>
            <size>6103</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IGQwOTE3NjUxZWY5Li4zMWUyZmI3MTM3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC00OCwy
NyArNDgsMjYgQEAKIG5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAot
UmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkKK1JlZjxQ
YWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZShSZWZQdHI8V2ViS2l0
OjpXZWJQcmVmZXJlbmNlcz4mJiBwcmVmZXJlbmNlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYWdlQ29uZmlndXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNv
bmZpZ3VyYXRpb24oV1RGTW92ZShwcmVmZXJlbmNlcykpKTsKIH0KIAotUGFnZUNvbmZpZ3VyYXRp
b246OlBhZ2VDb25maWd1cmF0aW9uKCkKK1BhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJh
dGlvbihSZWZQdHI8V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4mJiBwcmVmZXJlbmNlcykKIFBBR0Vf
Q09ORklHVVJBVElPTl9BRERJVElPTlMKIHsKKyAgICBtX3ByZWZlcmVuY2VzID0gV1RGTW92ZShw
cmVmZXJlbmNlcyk7CiB9CiAKIFBhZ2VDb25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24o
KSA9IGRlZmF1bHQ7CiAKIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246
OmNvcHkoKSBjb25zdAogewotICAgIGF1dG8gY29weSA9IGNyZWF0ZSgpOworICAgIGF1dG8gY29w
eSA9IGNyZWF0ZSh0aGlzLT5tX3ByZWZlcmVuY2VzLT5jb3B5KCkpOwogCiAgICAgY29weS0+bV9w
cm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CiAgICAgY29weS0+bV91c2VyQ29udGVu
dENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBjb3B5LT5t
X3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOwotICAgIGNvcHktPm1fcHJlZmVyZW5jZXMg
PSB0aGlzLT5tX3ByZWZlcmVuY2VzOwotICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVlcyA9IHRo
aXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKICAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0gdGhpcy0+
bV9yZWxhdGVkUGFnZTsKICAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rU3RvcmUgPSB0aGlzLT5tX3Zp
c2l0ZWRMaW5rU3RvcmU7CiAgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3JlID0gdGhpcy0+bV93
ZWJzaXRlRGF0YVN0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA1OGQxOTdkOTBiNy4uN2I0MDFjZThlM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5o
CkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgogI2luY2x1ZGUgIldlYlZpZXdDYXRlZ29yeS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBjbGFzcyBXZWJQYWdlR3JvdXA7
CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlBy
b2Nlc3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OwpAQCAtNTUsOSArNTQsMTAgQEAgY2xhc3MgV2Vic2l0ZVBvbGlj
aWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBh
Z2VDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VDb25maWd1cmF0
aW9uPiBjcmVhdGUoUmVmUHRyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+JiYpOwogCi0gICAgZXhw
bGljaXQgUGFnZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBQYWdlQ29uZmlndXJhdGlvbigpID0gZGVs
ZXRlOworICAgIGV4cGxpY2l0IFBhZ2VDb25maWd1cmF0aW9uKFJlZlB0cjxXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzPiYmKTsKICAgICB2aXJ0dWFsIH5QYWdlQ29uZmlndXJhdGlvbigpOwogCiAgICAg
UmVmPFBhZ2VDb25maWd1cmF0aW9uPiBjb3B5KCkgY29uc3Q7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwogICAgIHZv
aWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCi0gICAgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygpIHsgcmV0
dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZTo6VmFsdWVNYXAmIHByZWZlcmVuY2VWYWx1ZXMoKSB7IHJldHVybiAqY29uc3RfY2FzdDxXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwKj4oJihwcmVmZXJlbmNlcygpLT5zdG9y
ZSgpLm1fdmFsdWVzKSk7IH0KIAogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiByZWxhdGVkUGFn
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVsYXRlZFBhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKQEAgLTE1Niw3ICsxNTYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwotICAgIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNp
dGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAKaW5kZXgg
NzliZWQxZmQxZWMuLmY4ZGFkYzI3NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtNDIsNyArNDIs
NyBAQCBXS1R5cGVJRCBXS1BhZ2VDb25maWd1cmF0aW9uR2V0VHlwZUlEKCkKIAogV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiBXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
dG9BUEkoJkFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmxlYWtSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKCZBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoV2ViUHJlZmVyZW5j
ZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdCIsICJXZWJLaXREZWJ1ZyIpKS5sZWFrUmVmKCkp
OwogfQogCiBXS0NvbnRleHRSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldENvbnRleHQoV0tQYWdl
Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRl
eCA4NTM5YTJhMWNlYy4uMTIzODdhZGVhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0
ICJWZXJzaW9uQ2hlY2tzLmgiCi0jaW1wb3J0ICJXS1ByZWZlcmVuY2VzLmgiCisjaW1wb3J0ICJX
S1ByZWZlcmVuY2VzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2wuaCIKICNpbXBv
cnQgIldLUmV0YWluUHRyLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgpA
QCAtMTg1LDcgKzE4NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAKICAgICBXZWJLaXQ6Oklu
aXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUoc2VsZi5wcmVmZXJlbmNlcy0+X3ByZWZlcmVuY2VzLmdl
dCgpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
CkBAIC00NjIsNiArNDYyLDcgQEAgLSAoV0tQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAtICh2
b2lkKXNldFByZWZlcmVuY2VzOihXS1ByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKIHsKICAgICBf
cHJlZmVyZW5jZXMuc2V0KHByZWZlcmVuY2VzKTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLT5fcHJlZmVyZW5jZXMuZ2V0KCkpOwogfQogCiAtIChX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBkZGM2ZmZmYTMzMC4uYzA0YmEy
MWU2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0x
MTg5LDcgKzExODksNyBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oTlNVcwogCiAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYg
cGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZToo
V0tQYWdlUmVmKXJlbGF0ZWRQYWdlCiB7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNyZWF0
ZShTdHJpbmcoKSwgIldlYktpdCIsICJXZWJLaXREZWJ1ZyIpKTsKICAgICBjb25maWd1cmF0aW9u
LT5zZXRQcm9jZXNzUG9vbChXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKSk7CiAgICAgY29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZikpOwogICAg
IGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKFdlYktpdDo6dG9JbXBsKHJlbGF0ZWRQYWdl
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394789</attachid>
            <date>2020-03-27 21:14:22 -0700</date>
            <delta_ts>2020-03-27 21:21:34 -0700</delta_ts>
            <desc>Patch v4 (check EWS)</desc>
            <filename>bug-209678-crazy-enough-it-just-might-work.diff</filename>
            <type>text/plain</type>
            <size>23430</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IGQwOTE3NjUxZWY5Li4xNjM3NGI1OTFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC02OCw3
ICs2OCw2IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNvcHko
KSBjb25zdAogICAgIGNvcHktPm1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdGhpcy0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXI7CiAgICAgY29weS0+bV9wYWdlR3JvdXAgPSB0aGlzLT5tX3BhZ2VH
cm91cDsKICAgICBjb3B5LT5tX3ByZWZlcmVuY2VzID0gdGhpcy0+bV9wcmVmZXJlbmNlczsKLSAg
ICBjb3B5LT5tX3ByZWZlcmVuY2VWYWx1ZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VWYWx1ZXM7CiAg
ICAgY29weS0+bV9yZWxhdGVkUGFnZSA9IHRoaXMtPm1fcmVsYXRlZFBhZ2U7CiAgICAgY29weS0+
bV92aXNpdGVkTGlua1N0b3JlID0gdGhpcy0+bV92aXNpdGVkTGlua1N0b3JlOwogICAgIGNvcHkt
Pm1fd2Vic2l0ZURhdGFTdG9yZSA9IHRoaXMtPm1fd2Vic2l0ZURhdGFTdG9yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXgg
NThkMTk3ZDkwYjcuLmM1NmQ4OTc4MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3
Q2F0ZWdvcnkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBWaXNpdGVk
TGlua1N0b3JlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwotY2xh
c3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNj
aGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKQEAgLTc3
LDggKzc2LDYgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKCk7CiAgICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlByZWZlcmVuY2VzKik7
CiAKLSAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwJiBwcmVmZXJlbmNl
VmFsdWVzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlVmFsdWVzOyB9Ci0KICAgICBXZWJLaXQ6Oldl
YlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbGF0ZWRQYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKQEAgLTE1Niw3ICsxNTMsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJD
b250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFn
ZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2Vz
OwotICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNl
VmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsK
ICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDljMzlkMjlkNTI0Li5lMTcxNTZjODAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04OSw3ICs4OSw3IEBACiAjaW1wb3J0ICJX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisj
aW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLmgiCkBAIC00MzcsOTUgKzQzNyw5NSBAQCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0
aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoV2Vi
Q29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlv
biBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CiAKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5k
ZXJpbmddKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN1cHBy
ZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5j
cmVtZW50YWxSZW5kZXJpbmddKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbl0pKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oISFbX2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbl0pOwogI2lmICFQ
TEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEV4cG9zZSBXS1ByZWZlcmVuY2VzLl9zaG91bGRQ
cmludEJhY2tncm91bmRzIG9uIGlPUywgYWRvcHQgaXQgaW4gYWxsIGlPUyBjbGllbnRzLCBhbmQg
cmVtb3ZlIHRoaXMgYW5kIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX3ByaW50c0JhY2tncm91bmRz
LgotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFByaW50QmFja2dyb3VuZHNLZXkoKSwgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfcHJpbnRzQmFja2dy
b3VuZHNdKSk7Ci0jZW5kaWYKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjppbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRd
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdE1hcmt1cEVuYWJsZWRLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzSmF2
YVNjcmlwdE1hcmt1cF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRDb252ZXJ0UG9zaXRpb25T
dHlsZU9uQ29weUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHldKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6aHR0cEVxdWl2RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NNZXRhUmVmcmVzaF0pKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjphbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc10pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX2FsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNdKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkuc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygh
IVtfY29uZmlndXJhdGlvbiBfcHJpbnRzQmFja2dyb3VuZHNdKTsKKyNlbmRpZgorICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHBy
ZXNzaW9uVGltZW91dChbX2NvbmZpZ3VyYXRpb24gX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dEphdmFTY3JpcHRNYXJrdXBFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NKYXZhU2Ny
aXB0TWFya3VwXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNo
b3VsZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5KCEhW19jb25maWd1cmF0aW9uIF9jb252ZXJ0
c1Bvc2l0aW9uU3R5bGVPbkNvcHldKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0SFRUUEVxdWl2RW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzTWV0YVJl
ZnJlc2hdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoISFbX2NvbmZpZ3VyYXRpb24g
X2FsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNdKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhbX2NvbmZpZ3VyYXRpb24g
X3dhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3ddKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0RHJhd3NCYWNrZ3JvdW5kKFtfY29uZmlndXJhdGlvbiBfZHJhd3NCYWNrZ3Jv
dW5kXSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24o
W19jb25maWd1cmF0aW9uIF9pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb25dKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjppbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2luY29tcGxldGVJbWFnZUJvcmRl
ckVuYWJsZWRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5z
ZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3Jp
cHRzVW50aWxBZnRlckRvY3VtZW50TG9hZE9yRmlyc3RQYWludEtleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zaG91bGREZWZlckFzeW5j
aHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkXSkpOwotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OnNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZShzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzKCkpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfaW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZF0pOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG91bGREZWZlckFzeW5j
aHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkT3JGaXJzdFBhaW50KCEhW19jb25m
aWd1cmF0aW9uIF9zaG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1l
bnRMb2FkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3Vs
ZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMoc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcygpKTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG93c1VSTHNJblRvb2xUaXBz
RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25m
aWd1cmF0aW9uIF9zaG93c1VSTHNJblRvb2xUaXBzXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZp
Y2VDb250cm9sc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfc2VydmljZUNvbnRyb2xzRW5hYmxlZF0pKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjppbWFnZUNvbnRyb2xzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9pbWFnZUNvbnRyb2xzRW5hYmxlZF0pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2hvd3NVUkxzSW5Ub29s
VGlwc0VuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3dzVVJMc0luVG9vbFRpcHNdKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2VydmljZUNvbnRyb2xzRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfc2VydmljZUNvbnRyb2xzRW5hYmxlZF0pOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbWFnZUNvbnRyb2xzRW5hYmxlZCgh
IVtfY29uZmlndXJhdGlvbiBfaW1hZ2VDb250cm9sc0VuYWJsZWRdKTsKIAotICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OnVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3lLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZShjb252ZXJ0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShbX2Nv
bmZpZ3VyYXRpb24gdXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeV0pKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3koY29udmVydFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koW19jb25maWd1cmF0aW9uIHVz
ZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3ldKSk7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3
J3MgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgc28gb3VyIGNsaWVudCBoYXNuJ3QgaGFkIHRpbWUg
dG8gc2V0IG91ciB1c2VyIGludGVyZmFjZSBkaXJlY3Rpb24uCiAgICAgLy8gVGhlcmVmb3JlLCBh
Y2NvcmRpbmcgdG8gdGhlIGRvY3NbMV0sICJ0aGlzIHByb3BlcnR5IGNvbnRhaW5zIHRoZSB2YWx1
ZSByZXBvcnRlZCBieSB0aGUgYXBwJ3MgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBwcm9w
ZXJ0eS4iCiAgICAgLy8gWzFdIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvbWFj
L2RvY3VtZW50YXRpb24vQ29jb2EvUmVmZXJlbmNlL0FwcGxpY2F0aW9uS2l0L0NsYXNzZXMvTlNW
aWV3X0NsYXNzL2luZGV4Lmh0bWwjLy9hcHBsZV9yZWYvZG9jL3VpZC8yMDAwMDAxNC1TVzIyMgot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxheW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKGNvbnZlcnRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oc2VsZi51
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlcygpLT5zZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oY29udmVydFN5c3RlbUxheW91
dERpcmVjdGlvbihzZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVN
ZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja10pKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5dKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5s
aW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVk
aWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdKSk7Ci0gICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tl
eTo6YWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlTWVkaWFQbGF5YmFja10gJiYgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQ
bGF5YmFjaygpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5z
ZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGlj
eUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50KSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxheW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpU
ZXh0RGlyZWN0aW9uOjpMVFIpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dTZXR0aW5nQW55WEhS
SGVhZGVyRnJvbUZpbGVVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoc2hvdWxkQWxsb3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKCkpKTsKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzS2V5OjpzaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
d0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0
aW9uIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlld10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW4oISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5dKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZXMoKS0+c2V0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGUoISFbX2NvbmZpZ3VyYXRpb24gX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1Bs
YXlzSW5saW5lQXR0cmlidXRlXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2Vz
KCktPnNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCEhW19jb25maWd1cmF0
aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1Bp
Y3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlcygpLT5zZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KHN0YXRpY19jYXN0
PHVpbnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50
KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN5c3RlbUxheW91
dERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6VGV4dERpcmVjdGlvbjo6
TFRSKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93U2V0
dGluZ0FueVhIUkhlYWRlckZyb21GaWxlVVJMcyhzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFk
ZXJGcm9tRmlsZVVSTHMoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkt
PnNldFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCEhW19j
b25maWd1cmF0aW9uIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJl
dmlld10pOwogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
ZGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246
OkZpcnN0V2l0aERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkFQSSkpKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0RGV2aWNlT3JpZW50YXRpb25Q
ZXJtaXNzaW9uQVBJRW5hYmxlZChsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpG
aXJzdFdpdGhEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25BUEkpKTsKICNlbmRp
ZgogI2lmIFVTRShTWVNURU1fUFJFVklFVykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3
RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25m
aWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVtUHJldmlld0VuYWJsZWQoISFbX2NvbmZpZ3VyYXRp
b24gX3N5c3RlbVByZXZpZXdFbmFibGVkXSk7CiAjZW5kaWYKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAgICAgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZXMgbWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJHZXN0dXJlID0gW19jb25maWd1cmF0aW9uIG1lZGlhVHlwZXNSZXF1aXJpbmdVc2Vy
QWN0aW9uRm9yUGxheWJhY2tdOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JWaWRlb1BsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
KG1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyR2VzdHVyZSAmIFdLQXVkaW92aXN1YWxNZWRpYVR5cGVW
aWRlbykgPT0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZVZpZGVvKSk7Ci0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
cmVxdWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpWYWx1ZSgoKG1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyR2VzdHVyZSAmIFdL
QXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpbykgPT0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlv
KSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVUb0xvYWRWaWRlb0tleSgp
LCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHNob3VsZFJlcXVpcmVVc2VyR2Vz
dHVyZVRvTG9hZFZpZGVvKCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjptYWluQ29udGVudFVzZXJHZXN0
dXJlT3ZlcnJpZGVFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX21haW5Db250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJs
ZWRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWRLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBf
aW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6bWVkaWFE
YXRhTG9hZHNBdXRvbWF0aWNhbGx5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseV0pKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphdHRhY2htZW50RWxlbWVudEVuYWJsZWRLZXkoKSwgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5z
ZXRSZXF1aXJlc1VzZXJHZXN0dXJlRm9yVmlkZW9QbGF5YmFjaygobWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJHZXN0dXJlICYgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZVZpZGVvKSA9PSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlVmlkZW8pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygp
LT5zZXRSZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9QbGF5YmFjaygoKG1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyR2VzdHVyZSAmIFdLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpbykgPT0gV0tBdWRp
b3Zpc3VhbE1lZGlhVHlwZUF1ZGlvKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldFJlcXVpcmVzVXNlckdlc3R1cmVUb0xvYWRWaWRlbyhzaG91bGRSZXF1aXJlVXNl
ckdlc3R1cmVUb0xvYWRWaWRlbygpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0TWFpbkNvbnRlbnRVc2VyR2VzdHVyZU92ZXJyaWRlRW5hYmxlZCghIVtfY29uZmln
dXJhdGlvbiBfbWFpbkNvbnRlbnRVc2VyR2VzdHVyZU92ZXJyaWRlRW5hYmxlZF0pOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbnZpc2libGVBdXRvcGxheU5vdFBl
cm1pdHRlZCghIVtfY29uZmlndXJhdGlvbiBfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWRd
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0TWVkaWFEYXRhTG9h
ZHNBdXRvbWF0aWNhbGx5KCEhW19jb25maWd1cmF0aW9uIF9tZWRpYURhdGFMb2Fkc0F1dG9tYXRp
Y2FsbHldKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QXR0YWNo
bWVudEVsZW1lbnRFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9hdHRhY2htZW50RWxlbWVudEVu
YWJsZWRdKTsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpkYXRhRGV0ZWN0b3JUeXBlc0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90Pihmcm9tV0tEYXRh
RGV0ZWN0b3JUeXBlcyhbX2NvbmZpZ3VyYXRpb24gZGF0YURldGVjdG9yVHlwZXNdKSkpKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0RGF0YURldGVjdG9yVHlwZXMo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyb21XS0RhdGFEZXRlY3RvclR5cGVzKFtfY29uZmlndXJh
dGlvbiBkYXRhRGV0ZWN0b3JUeXBlc10pKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVz
KCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBs
YXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZp
Z3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNr
KCEhW19jb25maWd1cmF0aW9uIGFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrXSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YXBwbGVQYXlFbmFi
bGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gX2FwcGxlUGF5RW5hYmxlZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+c2V0QXBwbGVQYXlFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9hcHBsZVBheUVu
YWJsZWRdKTsKICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6bmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmtLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSgh
IVtfY29uZmlndXJhdGlvbiBfbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmtdKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShTdHJpbmcoW19jb25m
aWd1cmF0aW9uIF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydF0pKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydEFzRmFsbGJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydEFzRmFsbGJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCEhW19jb25maWd1
cmF0aW9uIF9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlya10pOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydChTdHJpbmcoW19jb25maWd1cmF0aW9uIF9tZWRpYUNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKS0+c2V0QWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydEFzRmFsbGJhY2soISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93TWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrXSk7CiAKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpj
b2xvckZpbHRlckVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfY29sb3JGaWx0ZXJFbmFibGVkXSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRDb2xvckZpbHRlckVuYWJsZWQoISFbX2NvbmZp
Z3VyYXRpb24gX2NvbG9yRmlsdGVyRW5hYmxlZF0pOwogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6ZWRpdGFi
bGVJbWFnZXNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZF0pKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5Ojp1bmRvTWFuYWdlckFQSUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfdW5kb01hbmFnZXJBUElFbmFibGVkXSkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRFZGl0YWJsZUltYWdlc0Vu
YWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZF0pOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRVbmRvTWFuYWdlckFQSUVuYWJsZWQo
ISFbX2NvbmZpZ3VyYXRpb24gX3VuZG9NYW5hZ2VyQVBJRW5hYmxlZF0pOwogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5RW5jcnlwdGVk
TWVkaWFBUElFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZF0pKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0TGVnYWN5RW5jcnlwdGVkTWVk
aWFBUElFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVu
YWJsZWRdKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5h
cHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIikpCi0gICAgICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKGZhbHNlKSk7CisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRTZXJ2aWNlV29ya2Vyc0VuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAKICAgICBpZiAo
IWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVTaXRlU3BlY2lm
aWNRdWlya3NBcmVFbmFibGVkQnlEZWZhdWx0KSkKLSAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6bmVlZHNT
aXRlU3BlY2lmaWNRdWlya3NLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZShmYWxzZSkpOworICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0
TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoZmFsc2UpOwogfQogCiAtICh2b2lkKV9zZXRVcFNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQppbmRleCBkZGM2ZmZmYTMzMC4uNDFiMTRiMjg0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zOSw3ICszOSw3IEBACiAjaW1wb3J0ICJX
ZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJX
ZWJWaWV3SW1wbC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIK
QEAgLTExOTQsNyArMTE5NCw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBj
b250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSCiAgICAgY29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZikpOwogICAg
IGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKFdlYktpdDo6dG9JbXBsKHJlbGF0ZWRQYWdl
KSk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGlyZWN0aW9u
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzZWxmLnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dFN5c3RlbUxheW91dERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9Vc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bv
b2w6KldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25m
aWd1cmF0aW9uKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA0ZWI3YWVlOGIzMS4uMWM3MjVmNjU1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtNDczLDcgKzQ3Myw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVm
CiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRo
aXMpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VV
bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKICAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdl
YlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCkBAIC01MTYsNyArNTE1LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBSZWYKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6c2V0RGlzYWJsZVNjcmVlblNpemVPdmVycmlkZShwcmVmZXJlbmNlc1N0b3JlKCkuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRl
S2V5KCkpKTsKKyAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5T
aXplT3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgpKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yNzM3LDE0ICsyNzM2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAKIFdlYlByZWZlcmVuY2VzU3RvcmUgV2ViUGFnZVByb3h5OjpwcmVm
ZXJlbmNlc1N0b3JlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT5zdG9yZSgp
OwotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSA9IG1fcHJlZmVyZW5jZXMtPnN0b3Jl
KCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwcmVmZXJlbmNlIDogbV9jb25maWd1cmF0aW9uUHJl
ZmVyZW5jZVZhbHVlcykKLSAgICAgICAgc3RvcmUubV92YWx1ZXMuc2V0KHByZWZlcmVuY2Uua2V5
LCBwcmVmZXJlbmNlLnZhbHVlKTsKLQotICAgIHJldHVybiBzdG9yZTsKKyAgICByZXR1cm4gbV9w
cmVmZXJlbmNlcy0+c3RvcmUoKTsKIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYTE4NzM1OTM2YS4u
YzRmNjFiZGMzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0y
NjI3LDcgKzI2MjcsNiBAQCBwcml2YXRlOgogCiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1f
Y3VycmVudEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hy
b25vdXMgfTsKIAotICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29uZmlndXJh
dGlvblByZWZlcmVuY2VWYWx1ZXM7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWc+IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzOwogICAgIGJv
b2wgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHsgZmFsc2UgfTsK
ICAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394790</attachid>
            <date>2020-03-27 21:21:34 -0700</date>
            <delta_ts>2020-03-27 22:57:27 -0700</delta_ts>
            <desc>Patch v5 (check EWS)</desc>
            <filename>bug-209678-crazy-enough-it-just-might-work-v2.diff</filename>
            <type>text/plain</type>
            <size>23431</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IGQwOTE3NjUxZWY5Li4xNjM3NGI1OTFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC02OCw3
ICs2OCw2IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNvcHko
KSBjb25zdAogICAgIGNvcHktPm1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdGhpcy0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXI7CiAgICAgY29weS0+bV9wYWdlR3JvdXAgPSB0aGlzLT5tX3BhZ2VH
cm91cDsKICAgICBjb3B5LT5tX3ByZWZlcmVuY2VzID0gdGhpcy0+bV9wcmVmZXJlbmNlczsKLSAg
ICBjb3B5LT5tX3ByZWZlcmVuY2VWYWx1ZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VWYWx1ZXM7CiAg
ICAgY29weS0+bV9yZWxhdGVkUGFnZSA9IHRoaXMtPm1fcmVsYXRlZFBhZ2U7CiAgICAgY29weS0+
bV92aXNpdGVkTGlua1N0b3JlID0gdGhpcy0+bV92aXNpdGVkTGlua1N0b3JlOwogICAgIGNvcHkt
Pm1fd2Vic2l0ZURhdGFTdG9yZSA9IHRoaXMtPm1fd2Vic2l0ZURhdGFTdG9yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXgg
NThkMTk3ZDkwYjcuLmM1NmQ4OTc4MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3
Q2F0ZWdvcnkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBWaXNpdGVk
TGlua1N0b3JlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwotY2xh
c3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNj
aGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKQEAgLTc3
LDggKzc2LDYgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKCk7CiAgICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlByZWZlcmVuY2VzKik7
CiAKLSAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwJiBwcmVmZXJlbmNl
VmFsdWVzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlVmFsdWVzOyB9Ci0KICAgICBXZWJLaXQ6Oldl
YlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbGF0ZWRQYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKQEAgLTE1Niw3ICsxNTMsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJD
b250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFn
ZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2Vz
OwotICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNl
VmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsK
ICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDljMzlkMjlkNTI0Li44MGM0NDZmZTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04OSw3ICs4OSw3IEBACiAjaW1wb3J0ICJX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisj
aW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLmgiCkBAIC00MzcsOTUgKzQzNyw5NSBAQCAtICh2b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0
aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25maWd1cmF0aW9uCiAKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoV2Vi
Q29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlv
biBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CiAKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5k
ZXJpbmddKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN1cHBy
ZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5j
cmVtZW50YWxSZW5kZXJpbmddKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbl0pKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oISFbX2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbl0pOwogI2lmICFQ
TEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEV4cG9zZSBXS1ByZWZlcmVuY2VzLl9zaG91bGRQ
cmludEJhY2tncm91bmRzIG9uIGlPUywgYWRvcHQgaXQgaW4gYWxsIGlPUyBjbGllbnRzLCBhbmQg
cmVtb3ZlIHRoaXMgYW5kIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX3ByaW50c0JhY2tncm91bmRz
LgotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFByaW50QmFja2dyb3VuZHNLZXkoKSwgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfcHJpbnRzQmFja2dy
b3VuZHNdKSk7Ci0jZW5kaWYKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjppbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRd
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdE1hcmt1cEVuYWJsZWRLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzSmF2
YVNjcmlwdE1hcmt1cF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRDb252ZXJ0UG9zaXRpb25T
dHlsZU9uQ29weUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHldKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6aHR0cEVxdWl2RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NNZXRhUmVmcmVzaF0pKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjphbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc10pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX2FsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNdKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3VsZFByaW50QmFja2dyb3VuZHMo
ISFbX2NvbmZpZ3VyYXRpb24gX3ByaW50c0JhY2tncm91bmRzXSk7CisjZW5kaWYKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW5jcmVtZW50YWxSZW5kZXJpbmdTdXBw
cmVzc2lvblRpbWVvdXQoW19jb25maWd1cmF0aW9uIF9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHBy
ZXNzaW9uVGltZW91dF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5z
ZXRKYXZhU2NyaXB0TWFya3VwRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzSmF2YVNj
cmlwdE1hcmt1cF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRT
aG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weSghIVtfY29uZmlndXJhdGlvbiBfY29udmVy
dHNQb3NpdGlvblN0eWxlT25Db3B5XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldEhUVFBFcXVpdkVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c01ldGFS
ZWZyZXNoXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMc10pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKCEhW19jb25maWd1cmF0aW9u
IF9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzXSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3coW19jb25maWd1cmF0aW9u
IF93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93XSk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnNldERyYXdzQmFja2dyb3VuZChbX2NvbmZpZ3VyYXRpb24gX2RyYXdzQmFja2dy
b3VuZF0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9u
KFtfY29uZmlndXJhdGlvbiBfaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uXSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6aW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9pbmNvbXBsZXRlSW1hZ2VCb3Jk
ZXJFbmFibGVkXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCku
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERlZmVyQXN5bmNocm9ub3VzU2Ny
aXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRPckZpcnN0UGFpbnRLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfc2hvdWxkRGVmZXJBc3lu
Y2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZF0pKTsKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjpzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcygpKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEluY29tcGxldGVJbWFnZUJvcmRlckVu
YWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2luY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWRdKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2hvdWxkRGVmZXJBc3lu
Y2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZE9yRmlyc3RQYWludCghIVtfY29u
ZmlndXJhdGlvbiBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3Vt
ZW50TG9hZF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG91
bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzKHNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMoKSk7
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvd3NVUkxzSW5Ub29sVGlw
c0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBfc2hvd3NVUkxzSW5Ub29sVGlwc10pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2
aWNlQ29udHJvbHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX3NlcnZpY2VDb250cm9sc0VuYWJsZWRdKSk7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc0tleTo6aW1hZ2VDb250cm9sc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfaW1hZ2VDb250cm9sc0VuYWJsZWRdKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3dzVVJMc0luVG9v
bFRpcHNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9zaG93c1VSTHNJblRvb2xUaXBzXSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNlcnZpY2VDb250cm9sc0Vu
YWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX3NlcnZpY2VDb250cm9sc0VuYWJsZWRdKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW1hZ2VDb250cm9sc0VuYWJsZWQo
ISFbX2NvbmZpZ3VyYXRpb24gX2ltYWdlQ29udHJvbHNFbmFibGVkXSk7CiAKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5Ojp1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWUoY29udmVydFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koW19j
b25maWd1cmF0aW9uIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3ldKSkpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9s
aWN5KGNvbnZlcnRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KFtfY29uZmlndXJhdGlvbiB1
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5XSkpOwogICAgIC8vIFdlIGFyZSBpbiB0aGUgVmll
dydzIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIHNvIG91ciBjbGllbnQgaGFzbid0IGhhZCB0aW1l
IHRvIHNldCBvdXIgdXNlciBpbnRlcmZhY2UgZGlyZWN0aW9uLgogICAgIC8vIFRoZXJlZm9yZSwg
YWNjb3JkaW5nIHRvIHRoZSBkb2NzWzFdLCAidGhpcyBwcm9wZXJ0eSBjb250YWlucyB0aGUgdmFs
dWUgcmVwb3J0ZWQgYnkgdGhlIGFwcCdzIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gcHJv
cGVydHkuIgogICAgIC8vIFsxXSBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21h
Yy9kb2N1bWVudGF0aW9uL0NvY29hL1JlZmVyZW5jZS9BcHBsaWNhdGlvbktpdC9DbGFzc2VzL05T
Vmlld19DbGFzcy9pbmRleC5odG1sIy8vYXBwbGVfcmVmL2RvYy91aWQvMjAwMDAwMTQtU1cyMjIK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rpb25LZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShjb252ZXJ0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKHNlbGYu
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKGNvbnZlcnRTeXN0ZW1MYXlv
dXREaXJlY3Rpb24oc2VsZi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSk7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c0lubGluZU1lZGlhUGxheWJhY2tdKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbktleSgpLCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NJ
bmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuXSkpOwotICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Omlu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2lubGluZU1l
ZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlXSkpOwotICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGljdHVyZUlu
UGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlh
UGxheWJhY2soKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCku
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3lLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oV2ViQ29yZTo6VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6Q29udGVudCkp
KTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rpb25LZXkoKSwgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6
VGV4dERpcmVjdGlvbjo6TFRSKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93U2V0dGluZ0FueVhI
UkhlYWRlckZyb21GaWxlVVJMc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlKHNob3VsZEFsbG93U2V0dGluZ0FueVhIUkhlYWRlckZyb21GaWxlVVJMcygpKSk7Ci0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc0tleTo6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXddKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2soISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja10p
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd3NJbmxpbmVN
ZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VzKCktPnNldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5l
QXR0cmlidXRlKCEhW19jb25maWd1cmF0aW9uIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQ
bGF5c0lubGluZUF0dHJpYnV0ZV0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayghIVtfY29uZmlndXJh
dGlvbiBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja10gJiYgc2hvdWxkQWxsb3dQ
aWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZXMoKS0+c2V0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oV2ViQ29yZTo6VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6Q29udGVu
dCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTeXN0ZW1MYXlv
dXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246
OkxUUikpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd1Nl
dHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoc2hvdWxkQWxsb3dTZXR0aW5nQW55WEhSSGVh
ZGVyRnJvbUZpbGVVUkxzKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygp
LT5zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldyghIVtf
Y29uZmlndXJhdGlvbiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1By
ZXZpZXddKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OmRldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkFQSUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9u
OjpGaXJzdFdpdGhEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25BUEkpKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldERldmljZU9yaWVudGF0aW9u
UGVybWlzc2lvbkFQSUVuYWJsZWQobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6
Rmlyc3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uQVBJKSk7CiAjZW5k
aWYKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtUHJldmll
d0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNldFN5c3RlbVByZXZpZXdFbmFibGVkKCEhW19jb25maWd1cmF0
aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZF0pOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogICAgIFdLQXVkaW92aXN1YWxNZWRpYVR5cGVzIG1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyR2VzdHVyZSA9IFtfY29uZmlndXJhdGlvbiBtZWRpYVR5cGVzUmVxdWlyaW5nVXNl
ckFjdGlvbkZvclBsYXliYWNrXTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJl
Rm9yVmlkZW9QbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KChtZWRpYVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBl
VmlkZW8pID09IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVWaWRlbykpOwotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OnJlcXVpcmVzVXNlckdlc3R1cmVGb3JBdWRpb1BsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoKChtZWRpYVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgJiBX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW8pID09IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRp
bykpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlVG9Mb2FkVmlkZW9LZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRSZXF1aXJlVXNlckdl
c3R1cmVUb0xvYWRWaWRlbygpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6bWFpbkNvbnRlbnRVc2VyR2Vz
dHVyZU92ZXJyaWRlRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlKCEhW19jb25maWd1cmF0aW9uIF9tYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFi
bGVkXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkS2V5
KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24g
X2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om1lZGlh
RGF0YUxvYWRzQXV0b21hdGljYWxseUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHldKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6YXR0YWNobWVudEVsZW1lbnRFbmFibGVkS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2F0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c2V0UmVxdWlyZXNVc2VyR2VzdHVyZUZvclZpZGVvUGxheWJhY2soKG1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyR2VzdHVyZSAmIFdLQXVkaW92aXN1YWxNZWRpYVR5cGVWaWRlbykgPT0gV0tBdWRpb3Zp
c3VhbE1lZGlhVHlwZVZpZGVvKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2V0UmVxdWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUGxheWJhY2soKChtZWRpYVR5cGVzUmVx
dWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW8pID09IFdLQXVk
aW92aXN1YWxNZWRpYVR5cGVBdWRpbykpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRSZXF1aXJlc1VzZXJHZXN0dXJlVG9Mb2FkVmlkZW8oc2hvdWxkUmVxdWlyZVVz
ZXJHZXN0dXJlVG9Mb2FkVmlkZW8oKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldE1haW5Db250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJsZWQoISFbX2NvbmZp
Z3VyYXRpb24gX21haW5Db250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJsZWRdKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW52aXNpYmxlQXV0b3BsYXlOb3RQ
ZXJtaXR0ZWQoISFbX2NvbmZpZ3VyYXRpb24gX2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldE1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseSghIVtfY29uZmlndXJhdGlvbiBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0
aWNhbGx5XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEF0dGFj
aG1lbnRFbGVtZW50RW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfYXR0YWNobWVudEVsZW1lbnRF
bmFibGVkXSk7CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6ZGF0YURldGVjdG9yVHlwZXNLZXkoKSwgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJvbVdLRGF0
YURldGVjdG9yVHlwZXMoW19jb25maWd1cmF0aW9uIGRhdGFEZXRlY3RvclR5cGVzXSkpKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldERhdGFEZXRlY3RvclR5cGVz
KHN0YXRpY19jYXN0PHVpbnQzMl90Pihmcm9tV0tEYXRhRGV0ZWN0b3JUeXBlcyhbX2NvbmZpZ3Vy
YXRpb24gZGF0YURldGVjdG9yVHlwZXNdKSkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NBaXJQbGF5Rm9yTWVkaWFQ
bGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25m
aWd1cmF0aW9uIGFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrXSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFj
ayghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja10pOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFwcGxlUGF5RW5h
YmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1
cmF0aW9uIF9hcHBsZVBheUVuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNldEFwcGxlUGF5RW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfYXBwbGVQYXlF
bmFibGVkXSk7CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om5lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrXSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6Om1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoU3RyaW5nKFtfY29u
ZmlndXJhdGlvbiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRdKSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnRBc0ZhbGxiYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnRBc0ZhbGxiYWNrXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXROZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayghIVtfY29uZmln
dXJhdGlvbiBfbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmtdKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQoU3RyaW5nKFtfY29uZmlndXJhdGlvbiBfbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VzKCktPnNldEFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnRBc0ZhbGxiYWNrKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd01lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFja10pOwogCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
Y29sb3JGaWx0ZXJFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX2NvbG9yRmlsdGVyRW5hYmxlZF0pKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0Q29sb3JGaWx0ZXJFbmFibGVkKCEhW19jb25m
aWd1cmF0aW9uIF9jb2xvckZpbHRlckVuYWJsZWRdKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmVkaXRh
YmxlSW1hZ2VzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRdKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6dW5kb01hbmFnZXJBUElFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3VuZG9NYW5hZ2VyQVBJRW5hYmxlZF0pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0RWRpdGFibGVJbWFnZXNF
bmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRdKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VW5kb01hbmFnZXJBUElFbmFibGVk
KCEhW19jb25maWd1cmF0aW9uIF91bmRvTWFuYWdlckFQSUVuYWJsZWRdKTsKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeUVuY3J5cHRl
ZE1lZGlhQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldExlZ2FjeUVuY3J5cHRlZE1l
ZGlhQVBJRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElF
bmFibGVkXSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBpZiAoIVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20u
YXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpKQotICAgICAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpzZXJ2aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZShmYWxzZSkpOworICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKGZhbHNlKTsKICNlbmRpZgogCiAgICAgaWYg
KCFsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdoZXJlU2l0ZVNwZWNp
ZmljUXVpcmtzQXJlRW5hYmxlZEJ5RGVmYXVsdCkpCi0gICAgICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoZmFsc2UpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGZhbHNlKTsKIH0KIAogLSAodm9pZClfc2V0VXBTUUxp
dGVEYXRhYmFzZVRyYWNrZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KaW5kZXggZGRjNmZmZmEzMzAuLjQxYjE0YjI4NDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzksNyArMzksNyBAQAogI2ltcG9ydCAi
V2ViS2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbXBvcnQg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAi
V2ViVmlld0ltcGwuaCIKICNpbXBvcnQgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgi
CkBAIC0xMTk0LDcgKzExOTQsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
Y29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUgogICAgIGNvbmZp
Z3VyYXRpb24tPnNldFBhZ2VHcm91cChXZWJLaXQ6OnRvSW1wbChwYWdlR3JvdXBSZWYpKTsKICAg
ICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShXZWJLaXQ6OnRvSW1wbChyZWxhdGVkUGFn
ZSkpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBjb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxheW91dERpcmVjdGlv
bktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVp
bnQzMl90Pih0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc2VsZi51c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKSkpKTsKKyAgICBjb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5z
ZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbihzZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7
CiAjZW5kaWYKIAogICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQ
b29sOipXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURk1vdmUoY29u
ZmlndXJhdGlvbildOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNGViN2FlZThiMzEuLjFjNzI1ZjY1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTQ3Myw3ICs0NzMsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJl
ZgogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0
aGlzKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKSkKICAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtl
VW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxX
ZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQpAQCAtNTE2LDcgKzUxNSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgUmVmCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMp
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3M6OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUocHJlZmVyZW5jZXNTdG9yZSgpLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlzYWJsZVNjcmVlblNpemVPdmVycmlk
ZUtleSgpKSk7CisgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxlU2NyZWVu
U2l6ZU92ZXJyaWRlKG1fcHJlZmVyZW5jZXMtPmRpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUoKSk7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjczNywxNCArMjczNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmIGV2ZW50KQogCiBXZWJQcmVmZXJlbmNlc1N0b3JlIFdlYlBhZ2VQcm94eTo6cHJl
ZmVyZW5jZXNTdG9yZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29uZmlndXJhdGlvblByZWZlcmVu
Y2VWYWx1ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy0+c3RvcmUo
KTsKLQotICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUgPSBtX3ByZWZlcmVuY2VzLT5zdG9y
ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgcHJlZmVyZW5jZSA6IG1fY29uZmlndXJhdGlvblBy
ZWZlcmVuY2VWYWx1ZXMpCi0gICAgICAgIHN0b3JlLm1fdmFsdWVzLnNldChwcmVmZXJlbmNlLmtl
eSwgcHJlZmVyZW5jZS52YWx1ZSk7Ci0KLSAgICByZXR1cm4gc3RvcmU7CisgICAgcmV0dXJuIG1f
cHJlZmVyZW5jZXMtPnN0b3JlKCk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGExODczNTkzNmEu
LmM0ZjYxYmRjMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MjYyNyw3ICsyNjI3LDYgQEAgcHJpdmF0ZToKIAogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBt
X2N1cnJlbnRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNo
cm9ub3VzIH07CiAKLSAgICBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBtX2NvbmZpZ3Vy
YXRpb25QcmVmZXJlbmNlVmFsdWVzOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFnczsKICAgICBi
b29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB7IGZhbHNlIH07
CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394791</attachid>
            <date>2020-03-27 22:57:30 -0700</date>
            <delta_ts>2020-03-31 10:39:10 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-209678-20200327225819.patch</filename>
            <type>text/plain</type>
            <size>28403</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5YjY1N2Q5YWFiZTc2OWVh
Mjg1OTQ0NWM1ZjVmYmUxMDBkMWM0NTAuLmYxNmFiNGNiMGJhYmQ2Y2FmNzhkY2FjMTI5ZjQ2MjYz
ZmI2Y2Y4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDMtMjcgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uIG1heSBoYXZlIGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVzIGJldHdlZW4gV2ViUHJl
ZmVyZW5jZXMgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIGluc3RhbmNlIHZhcmlh
YmxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4PgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgZml4IHRoaXMgYnVnIGJ5IHJlbW92aW5nCisgICAgICAgIEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246Om1fcHJlZmVyZW5jZVZhbHVlcyBhbmQKKyAgICAgICAgV2ViUGFn
ZVByb3h5OjptX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLCBhbmQgaW5zdGVhZCBzZXQK
KyAgICAgICAgdmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBXZWJQcmVmZXJlbmNlcyBvYmplY3QsIHdo
aWNoIGhvbGRzIHZhbHVlcworICAgICAgICBpbiBpdHMgV2ViUHJlZmVyZW5jZXNTdG9yZS4gIFRo
aXMgY2hhbmdlIG9ubHkgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAgICAgQVBJOjpQYWdlQ29uZmln
dXJhdGlvbiBvYmplY3QgaGFzIG1fcHJlZmVyZW5jZXMgc2V0IHRvIGEgdmFsaWQKKyAgICAgICAg
V2ViUHJlZmVyZW5jZXMgb2JqZWN0IGJlZm9yZSB1c2luZyB0aGUgc2V0dGluZ3MgQVBJcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAg
ICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgIC0gUmVtb3Zl
IHVzZSBvZiBtX3ByZWZlcmVuY2VWYWx1ZXMgaW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAtIFVwZGF0ZSBo
ZWFkZXJzIGFmdGVyIHJlbW92aW5nIFdlYlByZWZlcmVuY2VzU3RvcmUuaC4KKyAgICAgICAgKEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOiBEZWxldGUuCisgICAgICAg
IC0gUmVtb3ZlIHVzZSBvZiBtX3ByZWZlcmVuY2VWYWx1ZXMgaW5zdGFuY2UgdmFyaWFibGUuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAtIFN3aXRjaCB0
byB1c2UgV2ViUHJlZmVyZW5jZXMgbWV0aG9kcyBmb3Igc2V0dGluZ3MuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZy
YW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAgICAgIC0g
Q3JlYXRlIFdlYlByZWZlcmVuY2VzIG9iamVjdCBmb3IgQVBJOjpQYWdlQ29uZmlndXJhdGlvbgor
ICAgICAgICAgIG9iamVjdC4gIFRoaXMgaXMgd2hhdCBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2Vi
UGFnZSgpIGRvZXMKKyAgICAgICAgICB3aGVuIGNyZWF0aW5nIGEgV2ViUGFnZVByb3h5IG9iamVj
dC4KKyAgICAgICAgLSBTd2l0Y2ggdG8gdXNlIFdlYlByZWZlcmVuY2VzIG1ldGhvZCB0byBzZXQK
KyAgICAgICAgICBTeXN0ZW1MYXlvdXREaXJlY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAtIFJlbW92ZSBpbml0aWFsaXphdGlvbiBvZiBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzLgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgV2ViUHJlZmVyZW5j
ZXMgbWV0aG9kIHRvIHNldAorICAgICAgICAgIERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNTdG9yZSBjb25zdCk6Cisg
ICAgICAgIC0gU2ltcGxpZnkgdGhpcyBtZXRob2QgYWZ0ZXIgcmVtb3ZpbmcKKyAgICAgICAgICBt
X2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgLSBSZW1vdmUgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcy4KKwogMjAyMC0wMy0yNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9z
dCBzaG91bGQgdmFsaWRhdGUgaXRzIGBob3N0YCBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGQwOTE3
NjUxZWY5MTI0YmVkNjRkYTZjZWRiNGRmNjI2MDc1Njg2ZTEuLjE2Mzc0YjU5MWEwYzAyY2Q5MjYy
NjI3MTE0N2RkYzlhZTc1M2M0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNiBAQCBSZWY8UGFn
ZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5
LT5tX3VzZXJDb250ZW50Q29udHJvbGxlciA9IHRoaXMtPm1fdXNlckNvbnRlbnRDb250cm9sbGVy
OwogICAgIGNvcHktPm1fcGFnZUdyb3VwID0gdGhpcy0+bV9wYWdlR3JvdXA7CiAgICAgY29weS0+
bV9wcmVmZXJlbmNlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZXM7Ci0gICAgY29weS0+bV9wcmVmZXJl
bmNlVmFsdWVzID0gdGhpcy0+bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIGNvcHktPm1fcmVsYXRl
ZFBhZ2UgPSB0aGlzLT5tX3JlbGF0ZWRQYWdlOwogICAgIGNvcHktPm1fdmlzaXRlZExpbmtTdG9y
ZSA9IHRoaXMtPm1fdmlzaXRlZExpbmtTdG9yZTsKICAgICBjb3B5LT5tX3dlYnNpdGVEYXRhU3Rv
cmUgPSB0aGlzLT5tX3dlYnNpdGVEYXRhU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDU4ZDE5N2Q5MGI3MjdlZTIz
NWE2MzE0YWI4YWM3NWFlZWQyYjQzMGEuLmNlODFmMzI2N2I0M2JmN2ZmMmExZmZmZDhkMTIyODlk
ZTg4ZTY0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oCkBAIC0yNiwxMSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdDYXRlZ29yeS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX1BST1RPQ09MKF9VSUNsaWNrSW50ZXJhY3Rpb25Ecml2
aW5nKTsKQEAgLTc3LDggKzc4LDYgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXMqIHByZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzKik7CiAKLSAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFw
JiBwcmVmZXJlbmNlVmFsdWVzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlVmFsdWVzOyB9Ci0KICAg
ICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNl
dFJlbGF0ZWRQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKQEAgLTE1Niw3ICsxNTUsNiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
R3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBt
X3ByZWZlcmVuY2VzOwotICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAg
bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IDljMzlkMjlkNTI0ZDM1NzJlNTM3OGI2YTViNDM4Mzg5MGE0ZDY3NGMu
LjgwYzQ0NmZlMmIwZmQ0ZDA1MDQ3ZmNlZTcxYWZkZDA1MmQ2MTI1NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODksNyArODksNyBA
QAogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByZWZlcmVu
Y2VzS2V5cy5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQb29sLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlVSTFNj
aGVtZUhhbmRsZXJDb2NvYS5oIgpAQCAtNDM3LDk1ICs0MzcsOTUgQEAgLSAodm9pZClfc2V0dXBQ
YWdlQ29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JilwYWdlQ29uZmln
dXJhdGlvbgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzKFdlYkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShb
X2NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwogCi0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc0tleTo6c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0lu
Y3JlbWVudGFsUmVuZGVyaW5nXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoISFbX2NvbmZpZ3VyYXRpb24g
c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nXSk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb25dKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRp
b25dKTsKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBFeHBvc2UgV0tQcmVmZXJl
bmNlcy5fc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyBvbiBpT1MsIGFkb3B0IGl0IGluIGFsbCBpT1Mg
Y2xpZW50cywgYW5kIHJlbW92ZSB0aGlzIGFuZCBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9wcmlu
dHNCYWNrZ3JvdW5kcy4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRQcmludEJhY2tncm91bmRzS2V5
KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24g
X3ByaW50c0JhY2tncm91bmRzXSkpOwotI2VuZGlmCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5jcmVtZW50
YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZShbX2NvbmZpZ3VyYXRpb24gX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVz
KCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmphdmFTY3JpcHRNYXJrdXBFbmFibGVk
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRp
b24gX2FsbG93c0phdmFTY3JpcHRNYXJrdXBdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkQ29u
dmVydFBvc2l0aW9uU3R5bGVPbkNvcHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5XSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6Omh0dHBFcXVpdkVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzTWV0YVJlZnJlc2hd
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBf
YWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxs
b3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxz
XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG91bGRQcmlu
dEJhY2tncm91bmRzKCEhW19jb25maWd1cmF0aW9uIF9wcmludHNCYWNrZ3JvdW5kc10pOworI2Vu
ZGlmCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEluY3JlbWVudGFs
UmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0KFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxS
ZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKS0+c2V0SmF2YVNjcmlwdE1hcmt1cEVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24g
X2FsbG93c0phdmFTY3JpcHRNYXJrdXBdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+c2V0U2hvdWxkQ29udmVydFBvc2l0aW9uU3R5bGVPbkNvcHkoISFbX2NvbmZpZ3Vy
YXRpb24gX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weV0pOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRIVFRQRXF1aXZFbmFibGVkKCEhW19jb25maWd1cmF0aW9u
IF9hbGxvd3NNZXRhUmVmcmVzaF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyghIVtfY29uZmlndXJhdGlv
biBfYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNdKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyghIVtf
Y29uZmlndXJhdGlvbiBfYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc10pOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRXYWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93KFtf
Y29uZmlndXJhdGlvbiBfd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvd10pOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXREcmF3c0JhY2tncm91bmQoW19jb25maWd1cmF0aW9u
IF9kcmF3c0JhY2tncm91bmRdKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0Q29udHJvbGxl
ZEJ5QXV0b21hdGlvbihbX2NvbmZpZ3VyYXRpb24gX2lzQ29udHJvbGxlZEJ5QXV0b21hdGlvbl0p
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OmluY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWRLZXkoKSwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfaW5jb21w
bGV0ZUltYWdlQm9yZGVyRW5hYmxlZF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGREZWZlckFz
eW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkT3JGaXJzdFBhaW50S2V5KCks
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3No
b3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRdKSk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc0tleTo6c2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lc0tleSgpLCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMo
KSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbmNvbXBsZXRl
SW1hZ2VCb3JkZXJFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9pbmNvbXBsZXRlSW1hZ2VCb3Jk
ZXJFbmFibGVkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNo
b3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRPckZpcnN0
UGFpbnQoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1Vu
dGlsQWZ0ZXJEb2N1bWVudExvYWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0U2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcyhzaG91bGRSZXN0cmljdEJhc2VV
UkxTY2hlbWVzKCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3dz
VVJMc0luVG9vbFRpcHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3dzVVJMc0luVG9vbFRpcHNdKSk7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc0tleTo6c2VydmljZUNvbnRyb2xzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNlQ29udHJvbHNFbmFibGVk
XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNLZXk6OmltYWdlQ29udHJvbHNFbmFibGVkS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2ltYWdlQ29udHJv
bHNFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRT
aG93c1VSTHNJblRvb2xUaXBzRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfc2hvd3NVUkxzSW5U
b29sVGlwc10pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2
aWNlQ29udHJvbHNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNlQ29udHJvbHNFbmFi
bGVkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEltYWdlQ29u
dHJvbHNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9pbWFnZUNvbnRyb2xzRW5hYmxlZF0pOwog
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtleSgpLCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKGNvbnZlcnRVc2VySW50ZXJmYWNlRGlyZWN0
aW9uUG9saWN5KFtfY29uZmlndXJhdGlvbiB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5XSkp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VXNlckludGVyZmFj
ZURpcmVjdGlvblBvbGljeShjb252ZXJ0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShbX2Nv
bmZpZ3VyYXRpb24gdXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeV0pKTsKICAgICAvLyBXZSBh
cmUgaW4gdGhlIFZpZXcncyBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBzbyBvdXIgY2xpZW50IGhh
c24ndCBoYWQgdGltZSB0byBzZXQgb3VyIHVzZXIgaW50ZXJmYWNlIGRpcmVjdGlvbi4KICAgICAv
LyBUaGVyZWZvcmUsIGFjY29yZGluZyB0byB0aGUgZG9jc1sxXSwgInRoaXMgcHJvcGVydHkgY29u
dGFpbnMgdGhlIHZhbHVlIHJlcG9ydGVkIGJ5IHRoZSBhcHAncyB1c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uIHByb3BlcnR5LiIKICAgICAvLyBbMV0gaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vbGlicmFyeS9tYWMvZG9jdW1lbnRhdGlvbi9Db2NvYS9SZWZlcmVuY2UvQXBwbGljYXRpb25L
aXQvQ2xhc3Nlcy9OU1ZpZXdfQ2xhc3MvaW5kZXguaHRtbCMvL2FwcGxlX3JlZi9kb2MvdWlkLzIw
MDAwMDE0LVNXMjIyCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5z
ZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGlyZWN0aW9uS2V5KCks
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoY29udmVydFN5c3RlbUxheW91dERp
cmVjdGlvbihzZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN5c3RlbUxheW91dERpcmVjdGlvbihjb252
ZXJ0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bikpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3Jl
ZW5LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0pKTsKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzS2V5OjppbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0
ZUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0
aW9uIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZV0pKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja0tleSgp
LCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFs
bG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1BpY3R1cmVJ
blBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojp1c2VySW50ZXJmYWNl
RGlyZWN0aW9uUG9saWN5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3k6OkNvbnRlbnQpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMo
KS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGlyZWN0aW9uS2V5
KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxv
d1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVS
THMoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdR
dWlja0xvb2tQcmV2aWV3S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRB
bGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0
QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbighIVtfY29uZmlndXJhdGlv
biBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0pOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWly
ZXNQbGF5c0lubGluZUF0dHJpYnV0ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVkaWFQbGF5
YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2so
ISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYm
IHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3koc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Q
b2xpY3k6OkNvbnRlbnQpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpU
ZXh0RGlyZWN0aW9uOjpMVFIpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2V0QWxsb3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKHNob3VsZEFsbG93U2V0
dGluZ0FueVhIUkhlYWRlckZyb21GaWxlVVJMcygpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZXMoKS0+c2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXcoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3XSk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpkZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25BUElFbmFibGVkS2V5KCks
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUobGlua2VkT25PckFmdGVyKFdlYktp
dDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNz
aW9uQVBJKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXREZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25BUElFbmFibGVkKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6
OlNES1ZlcnNpb246OkZpcnN0V2l0aERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lv
bkFQSSkpOwogI2VuZGlmCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OnN5c3RlbVByZXZpZXdFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3N5c3RlbVByZXZpZXdFbmFibGVkXSkpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTeXN0ZW1QcmV2aWV3RW5hYmxlZCgh
IVtfY29uZmlndXJhdGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKTsKICNlbmRpZgogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlcyBt
ZWRpYVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgPSBbX2NvbmZpZ3VyYXRpb24gbWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFja107Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6cmVxdWly
ZXNVc2VyR2VzdHVyZUZvclZpZGVvUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSgobWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJHZXN0dXJlICYgV0tBdWRpb3Zp
c3VhbE1lZGlhVHlwZVZpZGVvKSA9PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlVmlkZW8pKTsKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9QbGF5YmFja0tleSgpLCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCgobWVkaWFUeXBlc1JlcXVpcmluZ1Vz
ZXJHZXN0dXJlICYgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlvKSA9PSBXS0F1ZGlvdmlzdWFs
TWVkaWFUeXBlQXVkaW8pKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6cmVxdWlyZXNVc2VyR2VzdHVyZVRv
TG9hZFZpZGVvS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc2hvdWxk
UmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8oKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om1haW5D
b250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbWFpbkNvbnRlbnRVc2VyR2VzdHVy
ZU92ZXJyaWRlRW5hYmxlZF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjppbnZpc2libGVBdXRvcGxheU5v
dFBlcm1pdHRlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIF9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZF0pKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjptZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbWVkaWFEYXRhTG9hZHNBdXRv
bWF0aWNhbGx5XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCku
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZEtl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9u
IF9hdHRhY2htZW50RWxlbWVudEVuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VzKCktPnNldFJlcXVpcmVzVXNlckdlc3R1cmVGb3JWaWRlb1BsYXliYWNrKChtZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlVmlkZW8p
ID09IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVWaWRlbyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VzKCktPnNldFJlcXVpcmVzVXNlckdlc3R1cmVGb3JBdWRpb1BsYXliYWNrKCgo
bWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJHZXN0dXJlICYgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1
ZGlvKSA9PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW8pKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0UmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZFZpZGVvKHNo
b3VsZFJlcXVpcmVVc2VyR2VzdHVyZVRvTG9hZFZpZGVvKCkpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRNYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFi
bGVkKCEhW19jb25maWd1cmF0aW9uIF9tYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFi
bGVkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEludmlzaWJs
ZUF1dG9wbGF5Tm90UGVybWl0dGVkKCEhW19jb25maWd1cmF0aW9uIF9pbnZpc2libGVBdXRvcGxh
eU5vdFBlcm1pdHRlZF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5z
ZXRNZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkoISFbX2NvbmZpZ3VyYXRpb24gX21lZGlhRGF0
YUxvYWRzQXV0b21hdGljYWxseV0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRBdHRhY2htZW50RWxlbWVudEVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2F0dGFj
aG1lbnRFbGVtZW50RW5hYmxlZF0pOwogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFEZXRlY3RvclR5cGVzS2V5
KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZyb21XS0RhdGFEZXRlY3RvclR5cGVzKFtfY29uZmlndXJhdGlvbiBkYXRhRGV0ZWN0b3JU
eXBlc10pKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXREYXRh
RGV0ZWN0b3JUeXBlcyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJvbVdLRGF0YURldGVjdG9yVHlw
ZXMoW19jb25maWd1cmF0aW9uIGRhdGFEZXRlY3RvclR5cGVzXSkpKTsKICNlbmRpZgogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzQWly
UGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dzQWlyUGxheUZv
ck1lZGlhUGxheWJhY2soISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxh
eWJhY2tdKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjphcHBsZVBheUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfYXBwbGVQYXlFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBcHBsZVBheUVuYWJsZWQoISFbX2NvbmZpZ3VyYXRp
b24gX2FwcGxlUGF5RW5hYmxlZF0pOwogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpuZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlya0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlya10pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjptZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KFN0cmluZyhbX2NvbmZpZ3VyYXRpb24gX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0XSkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd01lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd01lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cmsoISFbX2NvbmZpZ3VyYXRpb24gX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldE1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KFN0cmluZyhbX2NvbmZpZ3VyYXRpb24gX21l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0XSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dNZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2tdKTsKIAotICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNLZXk6OmNvbG9yRmlsdGVyRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9jb2xvckZpbHRlckVuYWJsZWRdKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldENvbG9yRmlsdGVyRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfY29sb3JGaWx0ZXJFbmFibGVkXSk7CiAKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjplZGl0YWJsZUltYWdlc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXSkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OnVuZG9NYW5hZ2VyQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF91bmRvTWFuYWdlckFQ
SUVuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEVk
aXRhYmxlSW1hZ2VzRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFi
bGVkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVuZG9NYW5h
Z2VyQVBJRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfdW5kb01hbmFnZXJBUElFbmFibGVkXSk7
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojps
ZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElF
bmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRMZWdh
Y3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2xlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZF0pOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKCFXVEY6OnByb2Nlc3NIYXNFbnRp
dGxlbWVudCgiY29tLmFwcGxlLmRldmVsb3Blci5XZWJLaXQuU2VydmljZVdvcmtlcnMiKSkKLSAg
ICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCksIFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoZmFsc2UpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNldFNlcnZpY2VXb3JrZXJzRW5hYmxlZChmYWxzZSk7CiAjZW5k
aWYKIAogICAgIGlmICghbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RX
aGVyZVNpdGVTcGVjaWZpY1F1aXJrc0FyZUVuYWJsZWRCeURlZmF1bHQpKQotICAgICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKGZhbHNlKSk7CisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlcygpLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhmYWxzZSk7CiB9CiAKIC0gKHZv
aWQpX3NldFVwU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGRkYzZmZmZhMzMwYTgzY2I3MmJlMTkzMGZjNzIx
MDEzMzQyMGQ4MjYuLjQzYWM5NzZlZDY3ZWJkZjU5OGJkMGU5ZjQ3YTkyYTM2YThiNGE0MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zOSw3ICszOSw3
IEBACiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3Vw
LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5
cy5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0
ZXJzSW50ZXJuYWwuaCIKQEAgLTExOTQsNyArMTE5NCw4IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3Jv
dXBSCiAgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6dG9JbXBsKHBhZ2VH
cm91cFJlZikpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKFdlYktpdDo6dG9J
bXBsKHJlbGF0ZWRQYWdlKSk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVt
TGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzZWxm
LnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFByZWZlcmVuY2VzKCZjb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKSk7
CisgICAgY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVtTGF5b3V0RGlyZWN0
aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
c2VsZi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkpOwogI2VuZGlmCiAKICAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDoqV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZikgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAzOGZjZjA5ODI0NDg4ZjM1
NTllNGE4ZTZhNzMxMTZmZGY5NDJmYTMuLjBjYTM0MDhiZDEwY2Q5N2FhNWU1NDY0ZDc3NDcyMjlm
ODA4OTkwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NDczLDcgKzQ3Myw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2lzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCgpKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCi0gICAgLCBtX2NvbmZp
Z3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigq
dGhpcykpCkBAIC01MTYsNyArNTE1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAgICBt
X3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0RGlzYWJsZVNjcmVl
blNpemVPdmVycmlkZShwcmVmZXJlbmNlc1N0b3JlKCkuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpkaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlS2V5KCkpKTsKKyAgICBEZXBy
ZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUobV9wcmVm
ZXJlbmNlcy0+ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgpKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0yNzQ0LDE0ICsyNzQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAK
IFdlYlByZWZlcmVuY2VzU3RvcmUgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc1N0b3JlKCkgY29u
c3QKIHsKLSAgICBpZiAobV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT5zdG9yZSgpOwotCi0gICAgV2ViUHJlZmVy
ZW5jZXNTdG9yZSBzdG9yZSA9IG1fcHJlZmVyZW5jZXMtPnN0b3JlKCk7Ci0gICAgZm9yIChjb25z
dCBhdXRvJiBwcmVmZXJlbmNlIDogbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcykKLSAg
ICAgICAgc3RvcmUubV92YWx1ZXMuc2V0KHByZWZlcmVuY2Uua2V5LCBwcmVmZXJlbmNlLnZhbHVl
KTsKLQotICAgIHJldHVybiBzdG9yZTsKKyAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy0+c3RvcmUo
KTsKIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYTE4NzM1OTM2YTAyYzI1NDY3MmMyMjYwY2Q1Mjhi
N2U1ZmIyYjU3Li5jNGY2MWJkYzMzOTU4ZDIxYmY3N2NmM2ZiZjBhZTRjOGNlOTk5YmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjYyNyw3ICsyNjI3LDYgQEAg
cHJpdmF0ZToKIAogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2N1cnJlbnRBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIH07CiAKLSAgICBX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFs
dWVzOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtX3BvdGVu
dGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFnczsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENhbGxi
YWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjY5NWE5ZTI4OGJkZDRhZWMx
Y2JkZDY4OTk4Zjg5YmM5N2NhZTUzMC4uOGJkMjY4NjIyZGI3N2E0YzU0ODExZTEyN2Y0OWNkZWYx
ZGQ0ZDIzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTI3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiBtYXkgaGF2ZSBjb25m
bGljdGluZyBwcmVmZXJlbmNlIHZhbHVlcyBiZXR3ZWVuIFdlYlByZWZlcmVuY2VzIGFuZCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBpbnN0YW5jZSB2YXJpYWJsZXMKKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwOTY3OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTgx
MjcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAtIEZpeCBXS1ZpZXcgY29u
c3RydWN0b3IgdG8gcGFzcyBhIHZhbGlkIFdLUGFnZUdyb3VwUmVmLgorCiAyMDIwLTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVW5h
YmxlIHRvIHNob3cgV2ViIEluc3BlY3RvciBvbiBlbXB0eSB0YWJzIGluIFNhZmFyaQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tpbmdTY2Fs
ZUZhY3Rvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9HZXRCYWNr
aW5nU2NhbGVGYWN0b3IubW0KaW5kZXggZWQ0MDc1ODhiZDQyYzM3MDA0YTU0MmRmOTU4N2IzMjkz
MTZjNjI3Ny4uYTg2YzY4NTk3NDMyNWNiNzk0OTkwNjRhYWU2NTdiYzA4ODZiYmJiNSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tpbmdTY2Fs
ZUZhY3Rvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvR2V0
QmFja2luZ1NjYWxlRmFjdG9yLm1tCkBAIC02OCw3ICs2OCw4IEBAIFRFU1QoV2ViS2l0LCBHZXRC
YWNraW5nU2NhbGVGYWN0b3IpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJH
ZXRCYWNraW5nU2NhbGVGYWN0b3JUZXN0IikpOwogICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KGNvbnRleHQuZ2V0KCkpOwotICAgIFJldGFpblB0cjxXS1ZpZXc+IHZpZXcgPSBhZG9wdE5TKFtb
V0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6MF0pOworICAgIFdLUmV0YWluUHRy
PFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIoVXRpbDo6dG9XSygiR2V0QmFja2luZ1NjYWxlRmFjdG9yUGFnZUdyb3VwIiku
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB2aWV3ID0gYWRvcHROUyhbW1dLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb250ZXh0UmVm
OmNvbnRleHQuZ2V0KCkgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cC5nZXQoKV0pOwogICAgIFtbdmll
dyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOwogCiAg
ICAgUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93MSA9
IGNyZWF0ZVdpbmRvdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395063</attachid>
            <date>2020-03-31 10:39:12 -0700</date>
            <delta_ts>2020-04-01 19:34:11 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-209678-20200331104023.patch</filename>
            <type>text/plain</type>
            <size>37783</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljMDQ2ZjhjYTFlMDVhYWVm
YmJlMWMxZjk2NTVhYzU5NGJjY2EzYzkuLmY4NWYxMThmMTA5ZDZiNTBkYzBlMzFjYTg2ZDAwMTZl
NDZmZTY3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDMtMzEgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uIG1heSBoYXZlIGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVzIGJldHdlZW4gV2ViUHJl
ZmVyZW5jZXMgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIGluc3RhbmNlIHZhcmlh
YmxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4PgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgZml4IHRoaXMgYnVnIGJ5IHJlbW92aW5nCisgICAgICAgIEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246Om1fcHJlZmVyZW5jZVZhbHVlcyBhbmQKKyAgICAgICAgV2ViUGFn
ZVByb3h5OjptX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLCBhbmQgaW5zdGVhZCBzZXQK
KyAgICAgICAgdmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBXZWJQcmVmZXJlbmNlcyBvYmplY3QsIHdo
aWNoIGhvbGRzIHZhbHVlcworICAgICAgICBpbiBpdHMgV2ViUHJlZmVyZW5jZXNTdG9yZSBpbnN0
YW5jZSB2YXJpYWJsZS4gIFRoaXMgY2hhbmdlIG9ubHkKKyAgICAgICAgcmVxdWlyZXMgdGhhdCB0
aGUgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiBvYmplY3QgaGFzCisgICAgICAgIG1fcHJlZmVyZW5j
ZXMgc2V0IHRvIGEgdmFsaWQgV2ViUHJlZmVyZW5jZXMgb2JqZWN0IGJlZm9yZSB1c2luZworICAg
ICAgICB0aGUgc2V0dGluZ3MgQVBJcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IFdLQXR0YWNobWVu
dCBUZXN0V2ViS2l0QVBJIHRlc3RzIGFuZAorICAgICAgICBlZGl0aW5nL3VuZG8tbWFuYWdlciBs
YXlvdXQgdGVzdHMsIGFtb25nIG90aGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y29weSBjb25zdCk6CisgICAgICAgIC0gUmVtb3ZlIHVzZSBvZiBtX3ByZWZlcmVuY2VWYWx1ZXMg
aW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAtIFVwZGF0ZSBoZWFkZXJzIGFmdGVyIHJlbW92aW5nIFdlYlBy
ZWZlcmVuY2VzU3RvcmUuaC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZl
cmVuY2VWYWx1ZXMpOiBEZWxldGUuCisgICAgICAgIC0gUmVtb3ZlIHVzZSBvZiBtX3ByZWZlcmVu
Y2VWYWx1ZXMgaW5zdGFuY2UgdmFyaWFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBhZ2VDb25maWd1
cmF0aW9uOl0pOgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgV2ViUHJlZmVyZW5jZXMgbWV0aG9k
cyBmb3Igc2V0dGluZ3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06
CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVm
OnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAgICAgIC0gQ3JlYXRlIFdlYlByZWZlcmVuY2VzIG9iamVj
dCBmb3IgQVBJOjpQYWdlQ29uZmlndXJhdGlvbgorICAgICAgICAgIG9iamVjdC4gIFRoaXMgaXMg
d2hhdCBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSgpIGRvZXMKKyAgICAgICAgICB3aGVu
IGNyZWF0aW5nIGEgV2ViUGFnZVByb3h5IG9iamVjdC4KKyAgICAgICAgLSBTd2l0Y2ggdG8gdXNl
IFdlYlByZWZlcmVuY2VzIG1ldGhvZCB0byBzZXQKKyAgICAgICAgICBTeXN0ZW1MYXlvdXREaXJl
Y3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAtIFJlbW92ZSBp
bml0aWFsaXphdGlvbiBvZiBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLgorICAgICAg
ICAtIFN3aXRjaCB0byB1c2UgV2ViUHJlZmVyZW5jZXMgbWV0aG9kIHRvIHNldAorICAgICAgICAg
IERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJlZmVyZW5jZXNTdG9yZSBjb25zdCk6CisgICAgICAgIC0gU2ltcGxpZnkgdGhpcyBtZXRo
b2QgYWZ0ZXIgcmVtb3ZpbmcKKyAgICAgICAgICBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFs
dWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgLSBSZW1v
dmUgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcy4KKwogMjAyMC0wMy0zMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogKHIyNTky
MzYpIFsgaU9TIGFuZCBDYXRhbGluYSB3azIgRGVidWcgXSBBU1NFUlRJT04gRkFJTEVEOiBtX2Rl
YnVnTG9nZ2luZ0VuYWJsZWQgaW4gV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGQwOTE3NjUxZWY5MTI0
YmVkNjRkYTZjZWRiNGRmNjI2MDc1Njg2ZTEuLjE2Mzc0YjU5MWEwYzAyY2Q5MjYyNjI3MTE0N2Rk
YzlhZTc1M2M0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNiBAQCBSZWY8UGFnZUNvbmZpZ3Vy
YXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX3VzZXJD
b250ZW50Q29udHJvbGxlciA9IHRoaXMtPm1fdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgIGNv
cHktPm1fcGFnZUdyb3VwID0gdGhpcy0+bV9wYWdlR3JvdXA7CiAgICAgY29weS0+bV9wcmVmZXJl
bmNlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZXM7Ci0gICAgY29weS0+bV9wcmVmZXJlbmNlVmFsdWVz
ID0gdGhpcy0+bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIGNvcHktPm1fcmVsYXRlZFBhZ2UgPSB0
aGlzLT5tX3JlbGF0ZWRQYWdlOwogICAgIGNvcHktPm1fdmlzaXRlZExpbmtTdG9yZSA9IHRoaXMt
Pm1fdmlzaXRlZExpbmtTdG9yZTsKICAgICBjb3B5LT5tX3dlYnNpdGVEYXRhU3RvcmUgPSB0aGlz
LT5tX3dlYnNpdGVEYXRhU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IGVlYzdmMTlmOTQwMTBkMWRiMzI3NDA1ZmI4
ODQ4NDRjOTI4OGRhZGMuLjJkMTU5ZjRhMjU4Yzk4OTIxMTA0MTZjMDAxNTcyODY3ZmZiZjkyMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCkBAIC0yNiwxMSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldl
YlZpZXdDYXRlZ29yeS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBPQkpDX1BST1RPQ09MKF9VSUNsaWNrSW50ZXJhY3Rpb25Ecml2aW5nKTsKQEAg
LTc3LDggKzc4LDYgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZl
cmVuY2VzKCk7CiAgICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
Kik7CiAKLSAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwJiBwcmVmZXJl
bmNlVmFsdWVzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlVmFsdWVzOyB9Ci0KICAgICBXZWJLaXQ6
OldlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbGF0ZWRQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKQEAgLTE1Niw3ICsxNTUsNiBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1f
cGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVu
Y2VzOwotICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJl
bmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFn
ZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3Rv
cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IDljMzlkMjlkNTI0ZDM1NzJlNTM3OGI2YTViNDM4Mzg5MGE0ZDY3NGMuLjgwYzQ0NmZl
MmIwZmQ0ZDA1MDQ3ZmNlZTcxYWZkZDA1MmQ2MTI1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODksNyArODksNyBAQAogI2ltcG9y
dCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgi
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5o
IgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYS5oIgpAQCAtNDM3LDk1ICs0MzcsOTUgQEAgLSAodm9pZClfc2V0dXBQYWdlQ29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JilwYWdlQ29uZmlndXJhdGlvbgog
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
KFdlYkNvcmU6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbX2NvbmZpZ3Vy
YXRpb24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwogCi0gICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tl
eTo6c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5KCksIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0luY3JlbWVudGFs
UmVuZGVyaW5nXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRT
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nl
c0luY3JlbWVudGFsUmVuZGVyaW5nXSk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb25dKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb25dKTsKICNp
ZiAhUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBFeHBvc2UgV0tQcmVmZXJlbmNlcy5fc2hv
dWxkUHJpbnRCYWNrZ3JvdW5kcyBvbiBpT1MsIGFkb3B0IGl0IGluIGFsbCBpT1MgY2xpZW50cywg
YW5kIHJlbW92ZSB0aGlzIGFuZCBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9wcmludHNCYWNrZ3Jv
dW5kcy4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRQcmludEJhY2tncm91bmRzS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3ByaW50c0Jh
Y2tncm91bmRzXSkpOwotI2VuZGlmCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZShbX2NvbmZpZ3VyYXRpb24gX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1l
b3V0XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmphdmFTY3JpcHRNYXJrdXBFbmFibGVkS2V5KCksIFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93
c0phdmFTY3JpcHRNYXJrdXBdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkQ29udmVydFBvc2l0
aW9uU3R5bGVPbkNvcHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSgh
IVtfY29uZmlndXJhdGlvbiBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5XSkpOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6Omh0dHBFcXVpdkVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dzTWV0YVJlZnJlc2hdKSk7Ci0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc0tleTo6YWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dUb3BOYXZp
Z2F0aW9uVG9EYXRhVVJMc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzXSkpOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG91bGRQcmludEJhY2tncm91
bmRzKCEhW19jb25maWd1cmF0aW9uIF9wcmludHNCYWNrZ3JvdW5kc10pOworI2VuZGlmCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEluY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0KFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxSZW5kZXJpbmdT
dXBwcmVzc2lvblRpbWVvdXRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2V0SmF2YVNjcmlwdE1hcmt1cEVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c0ph
dmFTY3JpcHRNYXJrdXBdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c2V0U2hvdWxkQ29udmVydFBvc2l0aW9uU3R5bGVPbkNvcHkoISFbX2NvbmZpZ3VyYXRpb24gX2Nv
bnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weV0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlcygpLT5zZXRIVFRQRXF1aXZFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NN
ZXRhUmVmcmVzaF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKS0+c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyghIVtfY29uZmlndXJh
dGlvbiBfYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc10pOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRXYWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93KFtfY29uZmlndXJh
dGlvbiBfd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvd10pOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXREcmF3c0JhY2tncm91bmQoW19jb25maWd1cmF0aW9uIF9kcmF3c0Jh
Y2tncm91bmRdKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0Q29udHJvbGxlZEJ5QXV0b21h
dGlvbihbX2NvbmZpZ3VyYXRpb24gX2lzQ29udHJvbGxlZEJ5QXV0b21hdGlvbl0pOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmluY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfaW5jb21wbGV0ZUltYWdl
Qm9yZGVyRW5hYmxlZF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGREZWZlckFzeW5jaHJvbm91
c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkT3JGaXJzdFBhaW50S2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlZmVy
QXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRdKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6c2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lc0tleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKHNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMoKSkpOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbmNvbXBsZXRlSW1hZ2VCb3Jk
ZXJFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVk
XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3VsZERlZmVy
QXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRPckZpcnN0UGFpbnQoISFb
X2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJE
b2N1bWVudExvYWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0
U2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcyhzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVz
KCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3dzVVJMc0luVG9v
bFRpcHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX3Nob3dzVVJMc0luVG9vbFRpcHNdKSk7Ci0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
c2VydmljZUNvbnRyb2xzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNlQ29udHJvbHNFbmFibGVkXSkpOwotICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNLZXk6OmltYWdlQ29udHJvbHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2ltYWdlQ29udHJvbHNFbmFibGVk
XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG93c1VSTHNJ
blRvb2xUaXBzRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfc2hvd3NVUkxzSW5Ub29sVGlwc10p
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTZXJ2aWNlQ29udHJv
bHNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNlQ29udHJvbHNFbmFibGVkXSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEltYWdlQ29udHJvbHNFbmFi
bGVkKCEhW19jb25maWd1cmF0aW9uIF9pbWFnZUNvbnRyb2xzRW5hYmxlZF0pOwogCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc0tleTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKGNvbnZlcnRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5
KFtfY29uZmlndXJhdGlvbiB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5XSkpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VXNlckludGVyZmFjZURpcmVjdGlv
blBvbGljeShjb252ZXJ0VXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeShbX2NvbmZpZ3VyYXRp
b24gdXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeV0pKTsKICAgICAvLyBXZSBhcmUgaW4gdGhl
IFZpZXcncyBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBzbyBvdXIgY2xpZW50IGhhc24ndCBoYWQg
dGltZSB0byBzZXQgb3VyIHVzZXIgaW50ZXJmYWNlIGRpcmVjdGlvbi4KICAgICAvLyBUaGVyZWZv
cmUsIGFjY29yZGluZyB0byB0aGUgZG9jc1sxXSwgInRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhl
IHZhbHVlIHJlcG9ydGVkIGJ5IHRoZSBhcHAncyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IHByb3BlcnR5LiIKICAgICAvLyBbMV0gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFy
eS9tYWMvZG9jdW1lbnRhdGlvbi9Db2NvYS9SZWZlcmVuY2UvQXBwbGljYXRpb25LaXQvQ2xhc3Nl
cy9OU1ZpZXdfQ2xhc3MvaW5kZXguaHRtbCMvL2FwcGxlX3JlZi9kb2MvdWlkLzIwMDAwMDE0LVNX
MjIyCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoY29udmVydFN5c3RlbUxheW91dERpcmVjdGlvbihz
ZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNldFN5c3RlbUxheW91dERpcmVjdGlvbihjb252ZXJ0U3lzdGVt
TGF5b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tBZnRlckZ1bGxzY3JlZW5LZXkoKSwg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfYWxs
b3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0pKTsKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjppbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleSgpLCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9pbmxp
bmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZV0pKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1
cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVN
ZWRpYVBsYXliYWNrKCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojp1c2VySW50ZXJmYWNlRGlyZWN0aW9u
UG9saWN5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6OkNvbnRl
bnQpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNv
cmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd1NldHRpbmdB
bnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoKSkpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQ
cmV2aWV3S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZp
Z3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3
XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0lubGluZU1lZGlhUGxheWJh
Y2tdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbighIVtfY29uZmlndXJhdGlvbiBfYWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbl0pOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lu
bGluZUF0dHJpYnV0ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVkaWFQbGF5YmFja1JlcXVp
cmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+c2V0QWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soISFbX2NvbmZp
Z3VyYXRpb24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFs
bG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNldFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3koc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6OkNv
bnRlbnQpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVt
TGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uOjpMVFIpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxs
b3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKHNob3VsZEFsbG93U2V0dGluZ0FueVhI
UkhlYWRlckZyb21GaWxlVVJMcygpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKS0+c2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXco
ISFbX2NvbmZpZ3VyYXRpb24gX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3XSk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpkZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25BUElFbmFibGVkS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVy
c2lvbjo6Rmlyc3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uQVBJKSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXREZXZpY2VPcmllbnRh
dGlvblBlcm1pc3Npb25BUElFbmFibGVkKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNp
b246OkZpcnN0V2l0aERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkFQSSkpOwog
I2VuZGlmCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbVBy
ZXZpZXdFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFb
X2NvbmZpZ3VyYXRpb24gX3N5c3RlbVByZXZpZXdFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTeXN0ZW1QcmV2aWV3RW5hYmxlZCghIVtfY29uZmln
dXJhdGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKTsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICAgICBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlcyBtZWRpYVR5cGVz
UmVxdWlyaW5nVXNlckdlc3R1cmUgPSBbX2NvbmZpZ3VyYXRpb24gbWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFja107Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6cmVxdWlyZXNVc2VyR2Vz
dHVyZUZvclZpZGVvUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSgobWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJHZXN0dXJlICYgV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZVZpZGVvKSA9PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlVmlkZW8pKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9QbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCgobWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJHZXN0dXJl
ICYgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlvKSA9PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBl
QXVkaW8pKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6cmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZFZpZGVv
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc2hvdWxkUmVxdWlyZVVz
ZXJHZXN0dXJlVG9Mb2FkVmlkZW8oKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om1haW5Db250ZW50VXNl
ckdlc3R1cmVPdmVycmlkZUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbWFpbkNvbnRlbnRVc2VyR2VzdHVyZU92ZXJyaWRl
RW5hYmxlZF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNl
dChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjppbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRl
ZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0
aW9uIF9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZF0pKTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpt
ZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHlLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5
XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNLZXk6OmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZEtleSgpLCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2Vz
KCktPnNldFJlcXVpcmVzVXNlckdlc3R1cmVGb3JWaWRlb1BsYXliYWNrKChtZWRpYVR5cGVzUmVx
dWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlVmlkZW8pID09IFdLQXVk
aW92aXN1YWxNZWRpYVR5cGVWaWRlbyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VzKCktPnNldFJlcXVpcmVzVXNlckdlc3R1cmVGb3JBdWRpb1BsYXliYWNrKCgobWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJHZXN0dXJlICYgV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUF1ZGlvKSA9PSBX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW8pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKS0+c2V0UmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZFZpZGVvKHNob3VsZFJlcXVp
cmVVc2VyR2VzdHVyZVRvTG9hZFZpZGVvKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlcygpLT5zZXRNYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFibGVkKCEhW19j
b25maWd1cmF0aW9uIF9tYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFibGVkXSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEludmlzaWJsZUF1dG9wbGF5
Tm90UGVybWl0dGVkKCEhW19jb25maWd1cmF0aW9uIF9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1p
dHRlZF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRNZWRpYURh
dGFMb2Fkc0F1dG9tYXRpY2FsbHkoISFbX2NvbmZpZ3VyYXRpb24gX21lZGlhRGF0YUxvYWRzQXV0
b21hdGljYWxseV0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRB
dHRhY2htZW50RWxlbWVudEVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2F0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZF0pOwogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFEZXRlY3RvclR5cGVzS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyb21X
S0RhdGFEZXRlY3RvclR5cGVzKFtfY29uZmlndXJhdGlvbiBkYXRhRGV0ZWN0b3JUeXBlc10pKSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXREYXRhRGV0ZWN0b3JU
eXBlcyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJvbVdLRGF0YURldGVjdG9yVHlwZXMoW19jb25m
aWd1cmF0aW9uIGRhdGFEZXRlY3RvclR5cGVzXSkpKTsKICNlbmRpZgogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzQWlyUGxheUZvck1l
ZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtf
Y29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0QWxsb3dzQWlyUGxheUZvck1lZGlhUGxh
eWJhY2soISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphcHBsZVBh
eUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBfYXBwbGVQYXlFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlcygpLT5zZXRBcHBsZVBheUVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2FwcGxl
UGF5RW5hYmxlZF0pOwogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpuZWVkc1N0b3JhZ2VBY2Nl
c3NGcm9tRmlsZVVSTHNRdWlya0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlKCEhW19jb25maWd1cmF0aW9uIF9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWly
a10pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjptZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKFN0cmluZyhb
X2NvbmZpZ3VyYXRpb24gX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
XSkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0QXNGYWxsYmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKS0+c2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoISFbX2Nv
bmZpZ3VyYXRpb24gX25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrXSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldE1lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0KFN0cmluZyhbX2NvbmZpZ3VyYXRpb24gX21lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0QXNGYWxsYmFjayghIVtfY29uZmlndXJhdGlvbiBfYWxsb3dNZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2tdKTsKIAotICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OmNvbG9yRmlsdGVyRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9jb2xvckZpbHRlckVuYWJsZWRdKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldENvbG9yRmlsdGVyRW5hYmxlZCghIVtf
Y29uZmlndXJhdGlvbiBfY29sb3JGaWx0ZXJFbmFibGVkXSk7CiAKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpl
ZGl0YWJsZUltYWdlc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSghIVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXSkpOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OnVuZG9NYW5hZ2VyQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF91bmRvTWFuYWdlckFQSUVuYWJsZWRd
KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEVkaXRhYmxlSW1h
Z2VzRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVuZG9NYW5hZ2VyQVBJRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfdW5kb01hbmFnZXJBUElFbmFibGVkXSk7CiAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpsZWdhY3lFbmNy
eXB0ZWRNZWRpYUFQSUVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSghIVtfY29uZmlndXJhdGlvbiBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkXSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRMZWdhY3lFbmNyeXB0
ZWRNZWRpYUFQSUVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2xlZ2FjeUVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZF0pOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKCFXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgi
Y29tLmFwcGxlLmRldmVsb3Blci5XZWJLaXQuU2VydmljZVdvcmtlcnMiKSkKLSAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoZmFsc2UpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNldFNlcnZpY2VXb3JrZXJzRW5hYmxlZChmYWxzZSk7CiAjZW5kaWYKIAogICAg
IGlmICghbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaGVyZVNpdGVT
cGVjaWZpY1F1aXJrc0FyZUVuYWJsZWRCeURlZmF1bHQpKQotICAgICAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpu
ZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKGZhbHNlKSk7CisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygp
LT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhmYWxzZSk7CiB9CiAKIC0gKHZvaWQpX3NldFVw
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCmluZGV4IGI0Mjc1N2Y5NTY2MDMxYTYwZjA2ZWFkMmM1ZTEzOGQ5OGRkNWNh
YWEuLjYyOWM4NDVlNmUxOTc2NWIxNDE4YWYyN2MzMjczNWU5MGY0NGE4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zOSw3ICszOSw3IEBACiAjaW1w
b3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2lt
cG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1w
b3J0ICJXZWJWaWV3SW1wbC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJu
YWwuaCIKQEAgLTExOTQsNyArMTE5NCw4IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSCiAgICAg
Y29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZikp
OwogICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKFdlYktpdDo6dG9JbXBsKHJlbGF0
ZWRQYWdlKSk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lzdGVtTGF5b3V0RGly
ZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzZWxmLnVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVu
Y2VzKCZjb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKSk7CisgICAgY29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc2VsZi51c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDoqV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJl
ZikgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI2YzY5N2JhMTdhYjY3M2VhOGViNTE2YTEz
NDUzNjhkMTM3ZmRjNWIuLjEyYmQ1Mzc0NGVhZWZhMjU5ZTYwZGIzZjQ2MzM2ZDVhOTU5YWI2YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDc0LDcgKzQ3
NCw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQogI2Vu
ZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb25Q
cmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQogICAg
ICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIG1faW5z
cGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCkBA
IC01MTcsNyArNTE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0RGlzYWJsZVNjcmVlblNpemVPdmVy
cmlkZShwcmVmZXJlbmNlc1N0b3JlKCkuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpkaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlS2V5KCkpKTsKKyAgICBEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUobV9wcmVmZXJlbmNlcy0+
ZGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC0yNzY1LDE0ICsyNzY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJv
YXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIFdlYlByZWZl
cmVuY2VzU3RvcmUgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBtX3ByZWZlcmVuY2VzLT5zdG9yZSgpOwotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSA9IG1fcHJlZmVyZW5jZXMtPnN0b3JlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBw
cmVmZXJlbmNlIDogbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcykKLSAgICAgICAgc3Rv
cmUubV92YWx1ZXMuc2V0KHByZWZlcmVuY2Uua2V5LCBwcmVmZXJlbmNlLnZhbHVlKTsKLQotICAg
IHJldHVybiBzdG9yZTsKKyAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy0+c3RvcmUoKTsKIH0KIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA0OGZkY2I5NDJjMGE2ZDgwZDcxMGFkMDZjODQ1ZDFiOTkyNDdlYWEw
Li4yZDNmYmM4YmZkNmJmZGVkMjIzOTdhNTdmY2NjYzQ5MTc3MWNjOGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjY0NCw3ICsyNjQ0LDYgQEAgcHJpdmF0ZToK
IAogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2N1cnJlbnRBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIH07CiAKLSAgICBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZU1hcCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzOwogICAg
IE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBtX3BvdGVudGlhbGx5Q2hh
bmdlZEFjdGl2aXR5U3RhdGVGbGFnczsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdh
bnRzU3luY2hyb25vdXNSZXBseSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGE0YTI2Y2NmYmE3NzFkYjg2NThlYTlmZjcw
NjE5ODMwZTNjZGZlMS4uYWM2OTQyMzQ4NGUxYTBkYzFhZGU3Yzk3MmQ1YjIxM2MwNWNmMzcyYyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTAzLTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CisKKyAgICAgICAgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiBtYXkgaGF2ZSBjb25mbGljdGluZyBw
cmVmZXJlbmNlIHZhbHVlcyBiZXR3ZWVuIFdlYlByZWZlcmVuY2VzIGFuZCBXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZU1hcCBpbnN0YW5jZSB2YXJpYWJsZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIwOTY3OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTgxMjcxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAtIEZpeCBXS1ZpZXcgY29uc3RydWN0b3Ig
dG8gcGFzcyBhIHZhbGlkIFdLUGFnZUdyb3VwUmVmLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnVwZGF0ZVRlc3RPcHRpb25z
RnJvbVRlc3RIZWFkZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMu
aDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6Omhhc1NhbWVJbml0aWFsaXphdGlvbk9wdGlv
bnMgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRl
V2ViVmlldyk6CisgICAgICAgIC0gUmVtb3ZlIHN1cHBvcnQgZm9yIGN1c3RvbSAiZW5hYmxlVW5k
b01hbmFnZXJBUEkiIHNldHRpbmcgc2luY2UKKyAgICAgICAgICBsYXlvdXQgdGVzdHMgc2hvdWxk
IHVzZSAiaW50ZXJuYWw6VW5kb01hbmFnZXJBUElFbmFibGVkIgorICAgICAgICAgIGluc3RlYWQu
CisKIDIwMjAtMDMtMzEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERlbGV0ZSBjb2RlIGZvciBzZWN1cml0eSBFV1MgZnJvbSBvbGQgRVdTIChmb2xsb3ct
dXAgZml4KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KaW5kZXggZWQ0MDc1ODhiZDQyYzM3MDA0
YTU0MmRmOTU4N2IzMjkzMTZjNjI3Ny4uYTg2YzY4NTk3NDMyNWNiNzk0OTkwNjRhYWU2NTdiYzA4
ODZiYmJiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tCkBAIC02OCw3ICs2OCw4IEBAIFRF
U1QoV2ViS2l0LCBHZXRCYWNraW5nU2NhbGVGYWN0b3IpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0
ZWRCdW5kbGVUZXN0KCJHZXRCYWNraW5nU2NhbGVGYWN0b3JUZXN0IikpOwogICAgIHNldEluamVj
dGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwotICAgIFJldGFpblB0cjxXS1ZpZXc+IHZp
ZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6MF0pOwor
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiR2V0QmFja2luZ1NjYWxlRmFj
dG9yUGFnZUdyb3VwIikuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB2aWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cC5nZXQo
KV0pOwogICAgIFtbdmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6
YmxhbmsiXV1dOwogCiAgICAgUmV0YWluUHRyPFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3Rvcldp
bmRvdz4gd2luZG93MSA9IGNyZWF0ZVdpbmRvdygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAppbmRleCAyYTliY2I2OThkMzNhNjYwMzRhYzdkOTk2MWIyNGZmODFi
MzgwNjgxLi43N2E2NDQzNTE1NGRlOWMzYjAyNGZkYzY3ZjdmYzg2YWU3YzQxY2Q2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTQ4NCw4ICsxNDg0LDYg
QEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9u
cyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJs
ZUVkaXRhYmxlSW1hZ2VzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlZGl0YWJsZSIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9u
cy5lZGl0YWJsZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlVW5kb01hbmFnZXJBUEkiKQotICAgICAgICAgICAgdGVz
dE9wdGlvbnMuZW5hYmxlVW5kb01hbmFnZXJBUEkgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFs
dWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gInNob3VsZEhhbmRsZVJ1bk9wZW5Q
YW5lbCIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5zaG91bGRIYW5kbGVSdW5PcGVuUGFuZWwg
PSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChr
ZXkgPT0gInNob3VsZFByZXNlbnRQb3BvdmVycyIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmgKaW5kZXggYmNjMGI4NTYyZTY4YjVjMmRmZGM0NjNhMzg1ZjEzMjliYjJiNTRmNy4uYjk0
ZjhmNzE5YjYxMzNmNzU4YmMzZjQ2ZWRlNTE0YmE4ZDhmYzExZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuaApAQCAtOTMsNyArOTMsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgIGJvb2wgZW5hYmxlU2VydmljZUNvbnRyb2xzIHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJs
ZUVkaXRhYmxlSW1hZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIGVkaXRhYmxlIHsgZmFsc2UgfTsK
LSAgICBib29sIGVuYWJsZVVuZG9NYW5hZ2VyQVBJIHsgZmFsc2UgfTsKICAgICBib29sIHNob3Vs
ZEhhbmRsZVJ1bk9wZW5QYW5lbCB7IHRydWUgfTsKICAgICBib29sIHNob3VsZFByZXNlbnRQb3Bv
dmVycyB7IHRydWUgfTsKICAgICBib29sIGVuYWJsZUFwcE5hcCB7IGZhbHNlIH07CkBAIC0xNTcs
NyArMTU2LDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICAgICAgICAgIHx8IHNob3VsZEln
bm9yZU1ldGFWaWV3cG9ydCAhPSBvcHRpb25zLnNob3VsZElnbm9yZU1ldGFWaWV3cG9ydAogICAg
ICAgICAgICAgfHwgZW5hYmxlRWRpdGFibGVJbWFnZXMgIT0gb3B0aW9ucy5lbmFibGVFZGl0YWJs
ZUltYWdlcwogICAgICAgICAgICAgfHwgZWRpdGFibGUgIT0gb3B0aW9ucy5lZGl0YWJsZQotICAg
ICAgICAgICAgfHwgZW5hYmxlVW5kb01hbmFnZXJBUEkgIT0gb3B0aW9ucy5lbmFibGVVbmRvTWFu
YWdlckFQSQogICAgICAgICAgICAgfHwgc2hvdWxkSGFuZGxlUnVuT3BlblBhbmVsICE9IG9wdGlv
bnMuc2hvdWxkSGFuZGxlUnVuT3BlblBhbmVsCiAgICAgICAgICAgICB8fCBzaG91bGRQcmVzZW50
UG9wb3ZlcnMgIT0gb3B0aW9ucy5zaG91bGRQcmVzZW50UG9wb3ZlcnMKICAgICAgICAgICAgIHx8
IGNvbnRlbnRJbnNldFRvcCAhPSBvcHRpb25zLmNvbnRlbnRJbnNldFRvcApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDk4
YTU4NmNjMzc3YjVlMjg5YjZmNWQ4NDk1ZTJjYjVkMTMwYzE1YzUuLjU0OGZlNzMxMzA2NjQ2OGYy
ZGFhNzZjMjE1MDBlMGEyYTQwODQxYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE0OSw5ICsxNDksNiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlv
blJlZiwgY29uc3QgVGVzdE9wdAogICAgIGlmIChvcHRpb25zLmVuYWJsZUVkaXRhYmxlSW1hZ2Vz
KQogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0RWRpdGFibGVJbWFnZXNFbmFibGVk
OllFU107CiAKLSAgICBpZiAob3B0aW9ucy5lbmFibGVVbmRvTWFuYWdlckFQSSkKLSAgICAgICAg
W2NvcGllZENvbmZpZ3VyYXRpb24gX3NldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZDpZRVNdOwotCiAg
ICAgaWYgKG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbikgewogICAgICAgICBhdXRvIGVwaGVt
ZXJhbFdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnRE
YXRhU3RvcmVdOwogICAgICAgICBbZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OTM3NGI5NzQ5NmM5NTg4YTg3
NzE2OTk4NDMyMGNhNGFkY2VmNTE2Li44OWFlOWUzZGVkMWZmNzA1ZGQ2ZGJjODM3MzZlNTcwNjAw
MDEyYzc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMzEgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6OlBhZ2VDb25maWd1cmF0aW9uIG1h
eSBoYXZlIGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVzIGJldHdlZW4gV2ViUHJlZmVyZW5j
ZXMgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIGluc3RhbmNlIHZhcmlhYmxlcwor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRkLWl0ZW0tZXhj
ZXB0aW9ucy5odG1sOgorICAgICAgICAqIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdl
ci1hZGQtaXRlbS5odG1sOgorICAgICAgICAqIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFu
YWdlci1kZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sOgorICAgICAgICAqIGVkaXRpbmcvdW5k
by1tYW5hZ2VyL3VuZG8tbWFuYWdlci1pbnRlcmZhY2VzLmh0bWw6CisgICAgICAgICogZWRpdGlu
Zy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFiZWxzLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWtlZXBzLXdyYXBwZXItYWxpdmUuaHRt
bDoKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItdW5kby1yZWRv
LWFmdGVyLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sOgorICAgICAgICAtIEZpeCB0ZXN0cyB0byB1
c2UgImludGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5hYmxlZD10cnVlIiBpbnN0ZWFkCisgICAgICAg
ICAgb2YgY3VzdG9tICJlbmFibGVVbmRvTWFuYWdlckFQST10cnVlIiBzZXR0aW5nLCB3aGljaCBp
cyBiZWluZworICAgICAgICAgIHJlbW92ZWQgc2luY2UgaXQgZG9lc24ndCB3b3JrIGFmdGVyIHRo
ZSBjaGFuZ2VzIHRvIFdlYktpdC4KKwogMjAyMC0wMy0zMSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtUYWJsZXNdIEluZmluaXRlIHJlY3Vyc2lvbiBpbiBSZW5k
ZXJUcmVlQnVpbGRlcjo6YXR0YWNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRkLWl0ZW0tZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWFkZC1pdGVtLWV4Y2VwdGlv
bnMuaHRtbAppbmRleCA2ZTY1M2UxMzA4NTBlM2I1ZGFkYmYyOTgzNjgxZDdiZWY0ZTUwMDAwLi40
MDRlYzAyY2YzYTBiNjlmMTE1ODFkY2YzZWQ2YjI5MjgxNGQ1ZThmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRkLWl0ZW0tZXhjZXB0
aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFu
YWdlci1hZGQtaXRlbS1leGNlcHRpb25zLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFuYWdlckFQST10cnVl
IF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5h
bDpVbmRvTWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAgPG1ldGEgY2hh
cnNldD0idXRmOCI+CiAgICAgPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRkLWl0ZW0uaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRlbS5odG1sCmluZGV4IGEzMjZj
OGU2ZGU4ZTJlMTBjZTYxNDM3NGFkM2U5YzBhYjRmMTVkODguLjg4MTk0MTYxMDZiYjI0MjY5YzVk
NTYxNGIzZDhlNDVlNDI1MDVjNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdW5k
by1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRlbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRlbS5odG1sCkBAIC0xLDQgKzEs
NCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlVW5k
b01hbmFnZXJBUEk9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgaW50ZXJuYWw6VW5kb01hbmFnZXJBUElFbmFibGVkPXRydWUgXSAtLT4KIDxodG1s
PgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1h
bmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFsZS11bmRvLWl0ZW1zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8t
aXRlbXMuaHRtbAppbmRleCBlNTI4OTAwNTZmNTkzNjU2YzFkNzk1NGU5OGM4MDI3NWFlOTM0Y2E2
Li43MWZiZTRmZDM1ZWExNjBhZjQ4NTA1ZjMyYmQ2YjNkYzAzMjIzMWI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxl
LXVuZG8taXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91
bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbApAQCAtMSw0ICsxLDQgQEAK
LTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZVVuZG9NYW5h
Z2VyQVBJPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGludGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KICAgICA8aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1pbnRlcmZhY2VzLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItaW50ZXJmYWNlcy5o
dG1sCmluZGV4IDkzYjJjYTdhMGI4YWUzMzA3MTYwMWQ1ZjkzZWNmZDllOTg2OGRjZDMuLjBiZmM3
ZTBjMWVkN2EwNjQwNTYyMzZmODA5ZDk2ZDcyMGYxYWYyNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1pbnRlcmZhY2VzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWludGVyZmFj
ZXMuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGVuYWJsZVVuZG9NYW5hZ2VyQVBJPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5hYmxl
ZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1pdGVtLWxhYmVscy5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFiZWxz
Lmh0bWwKaW5kZXggODRhN2YxN2EyNjQ3NDAwNjgwNmY0ZGU5NDI0OTliZDFiMjc0NGRlZC4uNWFj
Njk4YjFhYmVhNWI5OTc3NGMwM2Q1NzdjNjVlMzZlYmJmNjZlZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFiZWxzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0t
bGFiZWxzLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFuYWdlckFQST10cnVlIF0gLS0+Cis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVu
YWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CiAgICAg
PGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRv
LW1hbmFnZXIta2VlcHMtd3JhcHBlci1hbGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWtlZXBzLXdyYXBwZXItYWxpdmUuaHRtbAppbmRleCBi
Y2NjZTUxODA4N2QxMjBmYTY3MDA5MDFkNjNkOTk5YjU4NmM2YzhjLi44MDFkZDllNWRmZGEyOGM2
M2I5YWU4NmE1ODYwNWIxMjI3NDI1MzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXIta2VlcHMtd3JhcHBlci1hbGl2ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1rZWVwcy13cmFw
cGVyLWFsaXZlLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFuYWdlckFQST10cnVlIF0gLS0+Cis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQ
SUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItdW5kby1yZWRvLWFm
dGVyLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1h
bmFnZXIvdW5kby1tYW5hZ2VyLXVuZG8tcmVkby1hZnRlci1nYXJiYWdlLWNvbGxlY3Rpb24uaHRt
bAppbmRleCBjYWQwY2VkNGNlZTgzM2NkYTE5Y2VlMDNjY2ExNGI0MmE0YWE0ODIxLi5iMjUwZTdj
YzgzNGYyNjY3MzM4NDgwOTJlZjRlY2M2MzJkN2RjMGZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItdW5kby1yZWRvLWFmdGVyLWdhcmJh
Z2UtY29sbGVjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2Vy
L3VuZG8tbWFuYWdlci11bmRvLXJlZG8tYWZ0ZXItZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKQEAg
LTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBl
bmFibGVVbmRvTWFuYWdlckFQST10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBdIC0t
PgogPGh0bWw+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CiAgICAgPGhlYWQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>395072</attachid>
            <date>2020-03-31 11:13:45 -0700</date>
            <delta_ts>2020-03-31 11:13:45 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-209678-20200331111456.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395235</attachid>
            <date>2020-04-01 19:34:12 -0700</date>
            <delta_ts>2020-04-02 11:37:12 -0700</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-209678-20200401193532.patch</filename>
            <type>text/plain</type>
            <size>37753</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiOWZiNjA1NmJiY2Y1NDY3
NzI2YWFhMzYxYmQ4N2E3Njk1ZTc4YTAuLmQzNjQ5ZjNkZDZjYTJiZGEyODMzMzg1MWVlZTgwYWY3
NDg5NjE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDMtMzEgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uIG1heSBoYXZlIGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVzIGJldHdlZW4gV2ViUHJl
ZmVyZW5jZXMgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIGluc3RhbmNlIHZhcmlh
YmxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4PgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgZml4IHRoaXMgYnVnIGJ5IHJlbW92aW5nCisgICAgICAgIEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246Om1fcHJlZmVyZW5jZVZhbHVlcyBhbmQKKyAgICAgICAgV2ViUGFn
ZVByb3h5OjptX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLCBhbmQgaW5zdGVhZCBzZXQK
KyAgICAgICAgdmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBXZWJQcmVmZXJlbmNlcyBvYmplY3QsIHdo
aWNoIGhvbGRzIHZhbHVlcworICAgICAgICBpbiBpdHMgV2ViUHJlZmVyZW5jZXNTdG9yZSBpbnN0
YW5jZSB2YXJpYWJsZS4gIFRoaXMgY2hhbmdlIG9ubHkKKyAgICAgICAgcmVxdWlyZXMgdGhhdCB0
aGUgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiBvYmplY3QgaGFzCisgICAgICAgIG1fcHJlZmVyZW5j
ZXMgc2V0IHRvIGEgdmFsaWQgV2ViUHJlZmVyZW5jZXMgb2JqZWN0IGJlZm9yZSB1c2luZworICAg
ICAgICB0aGUgc2V0dGluZ3MgQVBJcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IFdLQXR0YWNobWVu
dCBUZXN0V2ViS2l0QVBJIHRlc3RzIGFuZAorICAgICAgICBlZGl0aW5nL3VuZG8tbWFuYWdlciBs
YXlvdXQgdGVzdHMsIGFtb25nIG90aGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y29weSBjb25zdCk6CisgICAgICAgIC0gUmVtb3ZlIHVzZSBvZiBtX3ByZWZlcmVuY2VWYWx1ZXMg
aW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAtIFVwZGF0ZSBoZWFkZXJzIGFmdGVyIHJlbW92aW5nIFdlYlBy
ZWZlcmVuY2VzU3RvcmUuaC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZl
cmVuY2VWYWx1ZXMpOiBEZWxldGUuCisgICAgICAgIC0gUmVtb3ZlIHVzZSBvZiBtX3ByZWZlcmVu
Y2VWYWx1ZXMgaW5zdGFuY2UgdmFyaWFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFBhZ2VDb25maWd1
cmF0aW9uOl0pOgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgV2ViUHJlZmVyZW5jZXMgbWV0aG9k
cyBmb3Igc2V0dGluZ3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06
CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVm
OnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAgICAgIC0gQ3JlYXRlIFdlYlByZWZlcmVuY2VzIG9iamVj
dCBmb3IgQVBJOjpQYWdlQ29uZmlndXJhdGlvbgorICAgICAgICAgIG9iamVjdC4gIFRoaXMgaXMg
d2hhdCBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSgpIGRvZXMKKyAgICAgICAgICB3aGVu
IGNyZWF0aW5nIGEgV2ViUGFnZVByb3h5IG9iamVjdC4KKyAgICAgICAgLSBTd2l0Y2ggdG8gdXNl
IFdlYlByZWZlcmVuY2VzIG1ldGhvZCB0byBzZXQKKyAgICAgICAgICBTeXN0ZW1MYXlvdXREaXJl
Y3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAtIFJlbW92ZSBp
bml0aWFsaXphdGlvbiBvZiBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLgorICAgICAg
ICAtIFN3aXRjaCB0byB1c2UgV2ViUHJlZmVyZW5jZXMgbWV0aG9kIHRvIHNldAorICAgICAgICAg
IERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJlZmVyZW5jZXNTdG9yZSBjb25zdCk6CisgICAgICAgIC0gU2ltcGxpZnkgdGhpcyBtZXRo
b2QgYWZ0ZXIgcmVtb3ZpbmcKKyAgICAgICAgICBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFs
dWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgLSBSZW1v
dmUgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcy4KKwogMjAyMC0wMy0zMSAgTWVnYW4g
R2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERpc21pc3MgY29s
b3IgcGlja2VyIG9uIGNvbG9yIHNlbGVjdGlvbiBvbiBNYWNDYXRhbHlzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
ZDA5MTc2NTFlZjkxMjRiZWQ2NGRhNmNlZGI0ZGY2MjYwNzU2ODZlMS4uMTYzNzRiNTkxYTBjMDJj
ZDkyNjI2MjcxMTQ3ZGRjOWFlNzUzYzQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw2IEBAIFJl
ZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAg
IGNvcHktPm1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdGhpcy0+bV91c2VyQ29udGVudENvbnRy
b2xsZXI7CiAgICAgY29weS0+bV9wYWdlR3JvdXAgPSB0aGlzLT5tX3BhZ2VHcm91cDsKICAgICBj
b3B5LT5tX3ByZWZlcmVuY2VzID0gdGhpcy0+bV9wcmVmZXJlbmNlczsKLSAgICBjb3B5LT5tX3By
ZWZlcmVuY2VWYWx1ZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VWYWx1ZXM7CiAgICAgY29weS0+bV9y
ZWxhdGVkUGFnZSA9IHRoaXMtPm1fcmVsYXRlZFBhZ2U7CiAgICAgY29weS0+bV92aXNpdGVkTGlu
a1N0b3JlID0gdGhpcy0+bV92aXNpdGVkTGlua1N0b3JlOwogICAgIGNvcHktPm1fd2Vic2l0ZURh
dGFTdG9yZSA9IHRoaXMtPm1fd2Vic2l0ZURhdGFTdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggZWVjN2YxOWY5NDAx
MGQxZGIzMjc0MDVmYjg4NDg0NGM5Mjg4ZGFkYy4uMmQxNTlmNGEyNThjOTg5MjExMDQxNmMwMDE1
NzI4NjdmZmJmOTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTI2LDExICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgi
CiAjaW5jbHVkZSAiV2ViVmlld0NhdGVnb3J5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfUFJPVE9DT0woX1VJQ2xpY2tJbnRlcmFjdGlv
bkRyaXZpbmcpOwpAQCAtNzcsOCArNzgsNiBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMoKTsKICAgICB2b2lkIHNldFByZWZlcmVuY2VzKFdlYktpdDo6
V2ViUHJlZmVyZW5jZXMqKTsKIAotICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWVNYXAmIHByZWZlcmVuY2VWYWx1ZXMoKSB7IHJldHVybiBtX3ByZWZlcmVuY2VWYWx1ZXM7IH0K
LQogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0UmVsYXRlZFBhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIApAQCAtMTU2LDcgKzE1
NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgIFJlZlB0cjxXZWJLaXQ6Oldl
YlBhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXM+IG1fcHJlZmVyZW5jZXM7Ci0gICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZU1hcCBtX3ByZWZlcmVuY2VWYWx1ZXM7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5
PiBtX3JlbGF0ZWRQYWdlOwogICAgIFJlZlB0cjxXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU+IG1f
dmlzaXRlZExpbmtTdG9yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggNTNhMGY5OWI1MzEyNTNhYjUxZDViNDI3YjRlZDc4NTcyNTc3
ZjAwYS4uYzJjYzY1MzE4Yzk5YzZjNmExNGU5M2YwN2E2NjU3OTViZDY5NmI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04OSw3ICs4
OSw3IEBACiAjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJX
ZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJl
ZmVyZW5jZXNLZXlzLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vi
VVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCkBAIC00MzYsOTUgKzQzNiw5NSBAQCAtICh2b2lkKV9z
ZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VD
b25maWd1cmF0aW9uCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXMoV2ViQ29yZTo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0Fy
cmF5KFtfY29uZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CiAK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVz
c2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyghIVtfY29uZmlndXJh
dGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKTsKIAotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlv
bl0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oISFbX2NvbmZpZ3VyYXRpb24gX3Jlc3BlY3RzSW1hZ2VPcmll
bnRhdGlvbl0pOwogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEV4cG9zZSBXS1By
ZWZlcmVuY2VzLl9zaG91bGRQcmludEJhY2tncm91bmRzIG9uIGlPUywgYWRvcHQgaXQgaW4gYWxs
IGlPUyBjbGllbnRzLCBhbmQgcmVtb3ZlIHRoaXMgYW5kIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24u
X3ByaW50c0JhY2tncm91bmRzLgotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFByaW50QmFja2dyb3Vu
ZHNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBfcHJpbnRzQmFja2dyb3VuZHNdKSk7Ci0jZW5kaWYKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjppbmNy
ZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxSZW5kZXJpbmdT
dXBwcmVzc2lvblRpbWVvdXRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdE1hcmt1cEVu
YWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmln
dXJhdGlvbiBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91
bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNv
cHldKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aHR0cEVxdWl2RW5hYmxlZEtleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hbGxvd3NNZXRhUmVm
cmVzaF0pKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
c0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0
aW9uIF9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc10pKTsKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjphbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93VG9wTmF2aWdhdGlvblRvRGF0
YVVSTHNdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFNob3Vs
ZFByaW50QmFja2dyb3VuZHMoISFbX2NvbmZpZ3VyYXRpb24gX3ByaW50c0JhY2tncm91bmRzXSk7
CisjZW5kaWYKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW5jcmVt
ZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXQoW19jb25maWd1cmF0aW9uIF9pbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5wcmVmZXJlbmNlcygpLT5zZXRKYXZhU2NyaXB0TWFya3VwRW5hYmxlZCghIVtfY29uZmlndXJh
dGlvbiBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlcygpLT5zZXRTaG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weSghIVtfY29u
ZmlndXJhdGlvbiBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5XSk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEhUVFBFcXVpdkVuYWJsZWQoISFbX2NvbmZpZ3Vy
YXRpb24gX2FsbG93c01ldGFSZWZyZXNoXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCEhW19jb25maWd1
cmF0aW9uIF9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc10pOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxz
KCEhW19jb25maWd1cmF0aW9uIF9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzXSk7CiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFdhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5k
b3coW19jb25maWd1cmF0aW9uIF93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93
XSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERyYXdzQmFja2dyb3VuZChbX2NvbmZpZ3Vy
YXRpb24gX2RyYXdzQmFja2dyb3VuZF0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFtfY29uZmlndXJhdGlvbiBfaXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uXSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZEtleSgp
LCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9p
bmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERl
ZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRPckZpcnN0UGFpbnRL
ZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlv
biBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZF0p
KTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzS2V5KCksIFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2No
ZW1lcygpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEluY29t
cGxldGVJbWFnZUJvcmRlckVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2luY29tcGxldGVJbWFn
ZUJvcmRlckVuYWJsZWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c2V0U2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZE9y
Rmlyc3RQYWludCghIVtfY29uZmlndXJhdGlvbiBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3Jp
cHRzVW50aWxBZnRlckRvY3VtZW50TG9hZF0pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVm
ZXJlbmNlcygpLT5zZXRTaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzKHNob3VsZFJlc3RyaWN0
QmFzZVVSTFNjaGVtZXMoKSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
c2hvd3NVUkxzSW5Ub29sVGlwc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfc2hvd3NVUkxzSW5Ub29sVGlwc10pKTsKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpzZXJ2aWNlQ29udHJvbHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3NlcnZpY2VDb250cm9sc0Vu
YWJsZWRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW1hZ2VDb250cm9sc0VuYWJsZWRLZXkoKSwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfaW1hZ2VD
b250cm9sc0VuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkt
PnNldFNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9zaG93c1VS
THNJblRvb2xUaXBzXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dFNlcnZpY2VDb250cm9sc0VuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX3NlcnZpY2VDb250cm9s
c0VuYWJsZWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW1h
Z2VDb250cm9sc0VuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2ltYWdlQ29udHJvbHNFbmFibGVk
XSk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5Ojp1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5S2V5KCks
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoY29udmVydFVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3koW19jb25maWd1cmF0aW9uIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xp
Y3ldKSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5KGNvbnZlcnRVc2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5
KFtfY29uZmlndXJhdGlvbiB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5XSkpOwogICAgIC8v
IFdlIGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIHNvIG91ciBjbGll
bnQgaGFzbid0IGhhZCB0aW1lIHRvIHNldCBvdXIgdXNlciBpbnRlcmZhY2UgZGlyZWN0aW9uLgog
ICAgIC8vIFRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBkb2NzWzFdLCAidGhpcyBwcm9wZXJ0
eSBjb250YWlucyB0aGUgdmFsdWUgcmVwb3J0ZWQgYnkgdGhlIGFwcCdzIHVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gcHJvcGVydHkuIgogICAgIC8vIFsxXSBodHRwOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9saWJyYXJ5L21hYy9kb2N1bWVudGF0aW9uL0NvY29hL1JlZmVyZW5jZS9BcHBsaWNh
dGlvbktpdC9DbGFzc2VzL05TVmlld19DbGFzcy9pbmRleC5odG1sIy8vYXBwbGVfcmVmL2RvYy91
aWQvMjAwMDAwMTQtU1cyMjIKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rpb25L
ZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShjb252ZXJ0U3lzdGVtTGF5
b3V0RGlyZWN0aW9uKHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9u
KGNvbnZlcnRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oc2VsZi51c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0lubGluZU1lZGlhUGxheWJh
Y2tdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja0FmdGVyRnVs
bHNjcmVlbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25m
aWd1cmF0aW9uIF9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuXSkpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OmlubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0
cmlidXRlS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZp
Z3VyYXRpb24gX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
XSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNr
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRp
b24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnVzZXJJbnRl
cmZhY2VEaXJlY3Rpb25Qb2xpY3lLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6VXNlckludGVyZmFjZURpcmVjdGlv
blBvbGljeTo6Q29udGVudCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzeXN0ZW1MYXlvdXREaXJlY3Rp
b25LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oV2ViQ29yZTo6VGV4dERpcmVjdGlvbjo6TFRSKSkpOwotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6
OmFsbG93U2V0dGluZ0FueVhIUkhlYWRlckZyb21GaWxlVVJMc0tleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHNob3VsZEFsbG93U2V0dGluZ0FueVhIUkhlYWRlckZyb21G
aWxlVVJMcygpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5z
ZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSghIVtfY29uZmlndXJhdGlvbiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1
aWNrTG9va1ByZXZpZXddKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkt
PnNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2soISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFja10pOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygp
LT5zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKCEhW19jb25maWd1
cmF0aW9uIF9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuXSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldElubGluZU1lZGlhUGxheWJhY2tS
ZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlKCEhW19jb25maWd1cmF0aW9uIF9pbmxpbmVNZWRp
YVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZV0pOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5
YmFjayghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFj
a10gJiYgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VXNlckludGVyZmFjZURpcmVjdGlv
blBvbGljeShzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6VXNlckludGVyZmFjZURpcmVj
dGlvblBvbGljeTo6Q29udGVudCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpLT5zZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNv
cmU6OlRleHREaXJlY3Rpb246OkxUUikpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlcygpLT5zZXRBbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoc2hvdWxkQWxs
b3dTZXR0aW5nQW55WEhSSGVhZGVyRnJvbUZpbGVVUkxzKCkpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVp
Y2tMb29rUHJldmlldyghIVtfY29uZmlndXJhdGlvbiBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZ1F1aWNrTG9va1ByZXZpZXddKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OmRldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkFQSUVuYWJsZWRL
ZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShsaW5rZWRPbk9yQWZ0ZXIo
V2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBl
cm1pc3Npb25BUEkpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkFQSUVuYWJsZWQobGlua2VkT25PckFmdGVyKFdl
YktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJt
aXNzaW9uQVBJKSk7CiAjZW5kaWYKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6c3lzdGVtUHJldmlld0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfc3lzdGVtUHJldmlld0VuYWJsZWRdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFN5c3RlbVByZXZpZXdFbmFi
bGVkKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxlZF0pOwogI2VuZGlmCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIFdLQXVkaW92aXN1YWxNZWRpYVR5
cGVzIG1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyR2VzdHVyZSA9IFtfY29uZmlndXJhdGlvbiBtZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrXTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpy
ZXF1aXJlc1VzZXJHZXN0dXJlRm9yVmlkZW9QbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKChtZWRpYVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1
ZGlvdmlzdWFsTWVkaWFUeXBlVmlkZW8pID09IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVWaWRlbykp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVGb3JBdWRpb1BsYXliYWNrS2V5
KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoKChtZWRpYVR5cGVzUmVxdWly
aW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQXVkaW8pID09IFdLQXVkaW92
aXN1YWxNZWRpYVR5cGVBdWRpbykpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0
dXJlVG9Mb2FkVmlkZW9LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShz
aG91bGRSZXF1aXJlVXNlckdlc3R1cmVUb0xvYWRWaWRlbygpKSk7Ci0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
bWFpbkNvbnRlbnRVc2VyR2VzdHVyZU92ZXJyaWRlRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9tYWluQ29udGVudFVzZXJH
ZXN0dXJlT3ZlcnJpZGVFbmFibGVkXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmludmlzaWJsZUF1dG9w
bGF5Tm90UGVybWl0dGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gX2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkXSkpOwotICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNLZXk6Om1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseUtleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9tZWRpYURhdGFMb2Fk
c0F1dG9tYXRpY2FsbHldKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZXMoKS0+c2V0UmVxdWlyZXNVc2VyR2VzdHVyZUZvclZpZGVvUGxheWJhY2so
KG1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyR2VzdHVyZSAmIFdLQXVkaW92aXN1YWxNZWRpYVR5cGVW
aWRlbykgPT0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZVZpZGVvKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0UmVxdWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUGxheWJh
Y2soKChtZWRpYVR5cGVzUmVxdWlyaW5nVXNlckdlc3R1cmUgJiBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlQXVkaW8pID09IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVBdWRpbykpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRSZXF1aXJlc1VzZXJHZXN0dXJlVG9Mb2FkVmlk
ZW8oc2hvdWxkUmVxdWlyZVVzZXJHZXN0dXJlVG9Mb2FkVmlkZW8oKSk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldE1haW5Db250ZW50VXNlckdlc3R1cmVPdmVycmlk
ZUVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX21haW5Db250ZW50VXNlckdlc3R1cmVPdmVycmlk
ZUVuYWJsZWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0SW52
aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQoISFbX2NvbmZpZ3VyYXRpb24gX2ludmlzaWJsZUF1
dG9wbGF5Tm90UGVybWl0dGVkXSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2Vz
KCktPnNldE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSghIVtfY29uZmlndXJhdGlvbiBfbWVk
aWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5XSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCktPnNldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBf
YXR0YWNobWVudEVsZW1lbnRFbmFibGVkXSk7CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04p
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVu
Y2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6ZGF0YURldGVjdG9yVHlw
ZXNLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJvbVdLRGF0YURldGVjdG9yVHlwZXMoW19jb25maWd1cmF0aW9uIGRhdGFEZXRl
Y3RvclR5cGVzXSkpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dERhdGFEZXRlY3RvclR5cGVzKHN0YXRpY19jYXN0PHVpbnQzMl90Pihmcm9tV0tEYXRhRGV0ZWN0
b3JUeXBlcyhbX2NvbmZpZ3VyYXRpb24gZGF0YURldGVjdG9yVHlwZXNdKSkpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxv
d3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNr
XSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRBbGxvd3NBaXJQ
bGF5Rm9yTWVkaWFQbGF5YmFjayghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVk
aWFQbGF5YmFja10pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNLZXk6OmFwcGxlUGF5RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9hcHBsZVBheUVuYWJsZWRdKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFwcGxlUGF5RW5hYmxlZCghIVtfY29uZmln
dXJhdGlvbiBfYXBwbGVQYXlFbmFibGVkXSk7CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om5l
ZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX25lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrXSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6Om1lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWUoU3RyaW5nKFtfY29uZmlndXJhdGlvbiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnRdKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93TWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93TWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrXSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXROZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVS
THNRdWlyayghIVtfY29uZmlndXJhdGlvbiBfbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxz
UXVpcmtdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0TWVkaWFD
b250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoU3RyaW5nKFtfY29uZmlndXJhdGlv
biBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRdKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEFsbG93TWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrKCEhW19jb25maWd1cmF0aW9uIF9hbGxv
d01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFja10pOwog
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6Y29sb3JGaWx0ZXJFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2NvbG9yRmlsdGVyRW5hYmxl
ZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0Q29sb3JGaWx0
ZXJFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9jb2xvckZpbHRlckVuYWJsZWRdKTsKIAotICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNLZXk6OmVkaXRhYmxlSW1hZ2VzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJs
ZWRdKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6dW5kb01hbmFnZXJBUElFbmFibGVkS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3VuZG9NYW5h
Z2VyQVBJRW5hYmxlZF0pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c2V0RWRpdGFibGVJbWFnZXNFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdl
c0VuYWJsZWRdKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VW5k
b01hbmFnZXJBUElFbmFibGVkKCEhW19jb25maWd1cmF0aW9uIF91bmRvTWFuYWdlckFQSUVuYWJs
ZWRdKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNL
ZXk6OmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9sZWdhY3lFbmNyeXB0ZWRNZWRp
YUFQSUVuYWJsZWRdKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNl
dExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCghIVtfY29uZmlndXJhdGlvbiBfbGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkXSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoIVdURjo6cHJvY2Vzc0hh
c0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIp
KQotICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShmYWxzZSkpOworICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0U2VydmljZVdvcmtlcnNFbmFibGVkKGZhbHNlKTsK
ICNlbmRpZgogCiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpG
aXJzdFdoZXJlU2l0ZVNwZWNpZmljUXVpcmtzQXJlRW5hYmxlZEJ5RGVmYXVsdCkpCi0gICAgICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNLZXk6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoZmFsc2UpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VzKCktPnNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGZhbHNlKTsKIH0KIAog
LSAodm9pZClfc2V0VXBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYjQyNzU3Zjk1NjYwMzFhNjBmMDZlYWQy
YzVlMTM4ZDk4ZGQ1Y2FhYS4uNjI5Yzg0NWU2ZTE5NzY1YjE0MThhZjI3YzMyNzM1ZTkwZjQ0YThj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTM5LDcg
KzM5LDcgQEAKICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW1wb3J0ICJXZWJQYWdl
R3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXNLZXlzLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tMaW5rSWNvblBh
cmFtZXRlcnNJbnRlcm5hbC5oIgpAQCAtMTE5NCw3ICsxMTk0LDggQEAgLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBh
Z2VHcm91cFIKICAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAoV2ViS2l0Ojp0b0ltcGwo
cGFnZUdyb3VwUmVmKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UoV2ViS2l0
Ojp0b0ltcGwocmVsYXRlZFBhZ2UpKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgY29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpz
eXN0ZW1MYXlvdXREaXJlY3Rpb25LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KHNlbGYudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0UHJlZmVyZW5jZXMoJmNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNl
cygpKTsKKyAgICBjb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRTeXN0ZW1MYXlvdXRE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbihzZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CiAjZW5kaWYKIAogICAg
IHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOipXZWJLaXQ6OnRv
SW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJhdGlvbildOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDIwOGE4N2VjYmJi
YWQwY2I2YzcwMWU3NmNjNTNkMjRlN2Q4ZDU0NC4uMTk4MGNmOWQ1MzI1NWRhZjVhMjQyYTQwNTVj
MTY5YzcyNDAyOWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00NzQsNyArNDc0LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAgICAsIG1faXNT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVF
bmFibGVkKCkpCiAjZW5kaWYKICAgICAsIG1fcGFnZUxvYWRTdGF0ZSgqdGhpcykKLSAgICAsIG1f
Y29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkpCiAgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2Fi
bGU+KCp0aGlzKSkKQEAgLTUxNyw3ICs1MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
ICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxl
U2NyZWVuU2l6ZU92ZXJyaWRlKHByZWZlcmVuY2VzU3RvcmUoKS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmRpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGVLZXkoKSkpOworICAg
IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0RGlzYWJsZVNjcmVlblNpemVPdmVycmlkZSht
X3ByZWZlcmVuY2VzLT5kaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKCkpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTI3NjUsMTQgKzI3NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKIAogV2ViUHJlZmVyZW5jZXNTdG9yZSBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzU3RvcmUo
KSBjb25zdAogewotICAgIGlmIChtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG1fcHJlZmVyZW5jZXMtPnN0b3JlKCk7Ci0KLSAgICBXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlID0gbV9wcmVmZXJlbmNlcy0+c3RvcmUoKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHByZWZlcmVuY2UgOiBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVz
KQotICAgICAgICBzdG9yZS5tX3ZhbHVlcy5zZXQocHJlZmVyZW5jZS5rZXksIHByZWZlcmVuY2Uu
dmFsdWUpOwotCi0gICAgcmV0dXJuIHN0b3JlOworICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT5z
dG9yZSgpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDU2YmUzNGUwMzk3Njc5YmE3MDA2ZTgyY2Uw
MjZjYjQxYmYyZjA1MWEuLmQzYmVkMWE0NmUzZTQ1ZDYxMGUyNGQxMGNmNDdmMDg0YTEzMzUxNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNjQ0LDcgKzI2NDQs
NiBAQCBwcml2YXRlOgogCiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fY3VycmVudEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIAot
ICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29uZmlndXJhdGlvblByZWZlcmVu
Y2VWYWx1ZXM7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzOwogICAgIGJvb2wgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OWExZTYwNGRlNGU3
MzZjNTJlYzVmNDU5OWIwNjg3NjE1NThkOGE4Li5hOGUzYTZhOWY1ZDA3NGI5OTIyMzMyNmU1NjVl
MTQ4MjVkY2JkNWRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDMtMzEgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6OlBhZ2VDb25maWd1cmF0aW9uIG1heSBoYXZl
IGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVzIGJldHdlZW4gV2ViUHJlZmVyZW5jZXMgYW5k
IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIGluc3RhbmNlIHZhcmlhYmxlcworICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9y
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIC0gRml4IFdLVmll
dyBjb25zdHJ1Y3RvciB0byBwYXNzIGEgdmFsaWQgV0tQYWdlR3JvdXBSZWYuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6dXBk
YXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0T3B0aW9ucy5oOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6aGFzU2FtZUluaXRp
YWxpemF0aW9uT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgLSBSZW1vdmUgc3VwcG9ydCBmb3IgY3Vz
dG9tICJlbmFibGVVbmRvTWFuYWdlckFQSSIgc2V0dGluZyBzaW5jZQorICAgICAgICAgIGxheW91
dCB0ZXN0cyBzaG91bGQgdXNlICJpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVuYWJsZWQiCisgICAg
ICAgICAgaW5zdGVhZC4KKwogMjAyMC0wMy0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXF1ZXN0cyBmb3IgbWVzc2FnZUhhbmRsZXJzKCkg
aW4gdGhlIERPTVdpbmRvdyBzaG91bGQgYmUgaWdub3JlZCBmb3Igbm9uLWFwcC1ib3VuZCBuYXZp
Z2F0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KaW5kZXggZWQ0MDc1ODhiZDQyYzM3MDA0
YTU0MmRmOTU4N2IzMjkzMTZjNjI3Ny4uNDI2OGEyNGVhY2QyNWYyMmUxMTI2MmRlYWRmZmM5OGYz
ODFmMzc4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0dldEJhY2tpbmdTY2FsZUZhY3Rvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tCkBAIC02OCw3ICs2OCw4IEBAIFRF
U1QoV2ViS2l0LCBHZXRCYWNraW5nU2NhbGVGYWN0b3IpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0
ZWRCdW5kbGVUZXN0KCJHZXRCYWNraW5nU2NhbGVGYWN0b3JUZXN0IikpOwogICAgIHNldEluamVj
dGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwotICAgIFJldGFpblB0cjxXS1ZpZXc+IHZp
ZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6MF0pOwor
ICAgIGF1dG8gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlm
aWVyKFV0aWw6OnRvV0soIkdldEJhY2tpbmdTY2FsZUZhY3RvclBhZ2VHcm91cCIpLmdldCgpKSk7
CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb250ZXh0UmVmOmNvbnRleHQuZ2V0KCkgcGFnZUdy
b3VwUmVmOnBhZ2VHcm91cC5nZXQoKV0pOwogICAgIFtbdmlldyBicm93c2luZ0NvbnRleHRDb250
cm9sbGVyXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOwogCiAgICAgUmV0YWluUHRyPFN5bnRoZXRp
Y0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdz4gd2luZG93MSA9IGNyZWF0ZVdpbmRvdygpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAyYTliY2I2OThkMzNh
NjYwMzRhYzdkOTk2MWIyNGZmODFiMzgwNjgxLi43N2E2NDQzNTE1NGRlOWMzYjAyNGZkYzY3Zjdm
Yzg2YWU3YzQxY2Q2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMTQ4NCw4ICsxNDg0LDYgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9t
VGVzdEhlYWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAg
ICAgIHRlc3RPcHRpb25zLmVuYWJsZUVkaXRhYmxlSW1hZ2VzID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlZGl0YWJsZSIpCiAg
ICAgICAgICAgICB0ZXN0T3B0aW9ucy5lZGl0YWJsZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJW
YWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlVW5kb01hbmFnZXJB
UEkiKQotICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5hYmxlVW5kb01hbmFnZXJBUEkgPSBwYXJz
ZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0g
InNob3VsZEhhbmRsZVJ1bk9wZW5QYW5lbCIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5zaG91
bGRIYW5kbGVSdW5PcGVuUGFuZWwgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUp
OwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gInNob3VsZFByZXNlbnRQb3BvdmVycyIpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKaW5kZXggYmNjMGI4NTYyZTY4YjVjMmRmZGM0NjNh
Mzg1ZjEzMjliYjJiNTRmNy4uYjk0ZjhmNzE5YjYxMzNmNzU4YmMzZjQ2ZWRlNTE0YmE4ZDhmYzEx
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaApAQCAtOTMsNyArOTMsNiBAQCBz
dHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZW5hYmxlU2VydmljZUNvbnRyb2xzIHsgZmFs
c2UgfTsKICAgICBib29sIGVuYWJsZUVkaXRhYmxlSW1hZ2VzIHsgZmFsc2UgfTsKICAgICBib29s
IGVkaXRhYmxlIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVVuZG9NYW5hZ2VyQVBJIHsgZmFs
c2UgfTsKICAgICBib29sIHNob3VsZEhhbmRsZVJ1bk9wZW5QYW5lbCB7IHRydWUgfTsKICAgICBi
b29sIHNob3VsZFByZXNlbnRQb3BvdmVycyB7IHRydWUgfTsKICAgICBib29sIGVuYWJsZUFwcE5h
cCB7IGZhbHNlIH07CkBAIC0xNTcsNyArMTU2LDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAg
ICAgICAgICAgIHx8IHNob3VsZElnbm9yZU1ldGFWaWV3cG9ydCAhPSBvcHRpb25zLnNob3VsZEln
bm9yZU1ldGFWaWV3cG9ydAogICAgICAgICAgICAgfHwgZW5hYmxlRWRpdGFibGVJbWFnZXMgIT0g
b3B0aW9ucy5lbmFibGVFZGl0YWJsZUltYWdlcwogICAgICAgICAgICAgfHwgZWRpdGFibGUgIT0g
b3B0aW9ucy5lZGl0YWJsZQotICAgICAgICAgICAgfHwgZW5hYmxlVW5kb01hbmFnZXJBUEkgIT0g
b3B0aW9ucy5lbmFibGVVbmRvTWFuYWdlckFQSQogICAgICAgICAgICAgfHwgc2hvdWxkSGFuZGxl
UnVuT3BlblBhbmVsICE9IG9wdGlvbnMuc2hvdWxkSGFuZGxlUnVuT3BlblBhbmVsCiAgICAgICAg
ICAgICB8fCBzaG91bGRQcmVzZW50UG9wb3ZlcnMgIT0gb3B0aW9ucy5zaG91bGRQcmVzZW50UG9w
b3ZlcnMKICAgICAgICAgICAgIHx8IGNvbnRlbnRJbnNldFRvcCAhPSBvcHRpb25zLmNvbnRlbnRJ
bnNldFRvcApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCmluZGV4IDk4YTU4NmNjMzc3YjVlMjg5YjZmNWQ4NDk1ZTJjYjVkMTMwYzE1
YzUuLjU0OGZlNzMxMzA2NjQ2OGYyZGFhNzZjMjE1MDBlMGEyYTQwODQxYmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAg
LTE0OSw5ICsxNDksNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZp
ZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgIGlmIChvcHRpb25z
LmVuYWJsZUVkaXRhYmxlSW1hZ2VzKQogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0
RWRpdGFibGVJbWFnZXNFbmFibGVkOllFU107CiAKLSAgICBpZiAob3B0aW9ucy5lbmFibGVVbmRv
TWFuYWdlckFQSSkKLSAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldFVuZG9NYW5hZ2Vy
QVBJRW5hYmxlZDpZRVNdOwotCiAgICAgaWYgKG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbikg
ewogICAgICAgICBhdXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0
YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBbZXBoZW1lcmFsV2Vic2l0
ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlYzc0OTVjYTZiMDFiODA5MTJiOGQ1ODc5Mjg5NjAzOThiZTFjNGQ4Li4xOWQ0OWJjNTZjYTA0
YTc5NGJmZTgzNGRhY2I3ZmMxNzE2NWZjZWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAt
MDMtMzEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEk6
OlBhZ2VDb25maWd1cmF0aW9uIG1heSBoYXZlIGNvbmZsaWN0aW5nIHByZWZlcmVuY2UgdmFsdWVz
IGJldHdlZW4gV2ViUHJlZmVyZW5jZXMgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFw
IGluc3RhbmNlIHZhcmlhYmxlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA5Njc4
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5ODEyNzE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91bmRv
LW1hbmFnZXItYWRkLWl0ZW0tZXhjZXB0aW9ucy5odG1sOgorICAgICAgICAqIGVkaXRpbmcvdW5k
by1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRlbS5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
dW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1kZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sOgor
ICAgICAgICAqIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1pbnRlcmZhY2VzLmh0
bWw6CisgICAgICAgICogZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFi
ZWxzLmh0bWw6CisgICAgICAgICogZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWtl
ZXBzLXdyYXBwZXItYWxpdmUuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91
bmRvLW1hbmFnZXItdW5kby1yZWRvLWFmdGVyLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sOgorICAg
ICAgICAtIEZpeCB0ZXN0cyB0byB1c2UgImludGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5hYmxlZD10
cnVlIiBpbnN0ZWFkCisgICAgICAgICAgb2YgY3VzdG9tICJlbmFibGVVbmRvTWFuYWdlckFQST10
cnVlIiBzZXR0aW5nLCB3aGljaCBpcyBiZWluZworICAgICAgICAgIHJlbW92ZWQgc2luY2UgaXQg
ZG9lc24ndCB3b3JrIGFmdGVyIHRoZSBjaGFuZ2VzIHRvIFdlYktpdC4KKwogMjAyMC0wMy0zMSAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNdWx0aUNvbHVtbl0g
Q2FsbCBSZW5kZXJUcmVlQnVpbGRlcjo6bXVsdGlDb2x1bW5EZXNjZW5kYW50SW5zZXJ0ZWQgb25s
eSB3aGVuIHRoZSBlbmNsb3NpbmcgZnJhZ21lbnRlZCBmbG93IGhhcyBjaGFuZ2VkCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRkLWl0
ZW0tZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5k
by1tYW5hZ2VyLWFkZC1pdGVtLWV4Y2VwdGlvbnMuaHRtbAppbmRleCA2ZTY1M2UxMzA4NTBlM2I1
ZGFkYmYyOTgzNjgxZDdiZWY0ZTUwMDAwLi40MDRlYzAyY2YzYTBiNjlmMTE1ODFkY2YzZWQ2YjI5
MjgxNGQ1ZThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91
bmRvLW1hbmFnZXItYWRkLWl0ZW0tZXhjZXB0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRlbS1leGNlcHRpb25zLmh0bWwK
QEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBlbmFibGVVbmRvTWFuYWdlckFQST10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBd
IC0tPgogPGh0bWw+CiAgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CiAgICAgPGhlYWQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItYWRk
LWl0ZW0uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdl
ci1hZGQtaXRlbS5odG1sCmluZGV4IGEzMjZjOGU2ZGU4ZTJlMTBjZTYxNDM3NGFkM2U5YzBhYjRm
MTVkODguLjg4MTk0MTYxMDZiYjI0MjY5YzVkNTYxNGIzZDhlNDVlNDI1MDVjNGQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1hZGQtaXRl
bS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdl
ci1hZGQtaXRlbS5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlVW5kb01hbmFnZXJBUEk9dHJ1ZSBdIC0tPgorPCFET0NU
WVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6VW5kb01hbmFnZXJB
UElFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFs
ZS11bmRvLWl0ZW1zLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRv
LW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAppbmRleCBlNTI4OTAwNTZmNTkz
NjU2YzFkNzk1NGU5OGM4MDI3NWFlOTM0Y2E2Li43MWZiZTRmZDM1ZWExNjBhZjQ4NTA1ZjMyYmQ2
YjNkYzAzMjIzMWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdl
ci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8t
aXRlbXMuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGVuYWJsZVVuZG9NYW5hZ2VyQVBJPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5h
YmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KICAgICA8
aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8t
bWFuYWdlci1pbnRlcmZhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdl
ci91bmRvLW1hbmFnZXItaW50ZXJmYWNlcy5odG1sCmluZGV4IDkzYjJjYTdhMGI4YWUzMzA3MTYw
MWQ1ZjkzZWNmZDllOTg2OGRjZDMuLjBiZmM3ZTBjMWVkN2EwNjQwNTYyMzZmODA5ZDk2ZDcyMGYx
YWYyNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8t
bWFuYWdlci1pbnRlcmZhY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1h
bmFnZXIvdW5kby1tYW5hZ2VyLWludGVyZmFjZXMuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZVVuZG9NYW5hZ2VyQVBJ
PXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGlu
dGVybmFsOlVuZG9NYW5hZ2VyQVBJRW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVh
ZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8t
bWFuYWdlci1pdGVtLWxhYmVscy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFn
ZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFiZWxzLmh0bWwKaW5kZXggODRhN2YxN2EyNjQ3NDAwNjgw
NmY0ZGU5NDI0OTliZDFiMjc0NGRlZC4uNWFjNjk4YjFhYmVhNWI5OTc3NGMwM2Q1NzdjNjVlMzZl
YmJmNjZlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5k
by1tYW5hZ2VyLWl0ZW0tbGFiZWxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
LW1hbmFnZXIvdW5kby1tYW5hZ2VyLWl0ZW0tbGFiZWxzLmh0bWwKQEAgLTEsNCArMSw0IEBACi08
IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFuYWdl
ckFQST10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAg
PG1ldGEgY2hhcnNldD0idXRmOCI+CiAgICAgPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXIta2VlcHMtd3JhcHBlci1hbGl2ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWtlZXBz
LXdyYXBwZXItYWxpdmUuaHRtbAppbmRleCBiY2NjZTUxODA4N2QxMjBmYTY3MDA5MDFkNjNkOTk5
YjU4NmM2YzhjLi44MDFkZDllNWRmZGEyOGM2M2I5YWU4NmE1ODYwNWIxMjI3NDI1MzMwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXIta2Vl
cHMtd3JhcHBlci1hbGl2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5h
Z2VyL3VuZG8tbWFuYWdlci1rZWVwcy13cmFwcGVyLWFsaXZlLmh0bWwKQEAgLTEsNCArMSw0IEBA
Ci08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFu
YWdlckFQST10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBpbnRlcm5hbDpVbmRvTWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAg
ICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdl
ci91bmRvLW1hbmFnZXItdW5kby1yZWRvLWFmdGVyLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLXVuZG8tcmVkby1h
ZnRlci1nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbAppbmRleCBjYWQwY2VkNGNlZTgzM2NkYTE5Y2Vl
MDNjY2ExNGI0MmE0YWE0ODIxLi5iMjUwZTdjYzgzNGYyNjY3MzM4NDgwOTJlZjRlY2M2MzJkN2Rj
MGZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1h
bmFnZXItdW5kby1yZWRvLWFmdGVyLWdhcmJhZ2UtY29sbGVjdGlvbi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci11bmRvLXJlZG8tYWZ0ZXIt
Z2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVVbmRvTWFuYWdlckFQST10cnVlIF0gLS0+
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpVbmRv
TWFuYWdlckFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAgPG1ldGEgY2hhcnNldD0i
dXRmOCI+CiAgICAgPGhlYWQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>