<?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>151576</bug_id>
          
          <creation_ts>2015-11-23 16:06:13 -0800</creation_ts>
          <short_desc>Add a WebKit SPI for registering an automation controller with RemoteInspector</short_desc>
          <delta_ts>2016-01-06 10:49:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>andersca</cc>
    
    <cc>bburg</cc>
    
    <cc>darin</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mitz</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144240</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-23 16:06:13 -0800</bug_when>
    <thetext>We may want to create a WebAutomationTarget while no web content tabs are open. But, the initial connection is currently established when creating the first WebProcessPool. Let&apos;s move the initialization earlier, independently of hooking up WebAutomationTarget itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144241</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-23 16:06:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/23651703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145597</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-02 10:03:23 -0800</bug_when>
    <thetext>Current plan is to make this registration lazy and also the point where the application delegate is installed.

 - AutomationTargetController is a delegate with two jobs: decide whether remote automation is allowed, and handle requests for new AutomationTargets.

 - The delegate is plugged in to RemoteInspector with a new SPI.

 - WebKit clients can decide when they want to install this delegate based on some policy. We don&apos;t want to do it by default, since not all WK clients want to support automation. In that case, there&apos;s no point registering with the daemon.

 - Generally, if the client supports automation and it and can be turned on or off dynamically, then the client should register immediately so the automation target is listed as enabled or disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147509</commentid>
    <comment_count>3</comment_count>
      <attachid>266948</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-08 16:01:19 -0800</bug_when>
    <thetext>Created attachment 266948
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147541</commentid>
    <comment_count>4</comment_count>
      <attachid>266955</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-08 17:02:45 -0800</bug_when>
    <thetext>Created attachment 266955
Proposed Fix (Rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147595</commentid>
    <comment_count>5</comment_count>
      <attachid>266966</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-08 21:08:11 -0800</bug_when>
    <thetext>Created attachment 266966
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147893</commentid>
    <comment_count>6</comment_count>
      <attachid>266966</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-09 12:07:27 -0800</bug_when>
    <thetext>Comment on attachment 266966
Proposed Fix (rebased)

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

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:40
&gt; +OBJC_CLASS RemoteInspectorObjCAdapter;

I think we may want to name this differently, or at least underscore prefix it. ObjC class names are global names that can collide with anyone&apos;s program that uses this public framework (JavaScriptCore.framework). ObjC frameworks avoid collisions by using name prefixes (NS, Web, WK, JS). My naive suggestion for this class would be _RemoteInspectorObjCAdapter, or JSRemoteInspectorObjCAdapter.

In fact, I&apos;m surprised you don&apos;t get a build error from the &quot;Tools/Scripts/check-for-inappropriate-objc-class-names&quot; build phase of JavaScriptCore. Maybe because this class is defined only inside of an implementation file this is okay? I&apos;m still cautious.

---

On a related note, you can drive-by remove this now stale comment because the thing it was commenting has since been removed (mid 2014).

Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp
// Use the &quot;JS&quot; prefix to make check-for-inappropriate-objc-class-names happy. I
// think this is better than hacking that script.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:47
&gt; +// RemoteInspectorObjCAdapter is a helper object used as a notification observer
&gt; +// for the sole purpose of getting back into the C++ code from an ObjC block/caller.

I feel like this comment is covered by the ObjCAdapter suffix.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:347
&gt; +    [center addObserver:m_automationAvailabilityObserver.leakRef() selector:@selector(clientCapabilitiesDidChange) name:@WIRAutomationAvailabilityChangedNotification object:nil];

Why `leakRef` and not `get`?

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:391
&gt; +    [[NSNotificationCenter defaultCenter] removeObserver:m_automationAvailabilityObserver.leakRef()];

Why `leakRef` and not `get`?

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:35
&gt; +using namespace Inspector;
&gt; +
&gt; +class RemoteInspectorClientAdapter : public RemoteInspector::Client {

I almost think this would be cleared without the using namespace, so we it is easy to know this is Inspector::RemoteInspector::Client. But maybe that is just me. Most of the time these types of classes are defined in header files where `using` statements are avoided, so normally the full qualifiers are there.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:98
&gt; +- (void)setDelegate:(id &lt;_WKAutomationControllerDelegate&gt;)delegate
&gt; +{
&gt; +    // Force the old adapter to disconnect from RemoteInspector first.
&gt; +    _clientAdapter = nil;
&gt; +
&gt; +    if (delegate) {
&gt; +        _delegate = delegate;
&gt; +        _clientAdapter = std::make_unique&lt;RemoteInspectorClientAdapter&gt;(self);
&gt; +    }
&gt; +}

If a client wants to clear their delegate via `[[_WKAutomationController sharedController] setDelegate:nil]` this code would not have cleared `delegate`.

Seems we would unconditionally want the `_delegate = delegate;` statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147917</commentid>
    <comment_count>7</comment_count>
      <attachid>266966</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-09 13:02:37 -0800</bug_when>
    <thetext>Comment on attachment 266966
Proposed Fix (rebased)

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:98
&gt;&gt; +}
&gt; 
&gt; If a client wants to clear their delegate via `[[_WKAutomationController sharedController] setDelegate:nil]` this code would not have cleared `delegate`.
&gt; 
&gt; Seems we would unconditionally want the `_delegate = delegate;` statement.

Ok. We should only install the Client if delegate is no-nil, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147918</commentid>
    <comment_count>8</comment_count>
      <attachid>267038</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-09 13:05:34 -0800</bug_when>
    <thetext>Created attachment 267038
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147921</commentid>
    <comment_count>9</comment_count>
      <attachid>267038</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-09 13:12:09 -0800</bug_when>
    <thetext>Comment on attachment 267038
Proposed Fix

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

Looks good to me after addressing these issues. Will need a WK2 Owner I believe for the new WK2 class.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:255
&gt; +void RemoteInspector::setRemoteInspectorClient(RemoteInspector::Client* client)
&gt; +{
&gt; +    ASSERT_ARG(client, client);
&gt; +    ASSERT(!m_client);

This requires that there be a client. But above we may be clearing the client in some cases by passing nullptr here.

I tend to write this assert as:

    ASSERT(!!m_client != !!client);

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:33
&gt; +class RemoteInspectorClientAdapter : public Inspector::RemoteInspector::Client {

Some large amount of this file will need #if ENABLE(REMOTE_INSPECTOR) as Inspector::RemoteInspector is not available otherwise.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:53
&gt; +RemoteInspectorClientAdapter::~RemoteInspectorClientAdapter()
&gt; +{
&gt; +    Inspector::RemoteInspector::singleton().setRemoteInspectorClient(nullptr);
&gt; +}

This would cause the assert above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147930</commentid>
    <comment_count>10</comment_count>
      <attachid>267040</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-09 13:29:00 -0800</bug_when>
    <thetext>Created attachment 267040
Proposed Fix (nits)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147975</commentid>
    <comment_count>11</comment_count>
      <attachid>267040</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-12-09 15:23:26 -0800</bug_when>
    <thetext>Comment on attachment 267040
Proposed Fix (nits)

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:39
&gt; +@property (nonatomic, assign) id &lt;_WKAutomationControllerDelegate&gt; delegate;

This should be weak.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:43
&gt; +    _WKAutomationController *m_controller;

This should use WeakObjCPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148299</commentid>
    <comment_count>12</comment_count>
      <attachid>267130</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-10 13:57:05 -0800</bug_when>
    <thetext>Created attachment 267130
Proposed Fix (more nits)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148998</commentid>
    <comment_count>13</comment_count>
      <attachid>267130</attachid>
    <who name="">mitz</who>
    <bug_when>2015-12-14 10:03:29 -0800</bug_when>
    <thetext>Comment on attachment 267130
Proposed Fix (more nits)

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:32
&gt; +@protocol _WKAutomationControllerDelegate &lt;NSObject&gt;

A protocol definition also needs availability.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:35
&gt; +- (BOOL)allowsRemoteAutomation;
&gt; +- (void)requestAutomationSession;
&gt; +@end

This protocol doesn’t follow the normal delegate pattern: (1) it has required methods and (2) the methods don’t have an argument which is the delegating object…

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:40
&gt; +@property (nonatomic, weak) id &lt;_WKAutomationControllerDelegate&gt; delegate;
&gt; ++ (_WKAutomationController *)sharedController;

…moreover, it is highly unusual to give a singleton object a  delegate.

Does the automation controller really need to be a global shared resource? We try to avoid that in the WebKit API. Can’t this be a per-WKWebView, per-WKWebViewConfiguration or per-WKProcessPool object?

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:78
&gt; +    id &lt;_WKAutomationControllerDelegate&gt; _delegate;

Since the property is declared weak, you should use a WeakObjCPtr ivar, so that clients get the expected behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149015</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-14 10:58:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 267130 [details]
&gt; Proposed Fix (more nits)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267130&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:32
&gt; &gt; +@protocol _WKAutomationControllerDelegate &lt;NSObject&gt;
&gt; 
&gt; A protocol definition also needs availability.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:35
&gt; &gt; +- (BOOL)allowsRemoteAutomation;
&gt; &gt; +- (void)requestAutomationSession;
&gt; &gt; +@end
&gt; 
&gt; This protocol doesn’t follow the normal delegate pattern: (1) it has
&gt; required methods and (2) the methods don’t have an argument which is the
&gt; delegating object…

Will fix.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.h:40
&gt; &gt; +@property (nonatomic, weak) id &lt;_WKAutomationControllerDelegate&gt; delegate;
&gt; &gt; ++ (_WKAutomationController *)sharedController;
&gt; 
&gt; …moreover, it is highly unusual to give a singleton object a  delegate.
&gt; 
&gt; Does the automation controller really need to be a global shared resource?
&gt; We try to avoid that in the WebKit API. Can’t this be a per-WKWebView,
&gt; per-WKWebViewConfiguration or per-WKProcessPool object?

It is per browser context; it&apos;s the thing that creates new windows in automation mode in response to requests over XPC (endpoint is in JavaScriptCore). It can&apos;t be per-WKWebView since there may not be any web views open yet.

I will rewrite this to be a WKProcessPool delegate. It seems the most appropriate place in the modern API.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationController.mm:78
&gt; &gt; +    id &lt;_WKAutomationControllerDelegate&gt; _delegate;
&gt; 
&gt; Since the property is declared weak, you should use a WeakObjCPtr ivar, so
&gt; that clients get the expected behavior.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149737</commentid>
    <comment_count>15</comment_count>
      <attachid>267487</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-16 13:22:21 -0800</bug_when>
    <thetext>Created attachment 267487
Proposed Fix (v2)

New patch, now it&apos;s rewritten as a WKProcessPool delegate based off _WKDownloadDelegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149743</commentid>
    <comment_count>16</comment_count>
      <attachid>267487</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-16 13:46:31 -0800</bug_when>
    <thetext>Comment on attachment 267487
Proposed Fix (v2)

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

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:389
&gt; +    [[NSNotificationCenter defaultCenter] removeObserver:m_automationAvailabilityObserver.get()];

Since all we would do with this is re-create it in start. You could release the observer: m_automationAvailabilityObserver = nil;

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:54
&gt; +
&gt;  

Nit: 1 newline instead of 2.

&gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.h:41
&gt; +class AutomationClient final : public API::AutomationClient, Inspector::RemoteInspector::Client {

Should have ENABLE(REMOTE_INSPECTOR) around this class I think, otherwise the Inspector::RemoteInspector::Client is not available. We get lucky due to the WK_API_ENABLED. Maybe in such cases we&apos;ve been dropping the known to be enabled ENABLE guards?

&gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.mm:46
&gt; +    // We don&apos;t want RemoteInspector to open an XPC connection unless it can report inspection targets,
&gt; +    // automation targets, or we receive a notification to pre-emptively register with webinspectord.
&gt; +    RemoteInspector::startDisabled();

I&apos;m not sure this makes sense. If the Application sets an AutomationClient (via an explicit API call) and allows automation then it should be available to remote debuggers regardless of whether or not it has inspection targets, right? Seems we can just remove this.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:292
&gt; +
&gt; +

Nit: 1 newline instead of 2.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:648
&gt; -    Inspector::RemoteInspector::singleton(); 
&gt; +    Inspector::RemoteInspector::singleton().start();

I think this breaks the existing auto-start behavior, so r- for this.

By default, the RemoteInspector will auto-start when created (inside RemoteInspector::singleton()) so that developers don&apos;t have to do anything to have things be debuggable. However, some processes may choose to opt-out of this auto-start behavior (for whatever reason they want but often because they just want to disable remote inspection in their process) by using the JSRemoteInspectorDisableAutoStart() SPI. The explicit call to start above will start, regardless of the auto-start setting, which would have started inside construction. I see now that you&apos;re using RemoteInspector::startDisabled above, but in a way that would break the SPI others are using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149776</commentid>
    <comment_count>17</comment_count>
      <attachid>267487</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-16 15:25:22 -0800</bug_when>
    <thetext>Comment on attachment 267487
Proposed Fix (v2)

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

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.h:41
&gt;&gt; +class AutomationClient final : public API::AutomationClient, Inspector::RemoteInspector::Client {
&gt; 
&gt; Should have ENABLE(REMOTE_INSPECTOR) around this class I think, otherwise the Inspector::RemoteInspector::Client is not available. We get lucky due to the WK_API_ENABLED. Maybe in such cases we&apos;ve been dropping the known to be enabled ENABLE guards?

OK.

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.mm:46
&gt;&gt; +    RemoteInspector::startDisabled();
&gt; 
&gt; I&apos;m not sure this makes sense. If the Application sets an AutomationClient (via an explicit API call) and allows automation then it should be available to remote debuggers regardless of whether or not it has inspection targets, right? Seems we can just remove this.

I&apos;ll remove it.

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:648
&gt;&gt; +    Inspector::RemoteInspector::singleton().start();
&gt; 
&gt; I think this breaks the existing auto-start behavior, so r- for this.
&gt; 
&gt; By default, the RemoteInspector will auto-start when created (inside RemoteInspector::singleton()) so that developers don&apos;t have to do anything to have things be debuggable. However, some processes may choose to opt-out of this auto-start behavior (for whatever reason they want but often because they just want to disable remote inspection in their process) by using the JSRemoteInspectorDisableAutoStart() SPI. The explicit call to start above will start, regardless of the auto-start setting, which would have started inside construction. I see now that you&apos;re using RemoteInspector::startDisabled above, but in a way that would break the SPI others are using.

I don&apos;t think this change is necessary, so I&apos;ll revert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149783</commentid>
    <comment_count>18</comment_count>
      <attachid>267501</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-16 15:35:22 -0800</bug_when>
    <thetext>Created attachment 267501
Proposed Fix (v2, revised)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149811</commentid>
    <comment_count>19</comment_count>
      <attachid>267501</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-16 16:37:10 -0800</bug_when>
    <thetext>Comment on attachment 267501
Proposed Fix (v2, revised)

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

Looks good to me! Needs a WK2 Owner

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:52
&gt; +@property (nonatomic, weak, setter=_setAutomationDelegate:) id&lt;_WKAutomationDelegate&gt; _automationDelegate;

Style: &quot;id&lt;&quot; =&gt; &quot;id &lt;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152371</commentid>
    <comment_count>20</comment_count>
      <attachid>267501</attachid>
    <who name="">mitz</who>
    <bug_when>2016-01-04 10:24:43 -0800</bug_when>
    <thetext>Comment on attachment 267501
Proposed Fix (v2, revised)

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

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        * inspector/remote/RemoteInspector.h:
&gt; +        * inspector/remote/RemoteInspector.mm:
&gt; +        (-[JSRemoteInspectorObjCAdapter clientCapabilitiesDidChange]):
&gt; +        (Inspector::RemoteInspector::setRemoteInspectorClient):
&gt; +        (Inspector::RemoteInspector::start):
&gt; +        (Inspector::RemoteInspector::stopInternal):
&gt; +        (Inspector::RemoteInspector::pushListingsNow):
&gt; +        * inspector/remote/RemoteInspectorConstants.h:

Missing function-level comments.

&gt; Source/WebKit2/ChangeLog:36
&gt; +        * PlatformMac.cmake:
&gt; +        * UIProcess/API/APIAutomationClient.h: Added.
&gt; +        (API::AutomationClient::~AutomationClient):
&gt; +        (API::AutomationClient::allowsRemoteAutomation):
&gt; +        (API::AutomationClient::requestAutomationSession):
&gt; +        * UIProcess/API/Cocoa/WKProcessPool.mm:
&gt; +        (-[WKProcessPool _automationDelegate]):
&gt; +        (-[WKProcessPool _setAutomationDelegate:]):
&gt; +        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
&gt; +        * UIProcess/API/Cocoa/_WKAutomationDelegate.h: Added.
&gt; +        * UIProcess/Cocoa/AutomationClient.h: Added.
&gt; +        * UIProcess/Cocoa/AutomationClient.mm: Added.
&gt; +        (WebKit::AutomationClient::AutomationClient):
&gt; +        (WebKit::AutomationClient::~AutomationClient):
&gt; +        (WebKit::AutomationClient::remoteAutomationAllowed):
&gt; +        (WebKit::AutomationClient::requestAutomationSession):
&gt; +        * UIProcess/WebProcessPool.cpp:
&gt; +        (WebKit::WebProcessPool::WebProcessPool):
&gt; +        (WebKit::WebProcessPool::setAutomationClient):
&gt; +        * UIProcess/WebProcessPool.h:
&gt; +        * WebKit2.xcodeproj/project.pbxproj:

Ditto.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:40
&gt;  OBJC_CLASS NSDictionary;
&gt;  OBJC_CLASS NSString;
&gt; +OBJC_CLASS JSRemoteInspectorObjCAdapter;

These should remain sorted.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:255
&gt; +    ASSERT_ARG(client, client);
&gt; +    ASSERT(!!m_client != !!client);

If the first assertion hold, then the second assertion is simply that m_client is null, so it should be written that way.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:346
&gt; +    m_automationAvailabilityObserver = adoptNS([JSRemoteInspectorObjCAdapter new]);
&gt; +    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
&gt; +    [center addObserver:m_automationAvailabilityObserver.get() selector:@selector(clientCapabilitiesDidChange) name:@WIRAutomationAvailabilityChangedNotification object:nil];
&gt; +

It’s unusual to have an API where the client is the sender of notifications rather than an observer, and it’s strange to implement it like this in JavaScriptCore. Is there a reason why the API for this couldn’t be a method on WKProcessPool?

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationDelegate.h:33
&gt; +- (BOOL)_allowsRemoteAutomation;
&gt; +- (void)_requestAutomationSession;

As mentioned before, delegate methods should take the delegating objects as an argument:
- (BOOL)_processPoolAllowsRemoteAutomation:(WKPorcessPool *)processPool;
and something like
- (void)_processPoolDidRequestAutomationSession:(WKPorcessPool *)processPool;

What’s the significance of “remote” in the names? One method has it and the other doesn’t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152382</commentid>
    <comment_count>21</comment_count>
      <attachid>267501</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-04 10:48:12 -0800</bug_when>
    <thetext>Comment on attachment 267501
Proposed Fix (v2, revised)

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

&gt;&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:255
&gt;&gt; +    ASSERT(!!m_client != !!client);
&gt; 
&gt; If the first assertion hold, then the second assertion is simply that m_client is null, so it should be written that way.

Oops, this used to make more sense. Will fix.

&gt;&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:346
&gt;&gt; +
&gt; 
&gt; It’s unusual to have an API where the client is the sender of notifications rather than an observer, and it’s strange to implement it like this in JavaScriptCore. Is there a reason why the API for this couldn’t be a method on WKProcessPool?

The essential design issue here is that RemoteInspector needs to eagerly report status changes (via XPC) that originate way above JSC, in WK2 or its clients. Notifications are the easiest way to jump the abstraction boundaries. This could instead be a notification-like SPI on RemoteInspector (JSRemoteInspectorAutomationAvailabilityChanged), but I don&apos;t see how it&apos;s any cleaner.

We can&apos;t move this reporting code to WKProcessPool, as RemoteInspector is used for JSContext inspection.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationDelegate.h:33
&gt;&gt; +- (void)_requestAutomationSession;
&gt; 
&gt; As mentioned before, delegate methods should take the delegating objects as an argument:
&gt; - (BOOL)_processPoolAllowsRemoteAutomation:(WKPorcessPool *)processPool;
&gt; and something like
&gt; - (void)_processPoolDidRequestAutomationSession:(WKPorcessPool *)processPool;
&gt; 
&gt; What’s the significance of “remote” in the names? One method has it and the other doesn’t.

Oops, will fix.

In the first method, &quot;Remote&quot; means that automation is being controlled by an external program over XPC, rather than locally inside UIProcess. (We want to support local and remote automation and have independent settings for each.)
The second method is called in both the local and remote cases to create a new automation window, so it doesn&apos;t mention &apos;remote&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152508</commentid>
    <comment_count>22</comment_count>
      <attachid>268231</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-04 14:10:24 -0800</bug_when>
    <thetext>Created attachment 268231
Proposed Fix v2.1

New patch adds the delegating self argument to _WKAutomationDelegate and other fixes. I didn&apos;t change the NSNotification from RemoteInspector since it&apos;s unclear that there&apos;s a better way to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152939</commentid>
    <comment_count>23</comment_count>
      <attachid>268338</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-05 16:55:54 -0800</bug_when>
    <thetext>Created attachment 268338
Proposed Fix v3

This v3 patch removes the hacky NSNotification listener from RemoteInspector in favor of a WKProcessPool SPI t to achieve the same effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152957</commentid>
    <comment_count>24</comment_count>
      <attachid>268338</attachid>
    <who name="">mitz</who>
    <bug_when>2016-01-05 18:27:17 -0800</bug_when>
    <thetext>Comment on attachment 268338
Proposed Fix v3

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:52
&gt; +@property (nonatomic, weak, setter=_setAutomationDelegate:) id &lt;_WKAutomationDelegate&gt; _automationDelegate;

Needs availability.

&gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.h:27
&gt; +#ifndef AutomationClient_h
&gt; +#define AutomationClient_h

No need for this in an Objective-C header

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1078
&gt; +#if PLATFORM(COCOA)

Why?

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:254
&gt; +#if PLATFORM(COCOA)

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153056</commentid>
    <comment_count>25</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-06 09:14:22 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Comment on attachment 268338 [details]
&gt; Proposed Fix v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268338&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:52
&gt; &gt; +@property (nonatomic, weak, setter=_setAutomationDelegate:) id &lt;_WKAutomationDelegate&gt; _automationDelegate;
&gt; 
&gt; Needs availability.

OK

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/AutomationClient.h:27
&gt; &gt; +#ifndef AutomationClient_h
&gt; &gt; +#define AutomationClient_h
&gt; 
&gt; No need for this in an Objective-C header
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1078
&gt; &gt; +#if PLATFORM(COCOA)
&gt; 
&gt; Why?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.h:254
&gt; &gt; +#if PLATFORM(COCOA)
&gt; 
&gt; Why?

Hmm, I guess it&apos;s redundant with ENABLE(REMOTE_INSPECTOR), since only Cocoa ports use RemoteInspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153093</commentid>
    <comment_count>26</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-06 10:49:35 -0800</bug_when>
    <thetext>Committed r194646: &lt;http://trac.webkit.org/changeset/194646&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266948</attachid>
            <date>2015-12-08 16:01:19 -0800</date>
            <delta_ts>2015-12-08 17:02:43 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151576-20151208160049.patch</filename>
            <type>text/plain</type>
            <size>22121</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjFkNjMyOWQ2OWRlNGIxYjcxY2EwOTM1Mzg4NWVlMWViMzJkMzliLi5mYzRjZDk4MGM1N2NmNjRj
ZmQ5YjgxMzY1NDVjNzZmYmRkYTkzZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtSZW1vdGVJbnNwZWN0b3JPYmpDQWRh
cHRlciBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKwogMjAxNS0xMi0wNyAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDUkFTSDogQ29kZUJsb2NrOjpzZXRPcHRp
bWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQgKyA1NjcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmYmRkMTcyZmYyNjk1ZTQwMjk2MzFkNzYxNmQ5ZjJiMjJjMGQzZTFmLi5mMDVlZThiZmFh
MGE2NDY5ZmFlZjNlNmJlYTk3ZTViZWExNmVmZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTUtMTItMDggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGEgV2ViS2l0IFNQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXV0b21hdGlvbiBjb250cm9sbGVy
IHdpdGggUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBpcyBhbiBhZGFwdGVyIFNQSSB0
byBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudC4gSXQgaXMKKyAgICAgICAgc2hhcmVkIGFjcm9zcyBh
biBlbnRpcmUgcHJvY2Vzcywgbm90IHNwZWNpZmljIHRvIGEgYnJvd3NlciBjb250ZXh0IG9yIHBh
Z2UuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW06IEFkZGVkLgorICAg
ICAgICAoUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50
QWRhcHRlcik6CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50QWRhcHRlcik6CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRB
ZGFwdGVyOjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCk6CisgICAgICAgIChSZW1vdGVJbnNwZWN0
b3JDbGllbnRBZGFwdGVyOjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoK1tf
V0tBdXRvbWF0aW9uQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICgtW19X
S0F1dG9tYXRpb25Db250cm9sbGVyIHNldERlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0xMS0yMCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdGVJbnNwZWN0b3Ig
c2hvdWxkIHRyYWNrIHRhcmdldHMgYW5kIGNvbm5lY3Rpb25zIGZvciByZW1vdGUgYXV0b21hdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJm
ZjBmYjZiLi5kNjYzZTZiNjI3YThiMWQ3ZThhOTQ5ZGU4NTgzYTRmNzAzM2EyNjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaApAQCAtMzcsNiArMzcsNyBAQAogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsK
IE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIFJlbW90ZUluc3BlY3Rvck9iakNBZGFw
dGVyOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNDgsNiArNDksMTMgQEAgY2xhc3Mg
UmVtb3RlSW5zcGVjdG9yQ2xpZW50OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJ
bnNwZWN0b3IgZmluYWwgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xp
ZW50IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdGVBdXRvbWF0
aW9uQWxsb3dlZCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRv
bWF0aW9uU2Vzc2lvbigpID0gMDsKKyAgICB9OworCiAgICAgc3RhdGljIHZvaWQgc3RhcnREaXNh
YmxlZCgpOwogICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNpbmdsZXRvbigpOwogICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OwpAQCAtNTgsMTAgKzY2
LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIHZvaWQgdXBkYXRlQXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kik7CisgICAgdm9p
ZCBzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqKTsKIAog
ICAgIHZvaWQgc2V0dXBGYWlsZWQodW5zaWduZWQgaWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXR1
cENvbXBsZXRlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsKICAgICBib29sIHdhaXRpbmdGb3JBdXRv
bWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkIGlkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50Q2Fw
YWJpbGl0aWVzRGlkQ2hhbmdlKCkgeyBwdXNoTGlzdGluZ3NTb29uKCk7IH0KIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIGJvb2wgaGFzQWN0aXZl
RGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0K
QEAgLTEyMyw2ICsxMzMsOSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24+IG1feHBjQ29ubmVjdGlvbjsKIAorICAgIFJlbW90ZUluc3BlY3Rvcjo6
Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8UmVtb3RlSW5zcGVj
dG9yT2JqQ0FkYXB0ZXI+IG1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyOworCiAgICAg
ZGlzcGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOwogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJs
ZUlkZW50aWZpZXIgeyAxIH07CiAgICAgaW50IG1fbm90aWZ5VG9rZW4geyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KaW5kZXggMGZkYWFlOWI2ZDg4NDFkZGFhOTBkNTc2MmQwNjJmMTRmMzgxMDQyMC4u
NmRjYWUxZjc1M2I0MzYwYjBiZGRjOGUxYTZjMjdhNjA4MzA2NDJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbQpAQCAtNTMsNiArNTMsMTkgQEAgZW51bSBzYW5kYm94X2ZpbHRlcl90eXBlIHsKIGV4dGVy
biAiQyIgaW50IHNhbmRib3hfY2hlY2socGlkX3QsIGNvbnN0IGNoYXIgKm9wZXJhdGlvbiwgZW51
bSBzYW5kYm94X2ZpbHRlcl90eXBlLCAuLi4pOwogZXh0ZXJuICJDIiBjb25zdCBlbnVtIHNhbmRi
b3hfZmlsdGVyX3R5cGUgU0FOREJPWF9DSEVDS19OT19SRVBPUlQ7CiAKKy8vIFJlbW90ZUluc3Bl
Y3Rvck9iakNBZGFwdGVyIGlzIGEgaGVscGVyIG9iamVjdCB1c2VkIGFzIGEgbm90aWZpY2F0aW9u
IG9ic2VydmVyCisvLyBmb3IgdGhlIHNvbGUgcHVycG9zZSBvZiBnZXR0aW5nIGJhY2sgaW50byB0
aGUgQysrIGNvZGUgZnJvbSBhbiBPYmpDIGJsb2NrL2NhbGxlci4KK0BpbnRlcmZhY2UgUmVtb3Rl
SW5zcGVjdG9yT2JqQ0FkYXB0ZXIgOiBOU09iamVjdAorLSAodm9pZCljbGllbnRDYXBhYmlsaXRp
ZXNEaWRDaGFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZW1vdGVJbnNwZWN0b3JPYmpD
QWRhcHRlcgorLSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UKK3sKKyAgICBJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50Q2FwYWJpbGl0aWVzRGlk
Q2hhbmdlKCk7Cit9CitAZW5kCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBzdGF0aWMgYm9v
bCBjYW5BY2Nlc3NXZWJJbnNwZWN0b3JNYWNoUG9ydCgpCkBAIC0yNDgsNiArMjYxLDE4IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQqCiAgICAgfQogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQp
Cit7CisgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVu
dCk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2Ns
aWVudCA9IGNsaWVudDsKKworICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5j
bHVkZXMgd2hldGhlciB0aGUgY2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBw
dXNoTGlzdGluZ3NTb29uKCk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQp
OwpAQCAtMzI3LDYgKzM1MiwxMCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAg
ICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CiAgICAgfSk7CiAKKyAgICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9
IGFkb3B0TlMoW1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyIG5ld10pOworICAgIE5TTm90aWZp
Y2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjptX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNl
cnZlci5sZWFrUmVmKCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNsaWVudENhcGFiaWxpdGllc0RpZENo
YW5nZSkgbmFtZTpAV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUNoYW5nZWROb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07CisKICAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hl
Y2tOb3RpZmljYXRpb24pOwogfQogCkBAIC0zNjgsNiArMzk3LDggQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKICAgICB9CiAKICAgICBub3Rp
ZnlfY2FuY2VsKG1fbm90aWZ5VG9rZW4pOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNl
cnZlci5sZWFrUmVmKCldOwogfQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25u
ZWN0aW9uSWZOZWVkZWQoKQpAQCAtNTU0LDYgKzU4NSw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpwdXNoTGlzdGluZ3NOb3coKQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBt
ZXNzYWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAg
ICBbbWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXld
OwogCisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVtb3RlQXV0
b21hdGlvbkFsbG93ZWQoKTsKKyAgICBbbWVzc2FnZSBzZXRPYmplY3Q6QChpc0FsbG93ZWQpIGZv
cktleTpXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleV07CisKICAgICBtX3hwY0Nvbm5lY3Rp
b24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCBlZjlhMzY0OTQ4YjVlNTZjMTU1
NTEwN2NhNWQwN2NmNGMxZjVmZWJiLi5jN2E0ODQ0MWRkYTk3M2NmNTEzNThlMzBjOTQzOTIzNGYx
NzdhMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMzAsMTUgKzMw
LDE1IEBACiAvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgT1MgWCBzaWRlLCB3
ZWJpbnNwZWN0b3JkLCBhbmQKIC8vIGlPUyBXZWJLaXQgb24gdGhlIGRldmljZSBzaWRlLgogCi0j
ZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAgICAgICAgICAgICAyNzc1MwotI2Rl
ZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3IiCi0jZGVmaW5lIFdJUlhQQ0RlYnVnZ2VyU2VydmljZU5hbWUgICAgICAgICAg
ICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rvci5kZWJ1Z2dlciIKLSNkZWZpbmUgV0lSU2Vydmlj
ZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5h
dmFpbGFibGUiCi0jZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlv
biAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmlsaXR5X2NoZWNrIgotI2RlZmluZSBX
SVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3JkLmVuYWJsZWQiCi0jZGVmaW5lIFdJUlNlcnZpY2VEaXNhYmxlZE5vdGlmaWNhdGlvbiAg
ICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZGlzYWJsZWQiCi0jZGVmaW5lIFdJUkF1
dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rv
cmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIKLQorI2RlZmluZSBXSVJTaW11bGF0b3JU
Q1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFj
aFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVj
dG9yIgorI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZpY2VOYW1lICAgICAgICAgICAgICAgICAg
ICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdnZXIiCisjZGVmaW5lIFdJUlNlcnZpY2VB
dmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rv
cmQuYXZhaWxhYmxlIgorI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmlj
YXRpb24gICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVjayIK
KyNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgorI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJs
ZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRp
c2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAgICAg
ICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJs
ZWQiCisjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9u
ICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGlvbl9hdmFpbGFiaWxpdHlfY2hhbmdl
ZCIKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAgICAgQCJX
SVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSIK
QEAgLTY3LDYgKzY3LDcgQEAKICNkZWZpbmUgV0lSUmF3RGF0YUtleSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKICNkZWZpbmUgV0lSTGlzdGluZ01lc3NhZ2UgICAg
ICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3NhZ2UiCiAjZGVmaW5lIFdJUkxpc3Rp
bmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUkxpc3RpbmdLZXkiCisjZGVmaW5l
IFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5ICAgICAgICAgICBAIldJUlJlbW90ZUF1dG9t
YXRpb25FbmFibGVkS2V5IgogI2RlZmluZSBXSVJEZXN0aW5hdGlvbktleSAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKICNkZWZpbmUgV0lSQ29ubmVjdGlvbkRpZWRN
ZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlIgogI2RlZmlu
ZSBXSVJUeXBlS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlS2V5Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxNWRkMDY2MGE0ZjQ1Y2QzNmZiODJhMGQzNTZj
YzEzNWYxMWJiZmJhLi5lMzgwOGU5YThhNzFmOTM4ZmNmNjgxODA4Y2UyNWQxZjMxNjhhNGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTcyLDYgKzE3Miw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dpbmRvd0ZlYXR1cmVzLm1tCiAgICAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQorICAgIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0KICAgICBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KICAgICBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50
QWN0aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dG9tYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJhMDYxNzgzZDJk
NTIzZTM2OTVjYWI0ZmQyYzBkNmQzODAwZWRkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVj
dD4KKy0gKEJPT0wpYWxsb3dzUmVtb3RlQXV0b21hdGlvbjsKKy0gKHZvaWQpcmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uOworQGVuZAorCitXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tf
SU9TX1RCQSkKK0BpbnRlcmZhY2UgX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdAor
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPF9XS0F1dG9tYXRpb25Db250cm9sbGVy
RGVsZWdhdGU+IGRlbGVnYXRlOworKyAoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKilzaGFyZWRD
b250cm9sbGVyOworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjllMDU2MjM2NGQzYjdhNzIwMTkxMTcxZDI4NTE3NzE4YWFkMjg1ZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRp
b25Db250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oIgorCisjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckNs
aWVudEFkYXB0ZXIgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgeworcHVibGljOgor
ICAgIFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIg
Kik7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcigpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oKSBvdmVycmlkZTsKKworcHJp
dmF0ZToKKyAgICBfV0tBdXRvbWF0aW9uQ29udHJvbGxlciAqbV9jb250cm9sbGVyOworfTsKKwor
UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRl
cihfV0tBdXRvbWF0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcikKKyAgICA6IG1fY29udHJvbGxl
cihjb250cm9sbGVyKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVt
b3RlSW5zcGVjdG9yQ2xpZW50KHRoaXMpOworfQorCitSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFw
dGVyOjp+UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcigpCit7CisgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaW5nbGV0b24oKS5zZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQobnVsbHB0cik7Cit9CisK
K2Jvb2wgUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVtb3RlQXV0b21hdGlvbkFsbG93
ZWQoKSBjb25zdAoreworICAgIGlmIChbbV9jb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAg
cmV0dXJuIFtbbV9jb250cm9sbGVyIGRlbGVnYXRlXSBhbGxvd3NSZW1vdGVBdXRvbWF0aW9uXTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFw
dGVyOjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oKQoreworICAgIGlmICghcmVtb3RlQXV0b21h
dGlvbkFsbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFttX2NvbnRyb2xsZXIg
ZGVsZWdhdGVdKQorICAgICAgICBbW21fY29udHJvbGxlciBkZWxlZ2F0ZV0gcmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uXTsKK30KKworQGltcGxlbWVudGF0aW9uIF9XS0F1dG9tYXRpb25Db250cm9s
bGVyIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcj4g
X2NsaWVudEFkYXB0ZXI7Cit9CisKKysgKF9XS0F1dG9tYXRpb25Db250cm9sbGVyICopc2hhcmVk
Q29udHJvbGxlcgoreworICAgIHN0YXRpYyBfV0tBdXRvbWF0aW9uQ29udHJvbGxlciAqY29udHJv
bGxlcjsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGNvbnRyb2xsZXIgPSBbW19XS0F1dG9tYXRp
b25Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKKyAgICB9KTsKKworICAgIHJldHVybiBjb250cm9s
bGVyOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICAvLyBGb3JjZSB0aGUgb2xkIGFkYXB0ZXIgdG8g
ZGlzY29ubmVjdCBmcm9tIFJlbW90ZUluc3BlY3RvciBmaXJzdC4KKyAgICBfY2xpZW50QWRhcHRl
ciA9IG5pbDsKKworICAgIGlmIChkZWxlZ2F0ZSkgeworICAgICAgICBfZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgX2NsaWVudEFkYXB0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUlu
c3BlY3RvckNsaWVudEFkYXB0ZXI+KHNlbGYpOworICAgIH0KK30KKworQGVuZAorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1YmExOTZjNzAzYzU4ZjE0YTVmNDJhNzBiM2E2NzhmOGRl
M2U1OGRmLi43NjkyYTdiZjVkZjUwOWY3NGNjMzUwZmVmM2MyNzJkMGFkMDdjZmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjQwLDYgKzEyNDAsOCBAQAogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVz
dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUQ2QTExQjFCRUFEM0I1
MDBFMjVDMzcgLyogV2ViQXV0b21hdGlvblRhcmdldC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RDZBMTE4MUJFQUQzODcwMEUyNUMzNyAvKiBXZWJB
dXRvbWF0aW9uVGFyZ2V0Lm1tICovOyB9OwogCQk5OUQ2QTExQzFCRUFENDhBMDBFMjVDMzcgLyog
V2ViQXV0b21hdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlENkExMTcxQkVBRDM4NzAwRTI1QzM3IC8qIFdlYkF1dG9tYXRpb25UYXJn
ZXQuaCAqLzsgfTsKKwkJOTlFNzE0QzQxQzEyNDlGRjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlFNzE0QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1t
ICovOyB9OworCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlGNTRGODhGMTY0
ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tICovOyB9OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1
Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01h
bmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0g
Ki87IH07CkBAIC0zNDY3LDYgKzM0NjksOCBAQAogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RDZBMTE3
MUJFQUQzODcwMEUyNUMzNyAvKiBXZWJBdXRvbWF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlENkExMTgxQkVBRDM4NzAwRTI1QzM3IC8qIFdlYkF1dG9tYXRpb25U
YXJnZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRv
bWF0aW9uVGFyZ2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU3MTRDMDFD
MTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8q
IF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4dFBy
aXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNDYsNiArNTM1MCw4IEBACiAJCQkJMzdBNUUwMTIxOEJC
RjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUw
MTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJ
CTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVy
bmFsLmggKi8sCisJCQkJOTlFNzE0QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tICovLAorCQkJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRv
bWF0aW9uQ29udHJvbGxlci5oICovLAogCQkJCTFBNTcwNEY2MUJFMDFGRjQwMDg3NEFGMSAvKiBf
V0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMUE1NzA0RjUxQkUwMUZGNDAwODc0
QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJODM4OTFCNjgxQTY4
QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKQEAgLTc4
NDksNiArNzg1NSw3IEBACiAJCQkJRTQxM0Y1OUQxQUMxQURDNDAwMzQ1MzYwIC8qIE5ldHdvcmtD
YWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAg
LyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRTA2MTAx
QUE3NTIzQjAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDRTFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29y
a0NhY2hlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzFFRUJCRDFCRDg1QzQzMDBCQjY0QzMg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJB
RTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA3Nyw2ICsxMDA4NCw3IEBACiAJCQkJQkNGRDU0OEIx
MzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQw
NzVGQjEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNThCNkYwOTE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gaW4gU291
cmNlcyAqLywKKwkJCQk5OUU3MTRDNDFDMTI0OUZGMDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTQyNTZCNjE4QkVDMThDMDBERTQxNzkg
LyogV0tGb3JtSW5wdXRDb250cm9sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjkxOEJF
QzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTcx
OTNCRTE4QzE0QTQ0MDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5tbSBpbiBTb3VyY2Vz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266955</attachid>
            <date>2015-12-08 17:02:45 -0800</date>
            <delta_ts>2015-12-08 21:08:08 -0800</delta_ts>
            <desc>Proposed Fix (Rebased)</desc>
            <filename>bug-151576-20151208170215.patch</filename>
            <type>text/plain</type>
            <size>21986</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MDU0MjhhNzVkMzUxYmNhODEzM2I0ZGU4MzA2MjViNjU5ZGU0NjAyLi43NzQ1YjhmZDEyMzIyOGYz
ZWYwNDhiZGU2NDc3ZDE0Yjg1ZTMzOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtSZW1vdGVJbnNwZWN0b3JPYmpDQWRh
cHRlciBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKwogMjAxNS0xMi0wOCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9yaW5nIG91dCBjb21tb24gREZHIGNvZGUg
Zm9yIGJpdHdpc2UgYW5kIHNoaWZ0IG9wZXJhdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwYzNlYjlhYjg2
NzZlNmIxZDBhODdmZDI1NjQwMWY5MmIwNTU3ZjA2Li5jNDcxMzk4ZjJjZTU2NjQyYjQ5M2UxYTMz
MzE5ZTM1OGVkMTQxOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMTItMDgg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2ViS2l0IFNQ
SSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXV0b21hdGlvbiBjb250cm9sbGVyIHdpdGggUmVtb3RlSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBf
V0tBdXRvbWF0aW9uQ29udHJvbGxlciBpcyBhbiBhZGFwdGVyIFNQSSB0byBSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudC4gSXQgaXMKKyAgICAgICAgc2hhcmVkIGFjcm9zcyBhbiBlbnRpcmUgcHJvY2Vz
cywgbm90IHNwZWNpZmljIHRvIGEgYnJvd3NlciBjb250ZXh0IG9yIHBhZ2UuCisKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dG9tYXRpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAgICAoUmVtb3RlSW5z
cGVjdG9yQ2xpZW50QWRhcHRlcjo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcik6CisgICAg
ICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3RlSW5zcGVjdG9yQ2xpZW50
QWRhcHRlcik6CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZW1vdGVB
dXRvbWF0aW9uQWxsb3dlZCk6CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVy
OjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoK1tfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciBzaGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICgtW19XS0F1dG9tYXRpb25Db250
cm9sbGVyIHNldERlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNS0xMS0yMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdGVJbnNwZWN0b3Igc2hvdWxkIHRyYWNrIHRh
cmdldHMgYW5kIGNvbm5lY3Rpb25zIGZvciByZW1vdGUgYXV0b21hdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBmYjZiLi5kNjYzZTZi
NjI3YThiMWQ3ZThhOTQ5ZGU4NTgzYTRmNzAzM2EyNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAt
MzcsNiArMzcsNyBAQAogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNT
dHJpbmc7CitPQkpDX0NMQVNTIFJlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyOwogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIApAQCAtNDgsNiArNDksMTMgQEAgY2xhc3MgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwg
OiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNv
bnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigp
ID0gMDsKKyAgICB9OworCiAgICAgc3RhdGljIHZvaWQgc3RhcnREaXNhYmxlZCgpOwogICAgIHN0
YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNpbmdsZXRvbigpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OwpAQCAtNTgsMTAgKzY2LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIHZvaWQgdXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kik7CisgICAgdm9pZCBzZXRSZW1vdGVJbnNw
ZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0dXBG
YWlsZWQodW5zaWduZWQgaWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXR1cENvbXBsZXRlZCh1bnNp
Z25lZCBpZGVudGlmaWVyKTsKICAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9u
KHVuc2lnbmVkIGlkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hh
bmdlKCkgeyBwdXNoTGlzdGluZ3NTb29uKCk7IH0KIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0KQEAgLTEyMyw2ICsxMzMs
OSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+
IG1feHBjQ29ubmVjdGlvbjsKIAorICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVu
dCB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8UmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXI+
IG1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyOworCiAgICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3hwY1F1ZXVlOwogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIgeyAx
IH07CiAgICAgaW50IG1fbm90aWZ5VG9rZW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KaW5kZXgg
N2Y2MjA4MzNiNjhhY2ZjOGQ2OWNmMjkzOWExMTdjMWM3NmM0YWJlMS4uZmFiYzAyMmNjMDQ2MWFi
YWNmYmNhZDVhZmVhYTkzMWViZDhkODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtNDMsNiAr
NDMsMTkgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKKy8vIFJlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyIGlzIGEg
aGVscGVyIG9iamVjdCB1c2VkIGFzIGEgbm90aWZpY2F0aW9uIG9ic2VydmVyCisvLyBmb3IgdGhl
IHNvbGUgcHVycG9zZSBvZiBnZXR0aW5nIGJhY2sgaW50byB0aGUgQysrIGNvZGUgZnJvbSBhbiBP
YmpDIGJsb2NrL2NhbGxlci4KK0BpbnRlcmZhY2UgUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIg
OiBOU09iamVjdAorLSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2U7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBSZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlcgorLSAodm9pZCljbGll
bnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UKK3sKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2luZ2xldG9uKCkuY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7Cit9CitAZW5kCisK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NXZWJJbnNwZWN0
b3JNYWNoUG9ydCgpCkBAIC0yMzgsNiArMjUxLDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1
cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQq
CiAgICAgfQogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUX0FSRyhj
bGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisKKyAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKworICAg
IC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMgd2hldGhlciB0aGUgY2xp
ZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9
CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzE3LDYgKzM0MiwxMCBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgfSk7CiAKKyAg
ICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9IGFkb3B0TlMoW1JlbW90ZUluc3Bl
Y3Rvck9iakNBZGFwdGVyIG5ld10pOworICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIg
PSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CisgICAgW2NlbnRlciBhZGRP
YnNlcnZlcjptX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlci5sZWFrUmVmKCkgc2VsZWN0
b3I6QHNlbGVjdG9yKGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSkgbmFtZTpAV0lSQXV0b21h
dGlvbkF2YWlsYWJpbGl0eUNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKICAgICBu
b3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOwogfQog
CkBAIC0zNTgsNiArMzg3LDggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChT
dG9wU291cmNlIHNvdXJjZSkKICAgICB9CiAKICAgICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9r
ZW4pOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjptX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlci5sZWFrUmVmKCldOwogfQog
CiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQpAQCAt
NTQ0LDYgKzU3NSw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQog
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6
bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0FsbG93
ZWQgPSBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsKKyAg
ICBbbWVzc2FnZSBzZXRPYmplY3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRvbWF0
aW9uRW5hYmxlZEtleV07CisKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxp
c3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaAppbmRleCBlZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJi
Li5jN2E0ODQ0MWRkYTk3M2NmNTEzNThlMzBjOTQzOTIzNGYxNzdhMjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25z
dGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMzAsMTUgKzMwLDE1IEBACiAvLyB0aGUgV2ViSW5z
cGVjdG9yIGZyYW1ld29yayBvbiB0aGUgT1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQKIC8v
IGlPUyBXZWJLaXQgb24gdGhlIGRldmljZSBzaWRlLgogCi0jZGVmaW5lIFdJUlNpbXVsYXRvclRD
UFBvcnROdW1iZXIgICAgICAgICAgICAgICAyNzc1MwotI2RlZmluZSBXSVJYUENNYWNoUG9ydE5h
bWUgICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCi0jZGVmaW5l
IFdJUlhQQ0RlYnVnZ2VyU2VydmljZU5hbWUgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmlu
c3BlY3Rvci5kZWJ1Z2dlciIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlv
biAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCi0jZGVmaW5lIFdJ
UlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvcmQuYXZhaWxhYmlsaXR5X2NoZWNrIgotI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlm
aWNhdGlvbiAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCi0jZGVm
aW5lIFdJUlNlcnZpY2VEaXNhYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxlLndl
Ymluc3BlY3RvcmQuZGlzYWJsZWQiCi0jZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFi
bGVkU3RhdGUgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3BlY3Rp
b25fZW5hYmxlZCIKLQorI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAg
ICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJYUENE
ZWJ1Z2dlclNlcnZpY2VOYW1lICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3IuZGVidWdnZXIiCisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24g
ICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgorI2RlZmlu
ZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gICAgICAgImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2VydmljZUVu
YWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9y
ZC5lbmFibGVkIgorI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAg
ICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBXSVJB
dXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJp
bnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCisjZGVmaW5lIFdJUkF1dG9t
YXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uICAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvcmQuYXV0b21hdGlvbl9hdmFpbGFiaWxpdHlfY2hhbmdlZCIKIAogI2RlZmluZSBXSVJBcHBs
aWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZp
ZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSAgICAgICBA
IldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSIKQEAgLTY3LDYgKzY3LDcgQEAKICNk
ZWZpbmUgV0lSUmF3RGF0YUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0
YUtleSIKICNkZWZpbmUgV0lSTGlzdGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAi
V0lSTGlzdGluZ01lc3NhZ2UiCiAjZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUkxpc3RpbmdLZXkiCisjZGVmaW5lIFdJUlJlbW90ZUF1dG9tYXRpb25F
bmFibGVkS2V5ICAgICAgICAgICBAIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IgogI2Rl
ZmluZSBXSVJEZXN0aW5hdGlvbktleSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5h
dGlvbktleSIKICNkZWZpbmUgV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAg
IEAiV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlIgogI2RlZmluZSBXSVJUeXBlS2V5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCAxNWRkMDY2MGE0ZjQ1Y2QzNmZiODJhMGQzNTZjYzEzNWYxMWJiZmJhLi5lMzgwOGU5
YThhNzFmOTM4ZmNmNjgxODA4Y2UyNWQxZjMxNjhhNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMTcyLDYgKzE3Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCiAgICAgVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dpbmRvd0ZlYXR1cmVzLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQorICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
b21hdGlvbkNvbnRyb2xsZXIubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRN
ZW51RWxlbWVudEluZm8ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1t
CiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJhMDYxNzgzZDJkNTIzZTM2OTVjYWI0ZmQyYzBkNmQz
ODAwZWRkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBfV0tB
dXRvbWF0aW9uQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKEJPT0wpYWxsb3dzUmVt
b3RlQXV0b21hdGlvbjsKKy0gKHZvaWQpcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOworQGVuZAor
CitXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKK0BpbnRlcmZhY2Ug
X1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgaWQgPF9XS0F1dG9tYXRpb25Db250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwor
KyAoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKilzaGFyZWRDb250cm9sbGVyOworQGVuZAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0b21hdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMDU2MjM2NGQzYjdh
NzIwMTkxMTcxZDI4NTE3NzE4YWFkMjg1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJf
V0tBdXRvbWF0aW9uQ29udHJvbGxlci5oIgorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1v
dGVJbnNwZWN0b3IuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIgOiBwdWJsaWMg
UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckNs
aWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKik7CisgICAgdmlydHVhbCB+UmVt
b3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcigpOworICAgIHZpcnR1YWwgYm9vbCByZW1vdGVBdXRv
bWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
QXV0b21hdGlvblNlc3Npb24oKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBfV0tBdXRvbWF0
aW9uQ29udHJvbGxlciAqbV9jb250cm9sbGVyOworfTsKKworUmVtb3RlSW5zcGVjdG9yQ2xpZW50
QWRhcHRlcjo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcihfV0tBdXRvbWF0aW9uQ29udHJv
bGxlciAqY29udHJvbGxlcikKKyAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQoreworICAg
IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KHRo
aXMpOworfQorCitSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3RlSW5zcGVjdG9y
Q2xpZW50QWRhcHRlcigpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRS
ZW1vdGVJbnNwZWN0b3JDbGllbnQobnVsbHB0cik7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50QWRhcHRlcjo6cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIGlm
IChbbV9jb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0dXJuIFtbbV9jb250cm9sbGVy
IGRlbGVnYXRlXSBhbGxvd3NSZW1vdGVBdXRvbWF0aW9uXTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZXF1ZXN0QXV0b21hdGlv
blNlc3Npb24oKQoreworICAgIGlmICghcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKFttX2NvbnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICBb
W21fY29udHJvbGxlciBkZWxlZ2F0ZV0gcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uXTsKK30KKwor
QGltcGxlbWVudGF0aW9uIF9XS0F1dG9tYXRpb25Db250cm9sbGVyIHsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcj4gX2NsaWVudEFkYXB0ZXI7Cit9CisK
KysgKF9XS0F1dG9tYXRpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcgoreworICAgIHN0
YXRpYyBfV0tBdXRvbWF0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcjsKKyAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
CisgICAgICAgIGNvbnRyb2xsZXIgPSBbW19XS0F1dG9tYXRpb25Db250cm9sbGVyIGFsbG9jXSBp
bml0XTsKKyAgICB9KTsKKworICAgIHJldHVybiBjb250cm9sbGVyOworfQorCistICh2b2lkKXNl
dERlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUK
K3sKKyAgICAvLyBGb3JjZSB0aGUgb2xkIGFkYXB0ZXIgdG8gZGlzY29ubmVjdCBmcm9tIFJlbW90
ZUluc3BlY3RvciBmaXJzdC4KKyAgICBfY2xpZW50QWRhcHRlciA9IG5pbDsKKworICAgIGlmIChk
ZWxlZ2F0ZSkgeworICAgICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgX2NsaWVu
dEFkYXB0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI+
KHNlbGYpOworICAgIH0KK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1YmExOTZjNzAzYzU4ZjE0YTVmNDJhNzBiM2E2NzhmOGRlM2U1OGRmLi43NjkyYTdiZjVkZjUw
OWY3NGNjMzUwZmVmM2MyNzJkMGFkMDdjZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQwLDYgKzEyNDAsOCBAQAogCQk5
M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OUQ2QTExQjFCRUFEM0I1MDBFMjVDMzcgLyogV2ViQXV0b21h
dGlvblRhcmdldC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5RDZBMTE4MUJFQUQzODcwMEUyNUMzNyAvKiBXZWJBdXRvbWF0aW9uVGFyZ2V0Lm1tICov
OyB9OwogCQk5OUQ2QTExQzFCRUFENDhBMDBFMjVDMzcgLyogV2ViQXV0b21hdGlvblRhcmdldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlENkExMTcx
QkVBRDM4NzAwRTI1QzM3IC8qIFdlYkF1dG9tYXRpb25UYXJnZXQuaCAqLzsgfTsKKwkJOTlFNzE0
QzQxQzEyNDlGRjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNzE0QzAxQzEyNDlFNjAw
NjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tICovOyB9OworCQk5OUU3MTRDNTFD
MTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIz
QSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9
OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CiAJ
CTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi87IH07CkBAIC0zNDY3LDYgKzM0
NjksOCBAQAogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RDZBMTE3MUJFQUQzODcwMEUyNUMzNyAvKiBX
ZWJBdXRvbWF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dG9tYXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlENkEx
MTgxQkVBRDM4NzAwRTI1QzM3IC8qIFdlYkF1dG9tYXRpb25UYXJnZXQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uVGFyZ2V0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU3MTRDMDFDMTI0OUU2MDA2NjVCM0EgLyogX1dL
QXV0b21hdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25Db250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhFMTY0ODhFODcw
MDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nl
c3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MjE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMubW07IHBhdGggPSBt
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUzNDYsNiArNTM1MCw4IEBACiAJCQkJMzdBNUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8q
IF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4
OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCisJCQkJOTlFNzE0
QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tICovLAorCQkJ
CTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oICov
LAogCQkJCTFBNTcwNEY2MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvLmggKi8sCiAJCQkJMUE1NzA0RjUxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51
RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJODM4OTFCNjgxQTY4QkVCQzAwMzBGMzg2IC8qIF9XS0Rp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKQEAgLTc4NDksNiArNzg1NSw3IEBACiAJCQkJ
RTQxM0Y1OUQxQUMxQURDNDAwMzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRTA2MTAxQUE3NTIzQjAwQjExNjk5IC8qIE5l
dHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlFNzE0QzUxQzEyNEEw
NDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQzNkVDRTFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzFFRUJCRDFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDA3Nyw2ICsxMDA4NCw3IEBACiAJCQkJQkNGRDU0OEIxMzJEODI2ODAwNTVEODE2IC8qIFdL
RXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGQjEyNEZGMDI3MDA2OEYyMEEg
LyogV0tFcnJvclJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNThCNkYwOTE4RkNBNzMzMDA4
Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OUU3MTRD
NDFDMTI0OUZGMDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDNTQyNTZCNjE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9s
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjkxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9y
bVBvcG92ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTcxOTNCRTE4QzE0QTQ0MDAyRDBGMTIg
LyogV0tGb3JtU2VsZWN0Q29udHJvbC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266966</attachid>
            <date>2015-12-08 21:08:11 -0800</date>
            <delta_ts>2015-12-09 13:05:31 -0800</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-151576-20151208210741.patch</filename>
            <type>text/plain</type>
            <size>22083</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NGUzZjI3OTkyZjM0MzdiMDU3NGU5NTBmODQ0MWE1NzFjZDI0M2QxLi5lY2Q2ZDVhMDUxOWVkNjVl
YTc0MzljYTk4ZGE3MGY5MDE3OWNjN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtSZW1vdGVJbnNwZWN0b3JPYmpDQWRh
cHRlciBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKwogMjAxNS0xMi0wOCAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXByb3ZlIGhvdyBCMyBs
b3dlcnMgQWRkKCkgYW5kIFN1YigpIG9uIHg4NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE5YTE2YWUzZTQzNjNi
MmEwMmY3NWUwNGZkNDgzOWFiNDNmZGU2NzYuLjcxNzU4NmU1NmZiMTAyZGYxY2JlNjc1Mjg4OWZh
YThhYTFkNjQwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNS0xMi0wOCAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZv
ciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNvbnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIF9XS0F1
dG9tYXRpb25Db250cm9sbGVyIGlzIGFuIGFkYXB0ZXIgU1BJIHRvIFJlbW90ZUluc3BlY3Rvcjo6
Q2xpZW50LiBJdCBpcworICAgICAgICBzaGFyZWQgYWNyb3NzIGFuIGVudGlyZSBwcm9jZXNzLCBu
b3Qgc3BlY2lmaWMgdG8gYSBicm93c2VyIGNvbnRleHQgb3IgcGFnZS4KKworICAgICAgICAqIFBs
YXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvbkNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChSZW1vdGVJbnNwZWN0
b3JDbGllbnRBZGFwdGVyOjpSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyKToKKyAgICAgICAg
KFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6On5SZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFw
dGVyKToKKyAgICAgICAgKFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OnJlbW90ZUF1dG9t
YXRpb25BbGxvd2VkKToKKyAgICAgICAgKFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OnJl
cXVlc3RBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICgrW19XS0F1dG9tYXRpb25Db250cm9s
bGVyIHNoYXJlZENvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIgc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDE1LTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBpbXBsZW1lbnRpbmcgZG93bmxv
YWRzIHdpdGggTmV0d29ya1Nlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggMDI2Y2QzYmI3ZTg1
ODBlZGU0YTk0Nzg4MzI3NTY5YWEyZmYwZmI2Yi4uZDY2M2U2YjYyN2E4YjFkN2U4YTk0OWRlODU4
M2E0ZjcwMzNhMjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogT0JK
Q19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBS
ZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlcjsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAg
LTQ4LDYgKzQ5LDEzIEBAIGNsYXNzIFJlbW90ZUluc3BlY3RvckNsaWVudDsKIAogY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFsIDogcHVibGljIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oKSA9IDA7CisgICAgfTsKKwogICAg
IHN0YXRpYyB2b2lkIHN0YXJ0RGlzYWJsZWQoKTsKICAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9y
JiBzaW5nbGV0b24oKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5z
cGVjdG9yPjsKQEAgLTU4LDEwICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvUmVtb3RlKHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAK
ICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVj
dGlvblRhcmdldCopOworICAgIHZvaWQgc2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50Kik7CiAKICAgICB2b2lkIHNldHVwRmFpbGVkKHVuc2lnbmVkIGlkZW50
aWZpZXIpOwogICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQodW5zaWduZWQgaWRlbnRpZmllcik7CiAg
ICAgYm9vbCB3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbih1bnNpZ25lZCBpZGVudGlmaWVy
KTsKKyAgICB2b2lkIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpIHsgcHVzaExpc3Rpbmdz
U29vbigpOyB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7
IH0KICAgICBib29sIGhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFz
QWN0aXZlRGVidWdTZXNzaW9uOyB9CkBAIC0xMjMsNiArMTMzLDkgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3hwY0Nvbm5lY3Rpb247CiAK
KyAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisgICAg
UmV0YWluUHRyPFJlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyPiBtX2F1dG9tYXRpb25BdmFpbGFi
aWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAgICB1
bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAgIGludCBtX25vdGlm
eVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhkNjlj
ZjI5MzlhMTE3YzFjNzZjNGFiZTEuLmZhYmMwMjJjYzA0NjFhYmFjZmJjYWQ1YWZlYWE5MzFlYmQ4
ZDgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTQzLDYgKzQzLDE5IEBACiAjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisvLyBSZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlciBpcyBhIGhlbHBlciBvYmplY3QgdXNlZCBh
cyBhIG5vdGlmaWNhdGlvbiBvYnNlcnZlcgorLy8gZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgZ2V0
dGluZyBiYWNrIGludG8gdGhlIEMrKyBjb2RlIGZyb20gYW4gT2JqQyBibG9jay9jYWxsZXIuCitA
aW50ZXJmYWNlIFJlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyIDogTlNPYmplY3QKKy0gKHZvaWQp
Y2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVt
b3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIKKy0gKHZvaWQpY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hh
bmdlCit7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLmNsaWVu
dENhcGFiaWxpdGllc0RpZENoYW5nZSgpOworfQorQGVuZAorCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogc3RhdGljIGJvb2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQpAQCAtMjM4
LDYgKzI1MSwxOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVj
dGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIH0KIH0KIAordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOworICAg
IEFTU0VSVCghbV9jbGllbnQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9t
dXRleCk7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisKKyAgICAvLyBTZW5kIGFuIHVwZGF0ZWQg
bGlzdGluZyB0aGF0IGluY2x1ZGVzIHdoZXRoZXIgdGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1
dG9tYXRpb24uCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCiB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKIHsKICAgICBB
U1NFUlQobV9lbmFibGVkKTsKQEAgLTMxNyw2ICszNDIsMTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KCkKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cFhQ
Q0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIH0pOwogCisgICAgbV9hdXRvbWF0aW9uQXZhaWxh
YmlsaXR5T2JzZXJ2ZXIgPSBhZG9wdE5TKFtSZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlciBuZXdd
KTsKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6bV9hdXRvbWF0aW9u
QXZhaWxhYmlsaXR5T2JzZXJ2ZXIubGVha1JlZigpIHNlbGVjdG9yOkBzZWxlY3RvcihjbGllbnRD
YXBhYmlsaXRpZXNEaWRDaGFuZ2UpIG5hbWU6QFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFu
Z2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCiAgICAgbm90aWZ5X3Bvc3QoV0lSU2Vydmlj
ZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKIH0KIApAQCAtMzU4LDYgKzM4Nyw4IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAg
ICAgfQogCiAgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2VuKTsKKworICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hdXRvbWF0aW9u
QXZhaWxhYmlsaXR5T2JzZXJ2ZXIubGVha1JlZigpXTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKQEAgLTU0NCw2ICs1NzUsOSBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzTm93KCkKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gbWVzc2FnZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CiAgICAgW21lc3NhZ2Ugc2V0T2JqZWN0Omxpc3RpbmdzLmdldCgpIGZvcktl
eTpXSVJMaXN0aW5nS2V5XTsKIAorICAgIEJPT0wgaXNBbGxvd2VkID0gbV9jbGllbnQgJiYgbV9j
bGllbnQtPnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCk7CisgICAgW21lc3NhZ2Ugc2V0T2JqZWN0
OkAoaXNBbGxvd2VkKSBmb3JLZXk6V0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRLZXldOworCiAg
ICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJMaXN0aW5nTWVzc2FnZSwgbWVzc2Fn
ZS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKaW5kZXggZWY5
YTM2NDk0OGI1ZTU2YzE1NTUxMDdjYTVkMDdjZjRjMWY1ZmViYi4uYzdhNDg0NDFkZGE5NzNjZjUx
MzU4ZTMwYzk0MzkyMzRmMTc3YTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmgKQEAgLTMwLDE1ICszMCwxNSBAQAogLy8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24g
dGhlIE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCiAvLyBpT1MgV2ViS2l0IG9uIHRoZSBk
ZXZpY2Ugc2lkZS4KIAotI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAg
ICAgICAgMjc3NTMKLSNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAg
ICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgotI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZp
Y2VOYW1lICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdnZXIiCi0j
ZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAiY29tLmFwcGxl
LndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgotI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5
Q2hlY2tOb3RpZmljYXRpb24gImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9j
aGVjayIKLSNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgotI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJs
ZWROb3RpZmljYXRpb24gICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVk
IgotI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAgICAgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCi0KKyNkZWZp
bmUgV0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgICAgICAgIDI3NzUzCisj
ZGVmaW5lIFdJUlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29t
LmFwcGxlLndlYmluc3BlY3RvciIKKyNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAg
ICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgorI2Rl
ZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgICAgICAgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJsZSIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJp
bGl0eUNoZWNrTm90aWZpY2F0aW9uICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFp
bGFiaWxpdHlfY2hlY2siCisjZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAg
ICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZW5hYmxlZCIKKyNkZWZpbmUg
V0lSU2VydmljZURpc2FibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKKyNkZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkVu
YWJsZWRTdGF0ZSAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdXRvbWF0aWNf
aW5zcGVjdGlvbl9lbmFibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5Q2hh
bmdlZE5vdGlmaWNhdGlvbiAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpb25fYXZh
aWxhYmlsaXR5X2NoYW5nZWQiCiAKICNkZWZpbmUgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5
ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IgogI2RlZmluZSBXSVJB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkgICAgICAgQCJXSVJBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXJLZXkiCkBAIC02Nyw2ICs2Nyw3IEBACiAjZGVmaW5lIFdJUlJhd0RhdGFLZXkg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlJhd0RhdGFLZXkiCiAjZGVmaW5lIFdJUkxp
c3RpbmdNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICBAIldJUkxpc3RpbmdNZXNzYWdlIgog
I2RlZmluZSBXSVJMaXN0aW5nS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0
aW5nS2V5IgorI2RlZmluZSBXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleSAgICAgICAgICAg
QCJXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleSIKICNkZWZpbmUgV0lSRGVzdGluYXRpb25L
ZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSRGVzdGluYXRpb25LZXkiCiAjZGVmaW5lIFdJ
UkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25EaWVk
TWVzc2FnZSIKICNkZWZpbmUgV0lSVHlwZUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEAiV0lSVHlwZUtleSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMTVkZDA2NjBhNGY0
NWNkMzZmYjgyYTBkMzU2Y2MxMzVmMTFiYmZiYS4uZTM4MDhlOWE4YTcxZjkzOGZjZjY4MTgwOGNl
MjVkMWYzMTY4YTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE3Miw2ICsxNzIs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dG
ZWF0dXJlcy5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8ubW0KKyAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLm1t
CiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiAg
ICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiYTA2MTc4M2QyZDUyM2UzNjk1Y2FiNGZkMmMwZDZkMzgwMGVkZDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorCitAcHJvdG9jb2wgX1dLQXV0b21hdGlvbkNvbnRyb2xsZXJE
ZWxlZ2F0ZSA8TlNPYmplY3Q+CistIChCT09MKWFsbG93c1JlbW90ZUF1dG9tYXRpb247CistICh2
b2lkKXJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbjsKK0BlbmQKKworV0tfQ0xBU1NfQVZBSUxBQkxF
KFdLX01BQ19UQkEsIFdLX0lPU19UQkEpCitAaW50ZXJmYWNlIF9XS0F1dG9tYXRpb25Db250cm9s
bGVyIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxfV0tBdXRv
bWF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKKysgKF9XS0F1dG9tYXRpb25Db250
cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTA1NjIzNjRkM2I3YTcyMDE5MTE3MWQyODUxNzcxOGFh
ZDI4NWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CisKKyNp
ZiBXS19BUElfRU5BQkxFRAorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitjbGFzcyBS
ZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyIDogcHVibGljIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyKF9XS0F1dG9t
YXRpb25Db250cm9sbGVyICopOworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvckNsaWVudEFk
YXB0ZXIoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkg
b3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKm1fY29u
dHJvbGxlcjsKK307CisKK1JlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OlJlbW90ZUluc3Bl
Y3RvckNsaWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCisg
ICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNp
bmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlzKTsKK30KKworUmVtb3RlSW5z
cGVjdG9yQ2xpZW50QWRhcHRlcjo6flJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIoKQorewor
ICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50
KG51bGxwdHIpOworfQorCitib29sIFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OnJlbW90
ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QKK3sKKyAgICBpZiAoW21fY29udHJvbGxlciBkZWxl
Z2F0ZV0pCisgICAgICAgIHJldHVybiBbW21fY29udHJvbGxlciBkZWxlZ2F0ZV0gYWxsb3dzUmVt
b3RlQXV0b21hdGlvbl07CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkKK3sKKyAgICBp
ZiAoIXJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChbbV9jb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgW1ttX2NvbnRyb2xsZXIgZGVsZWdh
dGVdIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbl07Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tB
dXRvbWF0aW9uQ29udHJvbGxlciB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3Rv
ckNsaWVudEFkYXB0ZXI+IF9jbGllbnRBZGFwdGVyOworfQorCisrIChfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXIKK3sKKyAgICBzdGF0aWMgX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIgKmNvbnRyb2xsZXI7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBjb250cm9sbGVy
ID0gW1tfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF07CisgICAgfSk7CisKKyAg
ICByZXR1cm4gY29udHJvbGxlcjsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1
dG9tYXRpb25Db250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgLy8gRm9yY2UgdGhl
IG9sZCBhZGFwdGVyIHRvIGRpc2Nvbm5lY3QgZnJvbSBSZW1vdGVJbnNwZWN0b3IgZmlyc3QuCisg
ICAgX2NsaWVudEFkYXB0ZXIgPSBuaWw7CisKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAgICAgICAg
X2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIF9jbGllbnRBZGFwdGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyPihzZWxmKTsKKyAgICB9Cit9CisK
K0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWViOWNkNDc5NDI0NjVjNGU4
OTZkNmI3NmNkYzViNDlhOTVkZjQxNi4uNzViZjU4YzY5YWJiZGFmZDk5NTRmZjZlMmZiYjYxMDY0
MzlhZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTIzOCw2ICsxMjM4LDggQEAKIAkJOTNBODhCNDcxQkM4ODI5NzAwQUJB
NUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RS
ZXN1bHQuY3BwICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9h
ZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2
QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3
IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5OUJDMTFFQTFDMTdFRTREMDA4QUVBQzggLyogX1dLQXV0b21hdGlv
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUJDMTFFNzFDMTdFRTNGMDA4QUVBQzggLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIu
bW0gKi87IH07CisJCTk5QkMxMUVCMUMxN0VFNTUwMDhBRUFDOCAvKiBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlCQzExRTYxQzE3RUUzRjAwOEFFQUM4IC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUY1NEY4OEYx
NjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBD
aGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5t
bSAqLzsgfTsKQEAgLTM0NjMsNiArMzQ2NSw4IEBACiAJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVD
MiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVC
MDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0
VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0
UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QkMxMUU2MUMxN0VFM0Yw
MDhBRUFDOCAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OUJDMTFFNzFDMTdFRTNGMDA4QUVBQzggLyogX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tB
dXRvbWF0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1
NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblBy
b2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTM0Miw2ICs1MzQ2LDggQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAw
QTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJG
OTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3
MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAq
LywKKwkJCQk5OUJDMTFFNjFDMTdFRTNGMDA4QUVBQzggLyogX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIuaCAqLywKKwkJCQk5OUJDMTFFNzFDMTdFRTNGMDA4QUVBQzggLyogX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIubW0gKi8sCiAJCQkJMUE1NzA0RjYxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRl
eHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyog
X1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk4Mzg5MUI2ODFBNjhCRUJDMDAz
MEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oICovLApAQCAtNzczNiw2ICs3
NzQyLDcgQEAKIAkJCQkyOTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUQzMDkzMTY0QjRDNUQwMDcy
REVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QkMxMUVCMUMxN0VFNTUwMDhBRUFDOCAvKiBf
V0tBdXRvbWF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1RTc3MkMxODQw
MDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFEMEQ0MzcxODNCMzUzRDAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQTk3NjExODBF
MDMxRDAwMzlBMTQ5IC8qIERhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTk4MjMsNiArOTgzMCw3IEBACiAJCQkJQkMxMTFBNUIxMTJGNEZCQjAwMzM3QkFCIC8qIFdl
YkNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDIxRTlDMTJCMTY3
ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxMjkzNUQ3MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTlCQzExRUExQzE3RUU0RDAwOEFFQUM4IC8qIF9XS0F1dG9tYXRp
b25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRkJCOUExMjg4Qzk1RTAwQUZG
REY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFB
ODRDRTMxMjdGMzg2QjAwQ0E2RUE0IC8qIFdlYkNvbnRleHRNZW51UHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267038</attachid>
            <date>2015-12-09 13:05:34 -0800</date>
            <delta_ts>2015-12-09 13:28:56 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151576-20151209130503.patch</filename>
            <type>text/plain</type>
            <size>21963</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmE5MmQxZWEyN2EyMmExZDc2ZmQwZTdiMjQ5ZjIwZDIyZTA4OGRjLi42ODQ5ZGVmNWU4MDE0ZTU0
NDc3NjEyM2JhNWYxMDdkYzRmMDc4OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtKU1JlbW90ZUluc3BlY3Rvck9iakNB
ZGFwdGVyIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZV0pOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzTm93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOgorCiAyMDE1LTEyLTA5ICBTYWFtIGJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHdlIHNob3VsZCBlbWl0IG9wX3dhdGNoZG9n
IGFmdGVyIG9wX2VudGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTkyNWViOTFiZDY2YTBkYjVlMzgxMWNiMGVl
ZDFhMzMxZTFmNGMzZC4uNTcyOGFjMWQwMjZkYjg0NzNlMDhjMGE0Mjg5OGJlNjlkYzAxNDYzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTEyLTA5ICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkgZm9yIHJlZ2lzdGVyaW5n
IGFuIGF1dG9tYXRpb24gY29udHJvbGxlciB3aXRoIFJlbW90ZUluc3BlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dLQXV0b21hdGlvbkNvbnRy
b2xsZXIgaXMgYW4gYWRhcHRlciBTUEkgdG8gUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQuIEl0IGlz
CisgICAgICAgIHNoYXJlZCBhY3Jvc3MgYW4gZW50aXJlIHByb2Nlc3MsIG5vdCBzcGVjaWZpYyB0
byBhIGJyb3dzZXIgY29udGV4dCBvciBwYWdlLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0
ZXI6OlJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIpOgorICAgICAgICAoUmVtb3RlSW5zcGVj
dG9yQ2xpZW50QWRhcHRlcjo6flJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIpOgorICAgICAg
ICAoUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQp
OgorICAgICAgICAoUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVxdWVzdEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKCtbX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgc2hhcmVkQ29u
dHJvbGxlcl0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBzZXREZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTUtMTItMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtFRkxdIE5lZWQgdG8gY2hhbmdlIGV4cGVjdGF0aW9uIHJlc3VsdCBpbiBld2tfc2V0dGlu
Z3Nfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZCBBUEkgdGVzdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBmYjZiLi43
MWNlNmM2NzdiMjMxOTA4NzBjMGRmMDRlNjAzYmY0YzQ4ZGIyYjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aApAQCAtMzcsNiArMzcsNyBAQAogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXI7CiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC00OCw2ICs0OSwxMyBAQCBjbGFzcyBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3Rv
ciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewog
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxv
d2VkKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uKCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydERpc2FibGVkKCk7
CiAgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2luZ2xldG9uKCk7CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CkBAIC01OCwxMCArNjYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNw
ZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqKTsKKyAgICB2b2lkIHNldFJl
bW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogCiAgICAgdm9p
ZCBzZXR1cEZhaWxlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29tcGxl
dGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpOwogICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0lu
c3BlY3Rpb24odW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRp
ZXNEaWRDaGFuZ2UoKSB7IHB1c2hMaXN0aW5nc1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtMTIz
LDYgKzEzMyw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOwogCisgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQq
IG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxKU1JlbW90ZUluc3BlY3Rvck9i
akNBZGFwdGVyPiBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVu
dGlmaWVyIHsgMSB9OwogICAgIGludCBtX25vdGlmeVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Lm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhkNjljZjI5MzlhMTE3YzFjNzZjNGFiZTEuLjA4NDU3
NDgzOGM3YWYzMDI5MmZkNTBjZjA2Y2YyMDQxODA2MTk4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0K
QEAgLTQzLDYgKzQzLDE3IEBACiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitAaW50ZXJmYWNlIEpTUmVtb3RlSW5zcGVj
dG9yT2JqQ0FkYXB0ZXIgOiBOU09iamVjdAorLSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRD
aGFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFw
dGVyCistICh2b2lkKWNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZQoreworICAgIEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFu
Z2UoKTsKK30KK0BlbmQKKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHN0YXRpYyBib29sIGNh
bkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKQEAgLTIzOCw2ICsyNDksMTggQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3Rl
SW5zcGVjdGlvblRhcmdldCoKICAgICB9CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRS
ZW1vdGVJbnNwZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKKyAgICBBU1NFUlQoIW1fY2xpZW50KTsK
KworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworICAgIG1fY2xpZW50
ID0gY2xpZW50OworCisgICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRl
cyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9uLgorICAgIHB1c2hM
aXN0aW5nc1Nvb24oKTsKK30KKwogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CkBA
IC0zMTcsNiArMzQwLDEwIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiAgICAgICAg
IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQo
KTsKICAgICB9KTsKIAorICAgIG1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyID0gYWRv
cHROUyhbSlNSZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlciBuZXddKTsKKyAgICBOU05vdGlmaWNh
dGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
OworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6bV9hdXRvbWF0aW9uQXZhaWxhYmlsaXR5T2JzZXJ2
ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSkg
bmFtZTpAV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0
Om5pbF07CisKICAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3Rp
ZmljYXRpb24pOwogfQogCkBAIC0zNTgsNiArMzg1LDggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKICAgICB9CiAKICAgICBub3RpZnlfY2Fu
Y2VsKG1fbm90aWZ5VG9rZW4pOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlci5n
ZXQoKV07CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5l
ZWRlZCgpCkBAIC01NDQsNiArNTczLDkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc05vdygpCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1lc3NhZ2UgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFttZXNzYWdl
IHNldE9iamVjdDpsaXN0aW5ncy5nZXQoKSBmb3JLZXk6V0lSTGlzdGluZ0tleV07CiAKKyAgICBC
T09MIGlzQWxsb3dlZCA9IG1fY2xpZW50ICYmIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxs
b3dlZCgpOworICAgIFttZXNzYWdlIHNldE9iamVjdDpAKGlzQWxsb3dlZCkgZm9yS2V5OldJUlJl
bW90ZUF1dG9tYXRpb25FbmFibGVkS2V5XTsKKwogICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1l
c3NhZ2UoV0lSTGlzdGluZ01lc3NhZ2UsIG1lc3NhZ2UuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oCmluZGV4IGVmOWEzNjQ5NDhiNWU1NmMxNTU1MTA3Y2E1ZDA3
Y2Y0YzFmNWZlYmIuLmRhODg3ZDc2N2Q1YTJhZDFiY2IxZjY4YWI5MGM1ODA2MTBmNWY3MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCkBAIC0zMCwxNSArMzAsMTYgQEAKIC8v
IHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBPUyBYIHNpZGUsIHdlYmluc3BlY3Rv
cmQsIGFuZAogLy8gaU9TIFdlYktpdCBvbiB0aGUgZGV2aWNlIHNpZGUuCiAKLSNkZWZpbmUgV0lS
U2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3NzUzCi0jZGVmaW5lIFdJUlhQ
Q01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rv
ciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAgICAgICAgICAgICAgICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgotI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmxl
Tm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJsZSIK
LSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uICJjb20uYXBw
bGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCi0jZGVmaW5lIFdJUlNlcnZpY2VF
bmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZW5h
YmxlZCIKLSNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90aWZpY2F0aW9uICAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKLSNkZWZpbmUgV0lSQXV0b21hdGljSW5z
cGVjdGlvbkVuYWJsZWRTdGF0ZSAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdXRvbWF0
aWNfaW5zcGVjdGlvbl9lbmFibGVkIgotCisjZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1i
ZXIgICAgICAgICAgICAgICAgICAgICAyNzc1MworI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCisjZGVm
aW5lIFdJUlhQQ0RlYnVnZ2VyU2VydmljZU5hbWUgICAgICAgICAgICAgICAgICAgICAiY29tLmFw
cGxlLndlYmluc3BlY3Rvci5kZWJ1Z2dlciIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5v
dGlmaWNhdGlvbiAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFi
bGUiCisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbiAgICAg
ICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmlsaXR5X2NoZWNrIgorI2RlZmluZSBX
SVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCisjZGVmaW5lIFdJUlNlcnZpY2VEaXNhYmxlZE5vdGlmaWNh
dGlvbiAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZGlzYWJsZWQiCisj
ZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAgICAgICAgICAiY29t
LmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIKKyNkZWZp
bmUgV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUNoYW5nZWROb3RpZmljYXRpb24gICJjb20uYXBw
bGUud2ViaW5zcGVjdG9yZC5hdXRvbWF0aW9uX2F2YWlsYWJpbGl0eV9jaGFuZ2VkIgorI2RlZmlu
ZSBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gICAgImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpb25fYXZhaWxhYmlsaXR5X2NoZWNrIgogCiAjZGVmaW5l
IFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAgICBAIldJUkFwcGxpY2F0aW9u
SWRlbnRpZmllcktleSIKICNkZWZpbmUgV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5
ICAgICAgIEAiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IgpAQCAtNjcsNiArNjgs
NyBAQAogI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJX
SVJSYXdEYXRhS2V5IgogI2RlZmluZSBXSVJMaXN0aW5nTWVzc2FnZSAgICAgICAgICAgICAgICAg
ICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKICNkZWZpbmUgV0lSTGlzdGluZ0tleSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ0tleSIKKyNkZWZpbmUgV0lSUmVtb3RlQXV0
b21hdGlvbkVuYWJsZWRLZXkgICAgICAgICAgIEAiV0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRL
ZXkiCiAjZGVmaW5lIFdJUkRlc3RpbmF0aW9uS2V5ICAgICAgICAgICAgICAgICAgICAgICBAIldJ
UkRlc3RpbmF0aW9uS2V5IgogI2RlZmluZSBXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2UgICAgICAg
ICAgICAgICAgQCJXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2UiCiAjZGVmaW5lIFdJUlR5cGVLZXkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlR5cGVLZXkiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
TWFjLmNtYWtlCmluZGV4IDE1ZGQwNjYwYTRmNDVjZDM2ZmI4MmEwZDM1NmNjMTM1ZjExYmJmYmEu
LmUzODA4ZTlhOGE3MWY5MzhmY2Y2ODE4MDhjZTI1ZDFmMzE2OGE0YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtTWFjLmNtYWtlCkBAIC0xNzIsNiArMTcyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KICAgICBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMubW0KICAgICBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlv
bkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
b21hdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmEwNjE3ODNkMmQ1MjNlMzY5NWNhYjRm
ZDJjMGQ2ZDM4MDBlZGQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQHByb3Rv
Y29sIF9XS0F1dG9tYXRpb25Db250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgorLSAoQk9PTClh
bGxvd3NSZW1vdGVBdXRvbWF0aW9uOworLSAodm9pZClyZXF1ZXN0QXV0b21hdGlvblNlc3Npb247
CitAZW5kCisKK1dLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKQorQGlu
dGVyZmFjZSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBpZCA8X1dLQXV0b21hdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVs
ZWdhdGU7CisrIChfV0tBdXRvbWF0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7CitA
ZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRmNTUw
YTQ1YmYwZDE3MTAyMTU4MjUyZDIyZTNkMWVkYzE2OTcyNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIu
bW0KQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIl9XS0F1dG9tYXRpb25Db250cm9sbGVyLmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL1JlbW90ZUluc3BlY3Rvci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworY2xhc3MgUmVt
b3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlciA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVy
KF9XS0F1dG9tYXRpb25Db250cm9sbGVyICopOworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3Rv
ckNsaWVudEFkYXB0ZXIoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlvbkFsbG93
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uKCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIgKm1fY29udHJvbGxlcjsKK307CisKK1JlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OlJl
bW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKKyAgICBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KHRo
aXMpOworfQorCitSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3RlSW5zcGVjdG9y
Q2xpZW50QWRhcHRlcigpCit7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNpbmds
ZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudChudWxscHRyKTsKK30KKworYm9vbCBSZW1v
dGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0
Cit7CisgICAgaWYgKFttX2NvbnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICByZXR1cm4gW1tt
X2NvbnRyb2xsZXIgZGVsZWdhdGVdIGFsbG93c1JlbW90ZUF1dG9tYXRpb25dOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6OnJlcXVl
c3RBdXRvbWF0aW9uU2Vzc2lvbigpCit7CisgICAgaWYgKCFyZW1vdGVBdXRvbWF0aW9uQWxsb3dl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW21fY29udHJvbGxlciBkZWxlZ2F0ZV0p
CisgICAgICAgIFtbbV9jb250cm9sbGVyIGRlbGVnYXRlXSByZXF1ZXN0QXV0b21hdGlvblNlc3Np
b25dOworfQorCitAaW1wbGVtZW50YXRpb24gX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgeworICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyPiBfY2xpZW50QWRh
cHRlcjsKK30KKworKyAoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKilzaGFyZWRDb250cm9sbGVy
Cit7CisgICAgc3RhdGljIF9XS0F1dG9tYXRpb25Db250cm9sbGVyICpjb250cm9sbGVyOworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKKyAgICAgICAgY29udHJvbGxlciA9IFtbX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIgYWxsb2NdIGluaXRdOworICAgIH0pOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXI7Cit9CisK
Ky0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uQ29udHJvbGxlckRlbGVnYXRl
PilkZWxlZ2F0ZQoreworICAgIC8vIEZvcmNlIHRoZSBvbGQgYWRhcHRlciB0byBkaXNjb25uZWN0
IGZyb20gUmVtb3RlSW5zcGVjdG9yIGZpcnN0LgorICAgIF9jbGllbnRBZGFwdGVyID0gbmlsOwor
CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBpZiAoZGVsZWdhdGUpCisgICAgICAg
IF9jbGllbnRBZGFwdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnRB
ZGFwdGVyPihzZWxmKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxZWI5Y2Q0Nzk0MjQ2NWM0ZTg5NmQ2Yjc2Y2RjNWI0OWE5NWRmNDE2Li5iNTUwNWZjOTc2NTZi
MGM3NjViYzdiM2QyNjBiNjFmZDQzMmZhYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjM4LDYgKzEyMzgsOCBAQAogCQk5
M0E4OEI0NzFCQzg4Mjk3MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4OEI0MjFCQzg4MjhDMDBB
QkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYw
MEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQ
YWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVz
dWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2
QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5RTcxNEM0MUMxMjQ5RkYwMDY2
NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTcxNEMwMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tB
dXRvbWF0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNB
IC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21h
dGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OEUx
NjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJOUY1NEY4OTUx
NjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQxNjQ4QUUwRTAwN0RG
ODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OwogCQk5RkI1RjM5NDE2OUU2
QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBX
S0NvbnRleHRQcml2YXRlTWFjLm1tICovOyB9OwpAQCAtMzQ2Myw2ICszNDY1LDggQEAKIAkJOTNB
ODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVz
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlw
ZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNURE
MzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlFNzE0QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RTcxNEMxMUMxMjQ5
RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9j
ZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5NDE2NDhBRTBF
MDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzQyLDYgKzUzNDYsOCBAQAogCQkJ
CTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICov
LAogCQkJCTM3QTVFMDExMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5tbSAqLywKIAkJCQkzNzlBODczNTE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxl
bWVudEluZm9JbnRlcm5hbC5oICovLAorCQkJCTk5RTcxNEMwMUMxMjQ5RTYwMDY2NUIzQSAvKiBf
V0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbSAqLywKKwkJCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVC
M0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaCAqLywKIAkJCQkxQTU3MDRGNjFCRTAxRkY0
MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oICovLAogCQkJCTFBNTcwNEY1
MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAogCQkJ
CTgzODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRl
LmggKi8sCkBAIC03ODQzLDYgKzc4NDksNyBAQAogCQkJCUU0MTNGNTlEMUFDMUFEQzQwMDM0NTM2
MCAvKiBOZXR3b3JrQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QjI1MEYxQTgz
MUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MkUwNjEwMUFBNzUyM0IwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBp
biBIZWFkZXJzICovLAorCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0
aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0UxQTBEMDQwQjAwRUFE
MjA0IC8qIE5ldHdvcmtDYWNoZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxRUVCQkQxQkQ4
NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwNjksNiArMTAwNzYsNyBAQAog
CQkJCUJDRkQ1NDhCMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0MDc1RkIxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJyb3JSZWYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTU4QjZGMDkxOEZDQTczMzAwOENCQTUzIC8qIFdLRmlsZVVwbG9hZFBh
bmVsLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTlFNzE0QzQxQzEyNDlGRjAwNjY1QjNBIC8qIF9X
S0F1dG9tYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjYxOEJF
QzE4QzAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUM1NDI1NkI5MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzU3MTkzQkUxOEMxNEE0NDAwMkQwRjEyIC8qIFdLRm9ybVNlbGVjdENvbnRyb2wu
bW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267040</attachid>
            <date>2015-12-09 13:29:00 -0800</date>
            <delta_ts>2015-12-10 13:57:00 -0800</delta_ts>
            <desc>Proposed Fix (nits)</desc>
            <filename>bug-151576-20151209132829.patch</filename>
            <type>text/plain</type>
            <size>22064</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmE5MmQxZWEyN2EyMmExZDc2ZmQwZTdiMjQ5ZjIwZDIyZTA4OGRjLi42ODQ5ZGVmNWU4MDE0ZTU0
NDc3NjEyM2JhNWYxMDdkYzRmMDc4OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtKU1JlbW90ZUluc3BlY3Rvck9iakNB
ZGFwdGVyIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZV0pOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzTm93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOgorCiAyMDE1LTEyLTA5ICBTYWFtIGJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHdlIHNob3VsZCBlbWl0IG9wX3dhdGNoZG9n
IGFmdGVyIG9wX2VudGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTkyNWViOTFiZDY2YTBkYjVlMzgxMWNiMGVl
ZDFhMzMxZTFmNGMzZC4uNTcyOGFjMWQwMjZkYjg0NzNlMDhjMGE0Mjg5OGJlNjlkYzAxNDYzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTEyLTA5ICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkgZm9yIHJlZ2lzdGVyaW5n
IGFuIGF1dG9tYXRpb24gY29udHJvbGxlciB3aXRoIFJlbW90ZUluc3BlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dLQXV0b21hdGlvbkNvbnRy
b2xsZXIgaXMgYW4gYWRhcHRlciBTUEkgdG8gUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQuIEl0IGlz
CisgICAgICAgIHNoYXJlZCBhY3Jvc3MgYW4gZW50aXJlIHByb2Nlc3MsIG5vdCBzcGVjaWZpYyB0
byBhIGJyb3dzZXIgY29udGV4dCBvciBwYWdlLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0
ZXI6OlJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIpOgorICAgICAgICAoUmVtb3RlSW5zcGVj
dG9yQ2xpZW50QWRhcHRlcjo6flJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIpOgorICAgICAg
ICAoUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQp
OgorICAgICAgICAoUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcjo6cmVxdWVzdEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKCtbX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgc2hhcmVkQ29u
dHJvbGxlcl0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBzZXREZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTUtMTItMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtFRkxdIE5lZWQgdG8gY2hhbmdlIGV4cGVjdGF0aW9uIHJlc3VsdCBpbiBld2tfc2V0dGlu
Z3Nfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZCBBUEkgdGVzdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBmYjZiLi43
MWNlNmM2NzdiMjMxOTA4NzBjMGRmMDRlNjAzYmY0YzQ4ZGIyYjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aApAQCAtMzcsNiArMzcsNyBAQAogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXI7CiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC00OCw2ICs0OSwxMyBAQCBjbGFzcyBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3Rv
ciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewog
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxv
d2VkKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uKCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydERpc2FibGVkKCk7
CiAgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2luZ2xldG9uKCk7CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CkBAIC01OCwxMCArNjYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNw
ZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqKTsKKyAgICB2b2lkIHNldFJl
bW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogCiAgICAgdm9p
ZCBzZXR1cEZhaWxlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29tcGxl
dGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpOwogICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0lu
c3BlY3Rpb24odW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRp
ZXNEaWRDaGFuZ2UoKSB7IHB1c2hMaXN0aW5nc1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtMTIz
LDYgKzEzMyw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOwogCisgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQq
IG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxKU1JlbW90ZUluc3BlY3Rvck9i
akNBZGFwdGVyPiBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVu
dGlmaWVyIHsgMSB9OwogICAgIGludCBtX25vdGlmeVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Lm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhkNjljZjI5MzlhMTE3YzFjNzZjNGFiZTEuLmM3N2U4
Y2MzYzk2ODIxOGM5NjQ4MGQ5ZjdlMzA1MTJiMmNmYTJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0K
QEAgLTQzLDYgKzQzLDE3IEBACiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitAaW50ZXJmYWNlIEpTUmVtb3RlSW5zcGVj
dG9yT2JqQ0FkYXB0ZXIgOiBOU09iamVjdAorLSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRD
aGFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFw
dGVyCistICh2b2lkKWNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZQoreworICAgIEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFu
Z2UoKTsKK30KK0BlbmQKKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHN0YXRpYyBib29sIGNh
bkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKQEAgLTIzOCw2ICsyNDksMTggQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3Rl
SW5zcGVjdGlvblRhcmdldCoKICAgICB9CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRS
ZW1vdGVJbnNwZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKKyAgICBBU1NFUlQoISFtX2NsaWVudCAh
PSAhIWNsaWVudCk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsK
KyAgICBtX2NsaWVudCA9IGNsaWVudDsKKworICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5n
IHRoYXQgaW5jbHVkZXMgd2hldGhlciB0aGUgY2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlv
bi4KKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
ZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVCht
X2VuYWJsZWQpOwpAQCAtMzE3LDYgKzM0MCwxMCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3Rh
cnQoKQogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVj
dGlvbklmTmVlZGVkKCk7CiAgICAgfSk7CiAKKyAgICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlP
YnNlcnZlciA9IGFkb3B0TlMoW0pTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIgbmV3XSk7Cisg
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOm1fYXV0b21hdGlvbkF2YWls
YWJpbGl0eU9ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihjbGllbnRDYXBhYmlsaXRp
ZXNEaWRDaGFuZ2UpIG5hbWU6QFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZp
Y2F0aW9uIG9iamVjdDpuaWxdOworCiAgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJp
bGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKIH0KIApAQCAtMzU4LDYgKzM4NSw4IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAgICAgfQogCiAg
ICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2VuKTsKKworICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hdXRvbWF0aW9uQXZhaWxhYmls
aXR5T2JzZXJ2ZXIuZ2V0KCldOwogfQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUEND
b25uZWN0aW9uSWZOZWVkZWQoKQpAQCAtNTQ0LDYgKzU3Myw5IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpwdXNoTGlzdGluZ3NOb3coKQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBtZXNzYWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
ICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdL
ZXldOwogCisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVtb3Rl
QXV0b21hdGlvbkFsbG93ZWQoKTsKKyAgICBbbWVzc2FnZSBzZXRPYmplY3Q6QChpc0FsbG93ZWQp
IGZvcktleTpXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleV07CisKICAgICBtX3hwY0Nvbm5l
Y3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCBlZjlhMzY0OTQ4YjVlNTZj
MTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJiLi5kYTg4N2Q3NjdkNWEyYWQxYmNiMWY2OGFiOTBjNTgw
NjEwZjVmNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMzAsMTUg
KzMwLDE2IEBACiAvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgT1MgWCBzaWRl
LCB3ZWJpbnNwZWN0b3JkLCBhbmQKIC8vIGlPUyBXZWJLaXQgb24gdGhlIGRldmljZSBzaWRlLgog
Ci0jZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAgICAgICAgICAgICAyNzc1Mwot
I2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3IiCi0jZGVmaW5lIFdJUlhQQ0RlYnVnZ2VyU2VydmljZU5hbWUgICAgICAg
ICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rvci5kZWJ1Z2dlciIKLSNkZWZpbmUgV0lSU2Vy
dmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9y
ZC5hdmFpbGFibGUiCi0jZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNh
dGlvbiAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmlsaXR5X2NoZWNrIgotI2RlZmlu
ZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAgImNvbS5hcHBsZS53ZWJp
bnNwZWN0b3JkLmVuYWJsZWQiCi0jZGVmaW5lIFdJUlNlcnZpY2VEaXNhYmxlZE5vdGlmaWNhdGlv
biAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZGlzYWJsZWQiCi0jZGVmaW5lIFdJ
UkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAgICAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvcmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIKLQorI2RlZmluZSBXSVJTaW11bGF0
b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBD
TWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5z
cGVjdG9yIgorI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZpY2VOYW1lICAgICAgICAgICAgICAg
ICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdnZXIiCisjZGVmaW5lIFdJUlNlcnZp
Y2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvcmQuYXZhaWxhYmxlIgorI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3Rp
ZmljYXRpb24gICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVj
ayIKKyNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAg
ICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgorI2RlZmluZSBXSVJTZXJ2aWNlRGlz
YWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3Jk
LmRpc2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAg
ICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2Vu
YWJsZWQiCisjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0
aW9uICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGlvbl9hdmFpbGFiaWxpdHlfY2hh
bmdlZCIKKyNkZWZpbmUgV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9u
ICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdXRvbWF0aW9uX2F2YWlsYWJpbGl0eV9jaGVj
ayIKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAgICAgQCJX
SVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSIK
QEAgLTY3LDYgKzY4LDcgQEAKICNkZWZpbmUgV0lSUmF3RGF0YUtleSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKICNkZWZpbmUgV0lSTGlzdGluZ01lc3NhZ2UgICAg
ICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3NhZ2UiCiAjZGVmaW5lIFdJUkxpc3Rp
bmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUkxpc3RpbmdLZXkiCisjZGVmaW5l
IFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5ICAgICAgICAgICBAIldJUlJlbW90ZUF1dG9t
YXRpb25FbmFibGVkS2V5IgogI2RlZmluZSBXSVJEZXN0aW5hdGlvbktleSAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKICNkZWZpbmUgV0lSQ29ubmVjdGlvbkRpZWRN
ZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlIgogI2RlZmlu
ZSBXSVJUeXBlS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlS2V5Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxNWRkMDY2MGE0ZjQ1Y2QzNmZiODJhMGQzNTZj
YzEzNWYxMWJiZmJhLi5lMzgwOGU5YThhNzFmOTM4ZmNmNjgxODA4Y2UyNWQxZjMxNjhhNGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTcyLDYgKzE3Miw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dpbmRvd0ZlYXR1cmVzLm1tCiAgICAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQorICAgIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0KICAgICBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KICAgICBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50
QWN0aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dG9tYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI5ZGEwNzBkZDc2
MTdjMDVlNjI1NTQyYjdhZGVkZjM5MGZiZjk1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVj
dD4KKy0gKEJPT0wpYWxsb3dzUmVtb3RlQXV0b21hdGlvbjsKKy0gKHZvaWQpcmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uOworQGVuZAorCitXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tf
SU9TX1RCQSkKK0BpbnRlcmZhY2UgX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdAor
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPF9XS0F1dG9tYXRpb25Db250cm9sbGVy
RGVsZWdhdGU+IGRlbGVnYXRlOworKyAoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKilzaGFyZWRD
b250cm9sbGVyOworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Y2VmMDc3Y2ZmYjU1NjQ4ODdlYzQzNmM0ZTBhOTE2
NWYyYWRhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTA0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uQ29udHJv
bGxlci5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KKworY2xh
c3MgUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlciA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnRB
ZGFwdGVyKF9XS0F1dG9tYXRpb25Db250cm9sbGVyICopOworICAgIHZpcnR1YWwgflJlbW90ZUlu
c3BlY3RvckNsaWVudEFkYXB0ZXIoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlv
bkFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uKCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIgKm1fY29udHJvbGxlcjsKK307CisKK1JlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0
ZXI6OlJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIg
KmNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKKyAgICBJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50KHRoaXMpOworfQorCitSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3RlSW5z
cGVjdG9yQ2xpZW50QWRhcHRlcigpCit7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudChudWxscHRyKTsKK30KKworYm9v
bCBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgp
IGNvbnN0Cit7CisgICAgaWYgKFttX2NvbnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICByZXR1
cm4gW1ttX2NvbnRyb2xsZXIgZGVsZWdhdGVdIGFsbG93c1JlbW90ZUF1dG9tYXRpb25dOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI6
OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigpCit7CisgICAgaWYgKCFyZW1vdGVBdXRvbWF0aW9u
QWxsb3dlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW21fY29udHJvbGxlciBkZWxl
Z2F0ZV0pCisgICAgICAgIFtbbV9jb250cm9sbGVyIGRlbGVnYXRlXSByZXF1ZXN0QXV0b21hdGlv
blNlc3Npb25dOworfQorCitAaW1wbGVtZW50YXRpb24gX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIg
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyPiBfY2xp
ZW50QWRhcHRlcjsKK30KKworKyAoX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgKilzaGFyZWRDb250
cm9sbGVyCit7CisgICAgc3RhdGljIF9XS0F1dG9tYXRpb25Db250cm9sbGVyICpjb250cm9sbGVy
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgY29udHJvbGxlciA9IFtbX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIH0pOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXI7
Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uQ29udHJvbGxlckRl
bGVnYXRlPilkZWxlZ2F0ZQoreworICAgIC8vIEZvcmNlIHRoZSBvbGQgYWRhcHRlciB0byBkaXNj
b25uZWN0IGZyb20gUmVtb3RlSW5zcGVjdG9yIGZpcnN0LgorICAgIF9jbGllbnRBZGFwdGVyID0g
bmlsOworCisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBpZiAoZGVsZWdhdGUpCisg
ICAgICAgIF9jbGllbnRBZGFwdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JD
bGllbnRBZGFwdGVyPihzZWxmKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFlYjljZDQ3OTQy
NDY1YzRlODk2ZDZiNzZjZGM1YjQ5YTk1ZGY0MTYuLmI1NTA1ZmM5NzY1NmIwYzc2NWJjN2IzZDI2
MGI2MWZkNDMyZmFhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzgsNiArMTIzOCw4IEBACiAJCTkzQTg4QjQ3MUJDODgy
OTcwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTg4QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElI
aXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdL
UGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkw
MEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlFNzE0QzQxQzEyNDlGRjAwNjY1QjNBIC8qIF9XS0F1
dG9tYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlFNzE0QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250
cm9sbGVyLm1tICovOyB9OworCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21h
dGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlG
NTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4
MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4
MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2lu
UHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMubW0gKi87IH07CkBAIC0zNDYzLDYgKzM0NjUsOCBAQAogCQk5M0E4OEI0MzFCQzg4MjhD
MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8q
IF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU3MTRDMDFD
MTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8q
IF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4dFBy
aXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNDIsNiArNTM0Niw4IEBACiAJCQkJMzdBNUUwMTIxOEJC
RjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUw
MTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJ
CTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVy
bmFsLmggKi8sCisJCQkJOTlFNzE0QzAxQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25D
b250cm9sbGVyLm1tICovLAorCQkJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRv
bWF0aW9uQ29udHJvbGxlci5oICovLAogCQkJCTFBNTcwNEY2MUJFMDFGRjQwMDg3NEFGMSAvKiBf
V0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMUE1NzA0RjUxQkUwMUZGNDAwODc0
QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJODM4OTFCNjgxQTY4
QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKQEAgLTc4
NDMsNiArNzg0OSw3IEBACiAJCQkJRTQxM0Y1OUQxQUMxQURDNDAwMzQ1MzYwIC8qIE5ldHdvcmtD
YWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAg
LyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyRTA2MTAx
QUE3NTIzQjAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDRTFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29y
a0NhY2hlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzFFRUJCRDFCRDg1QzQzMDBCQjY0QzMg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJB
RTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA2OSw2ICsxMDA3Niw3IEBACiAJCQkJQkNGRDU0OEIx
MzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQw
NzVGQjEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNThCNkYwOTE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gaW4gU291
cmNlcyAqLywKKwkJCQk5OUU3MTRDNDFDMTI0OUZGMDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTQyNTZCNjE4QkVDMThDMDBERTQxNzkg
LyogV0tGb3JtSW5wdXRDb250cm9sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjkxOEJF
QzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTcx
OTNCRTE4QzE0QTQ0MDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5tbSBpbiBTb3VyY2Vz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267130</attachid>
            <date>2015-12-10 13:57:05 -0800</date>
            <delta_ts>2015-12-16 13:22:17 -0800</delta_ts>
            <desc>Proposed Fix (more nits)</desc>
            <filename>bug-151576-20151210135632.patch</filename>
            <type>text/plain</type>
            <size>22207</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Y2Y2YzQ1ODBlNTNjZDRjZTU5MGYwY2Y2ODhhNDE4N2UzZTg0YTVjLi5iZmU3ZTY4YzQ1MDc5NGU0
NTA4ZDkzYTU0NDI2ZDViZWE1ZmRhN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgY2xpZW50IGlzIHNldCBieSBfV0tBdXRvbWF0aW9uQ29u
dHJvbGxlciwgd2hpY2ggaXMgYW4gU1BJIGFuZCBicmlkZ2UKKyAgICAgICAgdGhhdCBhbGxvd3Mg
Y2xpZW50cyB0byBpbnN0YWxsIGFuIE9iamVjdGl2ZS1DIGRlbGVnYXRlIGZvciBhdXRvbWF0aW9u
LgorCisgICAgICAgIFRoZSBzZXR0aW5nIGZvciB3aGV0aGVyIHJlbW90ZSBhdXRvbWF0aW9uIGlz
IGFsbG93ZWQgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGxpc3RpbmcgdGhhdCBSZW1vdGVJ
bnNwZWN0b3Igc2VuZHMgb3V0LiBJdCBpcyB1cGRhdGVkIHdoZW4gUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQKKyAgICAgICAgaXMgYXNzaWduZWQsIG9yIHdoZW4gdGhlIGNsaWVudCB1c2VzIGFuIE5T
Tm90aWZpY2F0aW9uIHRvIHNpZ25hbCB0aGF0IGl0IGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtKU1JlbW90ZUluc3BlY3Rvck9iakNB
ZGFwdGVyIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZV0pOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzTm93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOgorCiAyMDE1LTEyLTEwICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0IzXSBBZGQgbmV3IGZpbGVzIHRv
IHRoZSBjbWFrZSBidWlsZCBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2YmQ4ODdkMjU0NzVmYjAzOWRh
ZmRlNWVlNzk4MDdmNTU4YmFhZWM2Li44ZWM0MWI0ZTNmODZmM2IzMzFjNWY0NGFjMThlYzY4OWMx
MDM4NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMTItMDkgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2ViS2l0IFNQSSBmb3IgcmVn
aXN0ZXJpbmcgYW4gYXV0b21hdGlvbiBjb250cm9sbGVyIHdpdGggUmVtb3RlSW5zcGVjdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBfV0tBdXRvbWF0
aW9uQ29udHJvbGxlciBpcyBhbiBhZGFwdGVyIFNQSSB0byBSZW1vdGVJbnNwZWN0b3I6OkNsaWVu
dC4gSXQgaXMKKyAgICAgICAgc2hhcmVkIGFjcm9zcyBhbiBlbnRpcmUgcHJvY2Vzcywgbm90IHNw
ZWNpZmljIHRvIGEgYnJvd3NlciBjb250ZXh0IG9yIHBhZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25D
b250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
b21hdGlvbkNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAgICAoUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50QWRhcHRlcjo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcik6CisgICAgICAgIChSZW1v
dGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcik6
CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZW1vdGVBdXRvbWF0aW9u
QWxsb3dlZCk6CisgICAgICAgIChSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZXF1ZXN0
QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoK1tfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBz
aGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICgtW19XS0F1dG9tYXRpb25Db250cm9sbGVyIHNl
dERlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxNS0xMi0xMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIFJlc2VydmUgY2FwYWNpdHkgZm9yIHRoZSBj
aGlsZHJlbiB2ZWN0b3IgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckNoaWxk
cmVuSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3
ODgzMjc1NjlhYTJmZjBmYjZiLi43MWNlNmM2NzdiMjMxOTA4NzBjMGRmMDRlNjAzYmY0YzQ4ZGIy
YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMzcsNiArMzcsNyBAQAogCiBPQkpDX0NMQVNTIE5T
RGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIEpTUmVtb3RlSW5z
cGVjdG9yT2JqQ0FkYXB0ZXI7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC00OCw2ICs0
OSwxMyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMg
dm9pZCBzdGFydERpc2FibGVkKCk7CiAgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2luZ2xl
dG9uKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47
CkBAIC01OCwxMCArNjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90
ZSh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgdm9p
ZCB1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQqKTsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudCopOwogCiAgICAgdm9pZCBzZXR1cEZhaWxlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsK
ICAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpOwogICAgIGJvb2wg
d2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQgaWRlbnRpZmllcik7CisgICAg
dm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKSB7IHB1c2hMaXN0aW5nc1Nvb24oKTsg
fQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAg
Ym9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURl
YnVnU2Vzc2lvbjsgfQpAQCAtMTIzLDYgKzEzMyw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOwogCisgICAgUmVt
b3RlSW5zcGVjdG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0
cjxKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyPiBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlP
YnNlcnZlcjsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAgICB1bnNpZ25l
ZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAgIGludCBtX25vdGlmeVRva2Vu
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhkNjljZjI5Mzlh
MTE3YzFjNzZjNGFiZTEuLmM3N2U4Y2MzYzk2ODIxOGM5NjQ4MGQ5ZjdlMzA1MTJiMmNmYTJiNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTQzLDYgKzQzLDE3IEBACiAjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9YUENTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitAaW50
ZXJmYWNlIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIgOiBOU09iamVjdAorLSAodm9pZClj
bGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU1Jl
bW90ZUluc3BlY3Rvck9iakNBZGFwdGVyCistICh2b2lkKWNsaWVudENhcGFiaWxpdGllc0RpZENo
YW5nZQoreworICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5jbGll
bnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKK30KK0BlbmQKKwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKQEAgLTIz
OCw2ICsyNDksMTggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3Bl
Y3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB9CiB9CiAKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9y
OjpDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKKyAg
ICBBU1NFUlQoISFtX2NsaWVudCAhPSAhIWNsaWVudCk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKworICAgIC8vIFNl
bmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMgd2hldGhlciB0aGUgY2xpZW50IGFs
bG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3Nh
Z2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzE3LDYgKzM0MCwxMCBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmds
ZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgfSk7CiAKKyAgICBtX2F1
dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9IGFkb3B0TlMoW0pTUmVtb3RlSW5zcGVjdG9y
T2JqQ0FkYXB0ZXIgbmV3XSk7CisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOm1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxl
Y3RvcihjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UpIG5hbWU6QFdJUkF1dG9tYXRpb25BdmFp
bGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCiAgICAgbm90aWZ5X3Bv
c3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKIH0KIApAQCAtMzU4
LDYgKzM4NSw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJj
ZSBzb3VyY2UpCiAgICAgfQogCiAgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2VuKTsKKwor
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6
bV9hdXRvbWF0aW9uQXZhaWxhYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOwogfQogCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQpAQCAtNTQ0LDYgKzU3Myw5
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQogICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0
KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVu
dCAmJiBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsKKyAgICBbbWVzc2FnZSBz
ZXRPYmplY3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtl
eV07CisKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdl
LCBtZXNzYWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApp
bmRleCBlZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJiLi5kYTg4N2Q3Njdk
NWEyYWQxYmNiMWY2OGFiOTBjNTgwNjEwZjVmNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaApAQCAtMzAsMTUgKzMwLDE2IEBACiAvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1l
d29yayBvbiB0aGUgT1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQKIC8vIGlPUyBXZWJLaXQg
b24gdGhlIGRldmljZSBzaWRlLgogCi0jZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIg
ICAgICAgICAgICAgICAyNzc1MwotI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAg
ICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCi0jZGVmaW5lIFdJUlhQQ0RlYnVn
Z2VyU2VydmljZU5hbWUgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rvci5kZWJ1
Z2dlciIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCi0jZGVmaW5lIFdJUlNlcnZpY2VBdmFp
bGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxh
YmlsaXR5X2NoZWNrIgotI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAg
ICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCi0jZGVmaW5lIFdJUlNlcnZp
Y2VEaXNhYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQu
ZGlzYWJsZWQiCi0jZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAg
ICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIK
LQorI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgICAgICAg
Mjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZp
Y2VOYW1lICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdn
ZXIiCisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAgICAg
ICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgorI2RlZmluZSBXSVJTZXJ2aWNl
QXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3JkLmF2YWlsYWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmlj
YXRpb24gICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgor
I2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgImNv
bS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNw
ZWN0aW9uRW5hYmxlZFN0YXRlICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1
dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCisjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFi
aWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21h
dGlvbl9hdmFpbGFiaWxpdHlfY2hhbmdlZCIKKyNkZWZpbmUgV0lSQXV0b21hdGlvbkF2YWlsYWJp
bGl0eUNoZWNrTm90aWZpY2F0aW9uICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdXRvbWF0
aW9uX2F2YWlsYWJpbGl0eV9jaGVjayIKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZp
ZXJLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5l
IFdJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcktleSIKQEAgLTY3LDYgKzY4LDcgQEAKICNkZWZpbmUgV0lSUmF3RGF0
YUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKICNkZWZpbmUg
V0lSTGlzdGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3Nh
Z2UiCiAjZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJ
Ukxpc3RpbmdLZXkiCisjZGVmaW5lIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5ICAgICAg
ICAgICBAIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IgogI2RlZmluZSBXSVJEZXN0aW5h
dGlvbktleSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKICNkZWZp
bmUgV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlv
bkRpZWRNZXNzYWdlIgogI2RlZmluZSBXSVJUeXBlS2V5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQCJXSVJUeXBlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxNWRkMDY2
MGE0ZjQ1Y2QzNmZiODJhMGQzNTZjYzEzNWYxMWJiZmJhLi5lMzgwOGU5YThhNzFmOTM4ZmNmNjgx
ODA4Y2UyNWQxZjMxNjhhNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTcyLDYg
KzE3Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dp
bmRvd0ZlYXR1cmVzLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5tbQorICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkNvbnRyb2xs
ZXIubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8u
bW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCiAgICAgVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25Db250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmJiZjQ0NDhlZjU5OGIyNDdlZmE0ZGFjMzU1NGJlYzM1NmNjYzg0OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uQ29udHJv
bGxlckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKEJPT0wpYWxsb3dzUmVtb3RlQXV0b21hdGlvbjsK
Ky0gKHZvaWQpcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOworQGVuZAorCitXS19DTEFTU19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKK0BpbnRlcmZhY2UgX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tB
dXRvbWF0aW9uQ29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKKysgKF9XS0F1dG9tYXRpb25D
b250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dG9tYXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzA4MWY3ZDU3MjIx
ZTA0M2JkN2RlY2NkZTg2Njk2ZTIzYjY3M2RkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbQpAQCAt
MCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
X1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaCIKKworI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CisKK2NsYXNzIFJlbW90ZUlu
c3BlY3RvckNsaWVudEFkYXB0ZXIgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudCB7CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcihfV0tB
dXRvbWF0aW9uQ29udHJvbGxlciAqKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JDbGll
bnRBZGFwdGVyKCk7CisgICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lv
bigpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdlYktpdDo6V2Vha09iakNQdHI8X1dLQXV0
b21hdGlvbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKK307CisKK1JlbW90ZUluc3BlY3RvckNs
aWVudEFkYXB0ZXI6OlJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXIoX1dLQXV0b21hdGlvbkNv
bnRyb2xsZXIgKmNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sK
KyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5z
cGVjdG9yQ2xpZW50KHRoaXMpOworfQorCitSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjp+
UmVtb3RlSW5zcGVjdG9yQ2xpZW50QWRhcHRlcigpCit7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudChudWxscHRyKTsK
K30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyOjpyZW1vdGVBdXRvbWF0aW9u
QWxsb3dlZCgpIGNvbnN0Cit7CisgICAgaWYgKFttX2NvbnRyb2xsZXIuZ2V0KCkgZGVsZWdhdGVd
KQorICAgICAgICByZXR1cm4gW1ttX2NvbnRyb2xsZXIuZ2V0KCkgZGVsZWdhdGVdIGFsbG93c1Jl
bW90ZUF1dG9tYXRpb25dOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvckNsaWVudEFkYXB0ZXI6OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigpCit7CisgICAg
aWYgKCFyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoW21fY29udHJvbGxlci5nZXQoKSBkZWxlZ2F0ZV0pCisgICAgICAgIFtbbV9jb250cm9sbGVy
LmdldCgpIGRlbGVnYXRlXSByZXF1ZXN0QXV0b21hdGlvblNlc3Npb25dOworfQorCitAaW1wbGVt
ZW50YXRpb24gX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVJbnNwZWN0b3JDbGllbnRBZGFwdGVyPiBfY2xpZW50QWRhcHRlcjsKKyAgICBpZCA8X1dL
QXV0b21hdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZT4gX2RlbGVnYXRlOworfQorCisrIChfV0tBdXRv
bWF0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXIKK3sKKyAgICBzdGF0aWMgX1dLQXV0
b21hdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXI7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBj
b250cm9sbGVyID0gW1tfV0tBdXRvbWF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF07CisgICAg
fSk7CisKKyAgICByZXR1cm4gY29udHJvbGxlcjsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZToo
aWQgPF9XS0F1dG9tYXRpb25Db250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgLy8g
Rm9yY2UgdGhlIG9sZCBhZGFwdGVyIHRvIGRpc2Nvbm5lY3QgZnJvbSBSZW1vdGVJbnNwZWN0b3Ig
Zmlyc3QuCisgICAgX2NsaWVudEFkYXB0ZXIgPSBuaWw7CisKKyAgICBfZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIGlmIChkZWxlZ2F0ZSkKKyAgICAgICAgX2NsaWVudEFkYXB0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudEFkYXB0ZXI+KHNlbGYpOworfQorCitA
ZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMWViOWNkNDc5NDI0NjVjNGU4OTZkNmI3NmNkYzViNDlhOTVkZjQx
Ni4uYjU1MDVmYzk3NjU2YjBjNzY1YmM3YjNkMjYwYjYxZmQ0MzJmYWFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzOCw2
ICsxMjM4LDggQEAKIAkJOTNBODhCNDcxQkM4ODI5NzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNB
ODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQk5
M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdB
RjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUU3
MTRDNDFDMTI0OUZGMDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU3MTRDMDFDMTI0OUU2
MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CisJCTk5RTcxNEM1
MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNzE0QzExQzEyNDlFNjAwNjY1
QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUY1NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENo
aWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87
IH07CiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRG
ODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsK
IAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2
QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLzsgfTsKQEAgLTM0NjMsNiAr
MzQ2NSw4IEBACiAJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhpdFRlc3RSZXN1bHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8q
IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5RTcxNEMwMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0
aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0F1dG9tYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFB
IC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFn
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAw
MDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTM0Miw2
ICs1MzQ2LDggQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8q
IF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQk5OUU3MTRDMDFDMTI0
OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIubW0gKi8sCisJCQkJOTlFNzE0
QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJ
MUE1NzA0RjYxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAq
LywKIAkJCQkxQTU3MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mby5tbSAqLywKIAkJCQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3Rp
Y0xvZ2dpbmdEZWxlZ2F0ZS5oICovLApAQCAtNzg0Myw2ICs3ODQ5LDcgQEAKIAkJCQlFNDEzRjU5
RDFBQzFBREM0MDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDJFMDYxMDFBQTc1MjNCMDBCMTE2OTkgLyogTmV0d29ya0Nh
Y2hlSU9DaGFubmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVC
M0EgLyogX1dLQXV0b21hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2
RUNFMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzMUVFQkJEMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDY5
LDYgKzEwMDc2LDcgQEAKIAkJCQlCQ0ZENTQ4QjEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNG
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZCMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0Vy
cm9yUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OEI2RjA5MThGQ0E3MzMwMDhDQkE1MyAv
KiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5RTcxNEM0MUMxMjQ5
RkYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUM1NDI1NkI2MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDNTQyNTZCOTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NzE5M0JFMThDMTRBNDQwMDJEMEYxMiAvKiBXS0Zv
cm1TZWxlY3RDb250cm9sLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267487</attachid>
            <date>2015-12-16 13:22:21 -0800</date>
            <delta_ts>2015-12-16 15:35:18 -0800</delta_ts>
            <desc>Proposed Fix (v2)</desc>
            <filename>bug-151576-20151216132143.patch</filename>
            <type>text/plain</type>
            <size>35221</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODFhNDVjNWNiYmNkMmJjZjc2MGQ5YmY3MGRhZTIzZmY2NGYzM2JmLi5hYjIxNjc3YTk4MmViZDUy
MjMyMzg5NGYwODAwZmI2MWNjNTQwZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0xNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgaXMgdWx0aW1hdGVseSBkZWxlZ2F0ZWQgdmlhIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZSwgd2hpY2ggaXMgYW4gU1BJCisgICAgICAgIHRoYXQgYWxsb3dzIGNs
aWVudHMgdG8gaW5zdGFsbCBhbiBPYmplY3RpdmUtQyBkZWxlZ2F0ZSBmb3IgYXV0b21hdGlvbi4K
KworICAgICAgICBUaGUgc2V0dGluZyBmb3Igd2hldGhlciByZW1vdGUgYXV0b21hdGlvbiBpcyBh
bGxvd2VkIGlzIGluY2x1ZGVkIGluIHRoZQorICAgICAgICBsaXN0aW5nIHRoYXQgUmVtb3RlSW5z
cGVjdG9yIHNlbmRzIG91dC4gSXQgaXMgdXBkYXRlZCB3aGVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50CisgICAgICAgIGlzIGFzc2lnbmVkLCBvciB3aGVuIHRoZSBjbGllbnQgdXNlcyBhbiBOU05v
dGlmaWNhdGlvbiB0byBzaWduYWwgdGhhdCBpdCBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbToKKyAgICAgICAgKC1bSlNSZW1vdGVJbnNwZWN0b3JPYmpDQWRh
cHRlciBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKwogMjAxNS0xMi0xNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdvcmsgYXJvdW5kIGEgYnVnIGluIExMVk0gYnkg
ZmxpcHBpbmcgdGhlIHVuaWZpY2F0aW9uIG9yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2M2OWE1ZDM2M2I0
ZTgwODRlNzk4Yjc1OTU3ZmI2NGQ3YzU0NmViNi4uYzc2MTJiYmU4NDU1M2U5YTg1ZDAyYWMyZWZj
NjhiOTJlYjFjMzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTEyLTE2ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkg
Zm9yIHJlZ2lzdGVyaW5nIGFuIGF1dG9tYXRpb24gY29udHJvbGxlciB3aXRoIFJlbW90ZUluc3Bl
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dL
QXV0b21hdGlvbkRlbGVnYXRlIGlzIGEgbmV3IFNQSSB0aGF0IGFsbG93cyBXS1Byb2Nlc3NQb29s
IGNsaWVudHMgdG8gZGVjaWRlCisgICAgICAgIHBvbGljeSBhbmQgaW1wbGVtZW50IGFjdGlvbnMg
Zm9yIHJlbW90ZSBhdXRvbWF0aW9uLgorCisgICAgICAgIFRoZSBTUEkncyBpbXBsZW1lbnRhdGlv
biBjb25uZWN0cyB0aGUgY2xpZW50J3MgZGVsZWdhdGUgdG8gUmVtb3RlSW5zcGVjdG9yOjpDbGll
bnQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBkZWxlZ2F0ZSB0byBoYW5kbGUgc29tZSBjb21t
YW5kcywgc3VjaCBhcyByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24sCisgICAgICAgIHRoYXQgY29t
ZSBvdmVyIFhQQyBmcm9tIGFuIGV4dGVybmFsIHRlc3QgcnVubmVyIGJ1dCBhcmUgbm90IGFzc29j
aWF0ZWQgd2l0aCBhIHNwZWNpZmljCisgICAgICAgIGF1dG9tYXRpb24gdGFyZ2V0LgorCisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9uQ2xpZW50Ojp+
QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChBUEk6OkF1dG9tYXRpb25DbGllbnQ6OmFsbG93
c1JlbW90ZUF1dG9tYXRpb24pOgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9uQ2xpZW50OjpyZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfYXV0b21hdGlvbkRlbGVn
YXRlXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpBdXRvbWF0aW9uQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvbkNsaWVudDo6fkF1dG9tYXRpb25DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9u
U2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisKKyAgICAgICAgICAg
IEV4cGxpY2l0bHkgY2FsbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCksIHNpbmNlIHdlIHByZXZp
b3VzbHkgdXNlZCBzdGFydERpc2FibGVkKCkKKyAgICAgICAgICAgIHdoZW4gaW5zdGFsbGluZyBB
dXRvbWF0aW9uQ2xpZW50IGFzIHRoZSBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCB3aGVuIHVzaW5nIE5F
VFdPUktfU0VTU0lPTiBhZnRlciByMTkzOTcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCAwMjZjZDNi
YjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBmYjZiLi43MWNlNmM2NzdiMjMxOTA4NzBjMGRm
MDRlNjAzYmY0YzQ4ZGIyYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMzcsNiArMzcsNyBAQAog
CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NM
QVNTIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXI7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCkBAIC00OCw2ICs0OSwxMyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKIGNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgorICAgIGNsYXNzIENs
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAg
ICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkgPSAwOworICAgIH07
CisKICAgICBzdGF0aWMgdm9pZCBzdGFydERpc2FibGVkKCk7CiAgICAgc3RhdGljIFJlbW90ZUlu
c3BlY3RvciYgc2luZ2xldG9uKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJl
bW90ZUluc3BlY3Rvcj47CkBAIC01OCwxMCArNjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQqKTsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3RvckNsaWVudChS
ZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogCiAgICAgdm9pZCBzZXR1cEZhaWxlZCh1bnNpZ25l
ZCBpZGVudGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2lnbmVkIGlkZW50aWZp
ZXIpOwogICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQgaWRl
bnRpZmllcik7CisgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKSB7IHB1c2hM
aXN0aW5nc1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtMTIzLDYgKzEzMyw5IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0
aW9uOwogCisgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OworICAgIFJldGFpblB0cjxKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyPiBtX2F1dG9tYXRp
b25BdmFpbGFiaWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1
ZTsKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAgIGlu
dCBtX25vdGlmeVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMzYjY4
YWNmYzhkNjljZjI5MzlhMTE3YzFjNzZjNGFiZTEuLmM3N2U4Y2MzYzk2ODIxOGM5NjQ4MGQ5Zjdl
MzA1MTJiMmNmYTJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTQzLDYgKzQzLDE3IEBACiAj
aW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCitAaW50ZXJmYWNlIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIgOiBOU09i
amVjdAorLSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2U7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyCistICh2b2lkKWNsaWVudENh
cGFiaWxpdGllc0RpZENoYW5nZQoreworICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpz
aW5nbGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKK30KK0BlbmQKKwogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1h
Y2hQb3J0KCkKQEAgLTIzOCw2ICsyNDksMTggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0
ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAg
ICB9CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQo
UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlRfQVJHKGNsaWVu
dCwgY2xpZW50KTsKKyAgICBBU1NFUlQoISFtX2NsaWVudCAhPSAhIWNsaWVudCk7CisKKyAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9IGNsaWVu
dDsKKworICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMgd2hldGhl
ciB0aGUgY2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlzdGluZ3NT
b29uKCk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzE3LDYg
KzM0MCwxMCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAg
fSk7CiAKKyAgICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9IGFkb3B0TlMoW0pT
UmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIgbmV3XSk7CisgICAgTlNOb3RpZmljYXRpb25DZW50
ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOm1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyLmdldCgp
IHNlbGVjdG9yOkBzZWxlY3RvcihjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UpIG5hbWU6QFdJ
UkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwor
CiAgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9u
KTsKIH0KIApAQCAtMzU4LDYgKzM4NSw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50
ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAgICAgfQogCiAgICAgbm90aWZ5X2NhbmNlbChtX25v
dGlmeVRva2VuKTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cmVtb3ZlT2JzZXJ2ZXI6bV9hdXRvbWF0aW9uQXZhaWxhYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOwog
fQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQpA
QCAtNTQ0LDYgKzU3Myw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3co
KQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmpl
Y3Q6bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0Fs
bG93ZWQgPSBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsK
KyAgICBbbWVzc2FnZSBzZXRPYmplY3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRv
bWF0aW9uRW5hYmxlZEtleV07CisKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJ
Ukxpc3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JDb25zdGFudHMuaAppbmRleCBlZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVm
ZWJiLi5kYTg4N2Q3NjdkNWEyYWQxYmNiMWY2OGFiOTBjNTgwNjEwZjVmNzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMzAsMTUgKzMwLDE2IEBACiAvLyB0aGUgV2Vi
SW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgT1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQK
IC8vIGlPUyBXZWJLaXQgb24gdGhlIGRldmljZSBzaWRlLgogCi0jZGVmaW5lIFdJUlNpbXVsYXRv
clRDUFBvcnROdW1iZXIgICAgICAgICAgICAgICAyNzc1MwotI2RlZmluZSBXSVJYUENNYWNoUG9y
dE5hbWUgICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCi0jZGVm
aW5lIFdJUlhQQ0RlYnVnZ2VyU2VydmljZU5hbWUgICAgICAgICAgICAgICAiY29tLmFwcGxlLndl
Ymluc3BlY3Rvci5kZWJ1Z2dlciIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNh
dGlvbiAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCi0jZGVmaW5l
IFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmlu
c3BlY3RvcmQuYXZhaWxhYmlsaXR5X2NoZWNrIgotI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5v
dGlmaWNhdGlvbiAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCi0j
ZGVmaW5lIFdJUlNlcnZpY2VEaXNhYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxl
LndlYmluc3BlY3RvcmQuZGlzYWJsZWQiCi0jZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25F
bmFibGVkU3RhdGUgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3Bl
Y3Rpb25fZW5hYmxlZCIKLQorI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAg
ICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJY
UENEZWJ1Z2dlclNlcnZpY2VOYW1lICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJp
bnNwZWN0b3IuZGVidWdnZXIiCisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24gICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgorI2Rl
ZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gICAgICAgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2Vydmlj
ZUVuYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVj
dG9yZC5lbmFibGVkIgorI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAg
ICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBX
SVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAgICAgICAgICAgImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCisjZGVmaW5lIFdJUkF1
dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uICAiY29tLmFwcGxlLndlYmlu
c3BlY3RvcmQuYXV0b21hdGlvbl9hdmFpbGFiaWxpdHlfY2hhbmdlZCIKKyNkZWZpbmUgV0lSQXV0
b21hdGlvbkF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uICAgICJjb20uYXBwbGUud2ViaW5z
cGVjdG9yZC5hdXRvbWF0aW9uX2F2YWlsYWJpbGl0eV9jaGVjayIKIAogI2RlZmluZSBXSVJBcHBs
aWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZp
ZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSAgICAgICBA
IldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSIKQEAgLTY3LDYgKzY4LDcgQEAKICNk
ZWZpbmUgV0lSUmF3RGF0YUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0
YUtleSIKICNkZWZpbmUgV0lSTGlzdGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAi
V0lSTGlzdGluZ01lc3NhZ2UiCiAjZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUkxpc3RpbmdLZXkiCisjZGVmaW5lIFdJUlJlbW90ZUF1dG9tYXRpb25F
bmFibGVkS2V5ICAgICAgICAgICBAIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IgogI2Rl
ZmluZSBXSVJEZXN0aW5hdGlvbktleSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5h
dGlvbktleSIKICNkZWZpbmUgV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAg
IEAiV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlIgogI2RlZmluZSBXSVJUeXBlS2V5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCAxNWRkMDY2MGE0ZjQ1Y2QzNmZiODJhMGQzNTZjYzEzNWYxMWJiZmJhLi45ODRhMWQ2
ZTk4NTZmYzc3NTAyOWI0Mjc2YWM5NmE2ZGMxZTkwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMTg5LDYgKzE4OSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCiAKKyAgICBVSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvbkNsaWVudC5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQogICAgIFVJUHJv
Y2Vzcy9Db2NvYS9GaW5kQ2xpZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYzk3MTMwMzA5NWE3YWMx
NmUyNDg5NGVkOGMxMjJiMGM1NWFmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBUElBdXRvbWF0aW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJQXV0
b21hdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dzUmVtb3RlQXV0b21hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9u
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQor
CisjZW5kaWYgLy8gQVBJQXV0b21hdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMThmZGE1MGNjMTU0
NDA3ZmY0MTY4ZDk2OGMwMzIxN2M2MTM3YmRiNC4uOWU1YjI4YzhlOWZhODgxMWE2MDgwODdhZmQ2
NGE1Mjc0MWQ3NTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAorI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2Rl
bC5oIgogI2ltcG9ydCAiRG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRp
ZXMuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3du
bG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTQ5LDYgKzUxLDcg
QEAKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CisgICAgV2ViS2l0
OjpXZWFrT2JqQ1B0cjxpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPj4gX2F1dG9tYXRpb25EZWxl
Z2F0ZTsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPj4g
X2Rvd25sb2FkRGVsZWdhdGU7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMTksNiArMjIyLDE3
IEBAIC0gKHZvaWQpX3NldERvd25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRl
Pilkb3dubG9hZERlbGVnYXRlCiAgICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUp
KTsKIH0KIAorLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0
ZQoreworICAgIHJldHVybiBfYXV0b21hdGlvbkRlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwor
fQorCistICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVs
ZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQoreworICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBh
dXRvbWF0aW9uRGVsZWdhdGU7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihhdXRvbWF0aW9uRGVs
ZWdhdGUpKTsKK30KKwogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCiB7CiAgICAgX3Byb2Nl
c3NQb29sLT53YXJtSW5pdGlhbFByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA2ZDA5
MWQ4ODczYjNmYzYwMDcyODVjYTExNzM0MmYxM2EyM2MxZGI4Li4xMjkxZWIwOWE0ODc1YTZlZWQz
YzNjYWU1ODViOGY3NzliMGFiNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogQGNsYXNzIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRG93
bmxvYWREZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBXS1Byb2Nlc3NQb29sICgpCkBAIC00OCw2ICs0
OSw4IEBACiAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9u
YXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5IFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBX
S19JT1NfVEJBKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93
bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0
ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxl
Z2F0ZTopIGlkPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZTsKKwog
CiArIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICop
Y29udGFpbmVyVVJMOwogKyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRo
VVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTCBidW5kbGVJZGVudGlmaWVySWZOb3RJbkNvbnRhaW5l
cjooTlNTdHJpbmcgKilidW5kbGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2ViNTQ1ODQxY2Q5OGZmNmJiNzQwM2NlMmJjZWU2OGExMTQwMDE3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlv
bkRlbGVnYXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0Bwcm90b2NvbCBfV0tB
dXRvbWF0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCistIChCT09MKV9hbGxvd3NS
ZW1vdGVBdXRvbWF0aW9uOworLSAodm9pZClfcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOworQGVu
ZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YWI5OTFjNGFiMWIw
MDRhY2UwNmE3NjBiNjJiZDk5NDEyOTdkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEF1dG9tYXRpb25DbGllbnRfaAorI2RlZmluZSBBdXRvbWF0
aW9uQ2xpZW50X2gKKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0ICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisjaW1wb3J0ICJXZWFrT2Jq
Q1B0ci5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CisKK0Bw
cm90b2NvbCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvbkNsaWVu
dCwgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgQXV0b21hdGlvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPik7CisgICAg
dmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpOworCitwcml2YXRlOgorICAgIC8vIEFQSTo6QXV0
b21hdGlvbkNsaWVudAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NSZW1vdGVBdXRvbWF0aW9uKFdl
YlByb2Nlc3NQb29sKikgb3ZlcnJpZGUgeyByZXR1cm4gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oV2ViUHJvY2Vz
c1Bvb2wqKSBvdmVycmlkZSB7IHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigpOyB9CisKKyAgICAv
LyBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudAorICAgIHZpcnR1YWwgYm9vbCByZW1vdGVBdXRvbWF0
aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXV0
b21hdGlvblNlc3Npb24oKSBvdmVycmlkZTsKKyAgICAKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
QXV0b21hdGlvbkRlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKKworICAgIHN0cnVjdCB7CisgICAgICAg
IGJvb2wgYWxsb3dzUmVtb3RlQXV0b21hdGlvbiA6IDE7CisgICAgICAgIGJvb2wgcmVxdWVzdEF1
dG9tYXRpb25TZXNzaW9uIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorCisjZW5kaWYgLy8gQXV0b21hdGlvbkNsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
bkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xp
ZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJiZjQwMjNhYjNhNWJjOTg0MjNkZmQ4NWFkYTA3N2Y5YzQxOWVh
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvbkNsaWVudC5tbQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXV0b21hdGlvbkNsaWVudDo6QXV0b21hdGlvbkNs
aWVudChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICA6IG1fZGVsZWdh
dGUoZGVsZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuYWxsb3dzUmVtb3RlQXV0b21h
dGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9hbGxvd3NSZW1v
dGVBdXRvbWF0aW9uKV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3JlcXVlc3RB
dXRvbWF0aW9uU2Vzc2lvbildOworICAgIAorICAgIC8vIFdlIGRvbid0IHdhbnQgUmVtb3RlSW5z
cGVjdG9yIHRvIG9wZW4gYW4gWFBDIGNvbm5lY3Rpb24gdW5sZXNzIGl0IGNhbiByZXBvcnQgaW5z
cGVjdGlvbiB0YXJnZXRzLAorICAgIC8vIGF1dG9tYXRpb24gdGFyZ2V0cywgb3Igd2UgcmVjZWl2
ZSBhIG5vdGlmaWNhdGlvbiB0byBwcmUtZW1wdGl2ZWx5IHJlZ2lzdGVyIHdpdGggd2ViaW5zcGVj
dG9yZC4KKyAgICBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RGlzYWJsZWQoKTsKKyAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlzKTsKK30K
KworQXV0b21hdGlvbkNsaWVudDo6fkF1dG9tYXRpb25DbGllbnQoKQoreworICAgIFJlbW90ZUlu
c3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KG51bGxwdHIpOwor
fQorCitib29sIEF1dG9tYXRpb25DbGllbnQ6OnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29u
c3QKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuYWxsb3dzUmVtb3RlQXV0b21hdGlvbikK
KyAgICAgICAgcmV0dXJuIFttX2RlbGVnYXRlLmdldCgpIF9hbGxvd3NSZW1vdGVBdXRvbWF0aW9u
XTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBdXRvbWF0aW9uQ2xpZW50OjpyZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24oKQoreworICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24pCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9yZXF1ZXN0
QXV0b21hdGlvblNlc3Npb25dOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBmYzExYjczYWMzYTJjOWRhOTQ2M2RiZWFkN2EzNzFkMzAwNjA1ODY5Li5k
YTc0MmFiOTEyNWY1MzI1YzRiNTBkMmFiZjkxMGU3Y2RhZTIxYzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRl
ICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC0xMzksNiArMTQwLDcgQEAgV2ViUHJvY2Vzc1Bvb2w6
OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyhmYWxzZSkKICAgICAsIG1fcHJv
Y2Vzc1dpdGhQYWdlQ2FjaGUoMCkKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3Jv
dXA6OmNyZWF0ZU5vbk51bGwoKSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4o
KSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkK
QEAgLTI3OSw2ICsyODEsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IGRvd24KICAgICAgICAgbV9k
b3dubG9hZENsaWVudCA9IFdURjo6bW92ZShkb3dubG9hZENsaWVudCk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvbkNsaWVudD4gYXV0b21hdGlvbkNsaWVudCkKK3sKKyAgICBpZiAoIWF1dG9tYXRpb25D
bGllbnQpCisgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgIGVsc2UKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gV1RGOjptb3ZlKGF1dG9tYXRpb25DbGllbnQpOworfQorCisKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVy
T2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtNjM0
LDcgKzY0NSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MoKQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLy8gSW5pdGlh
bGl6ZSByZW1vdGUgaW5zcGVjdG9yIGNvbm5lY3Rpb24gbm93IHRoYXQgd2UgaGF2ZSBhIHN1Yi1w
cm9jZXNzIHRoYXQgaXMgaG9zdGluZyBvbmUgb2Ygb3VyIHdlYiB2aWV3cy4KLSAgICBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCk7IAorICAgIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zdGFydCgpOwogI2VuZGlmCiAKICAgICByZXR1cm4gcHJv
Y2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYjNi
ZWEwNDMyYzY2ZWYwNTE0MmRhNGM0MzM0MTBlMmY3NGZlOGJlMi4uNWI2NTAxZjA3MTQ1MDE4YjRj
MzYzOTUyNjU3OGE0NDY0NjcwOGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKQEAgLTcwLDYgKzcwLDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKICNlbmRp
ZgogCiBuYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBEb3du
bG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CkBAIC0xMzQsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJh
c2UqKTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KTsKICAgICB2b2lkIHNldERvd25sb2FkQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50Pik7CisgICAgdm9pZCBzZXRBdXRvbWF0
aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KTsKIAogICAg
IHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9ubHkg
YmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgogICAgIHVuc2ln
bmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbmZpZ3Vy
YXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9u
LT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTQxOCw2ICs0MjAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViQ29udGV4dENsaWVudCBtX2NsaWVudDsKICAgICBXZWJDb250ZXh0Q29ubmVjdGlv
bkNsaWVudCBtX2Nvbm5lY3Rpb25DbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3NjI5Yzc3YTBjZDliMzBiZTYyZTEzOTRjYjhlMzEzODkxYWJmMjAwLi4wN2VkODI2MGM0YTU1
NmQ0NjlhZDdkNTI0ODE4Yzk0MDlhMGJiNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQ1LDYgKzEyNDUsMTAgQEAKIAkJ
OTNBODhCNDcxQkM4ODI5NzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODhCNDIxQkM4ODI4QzAw
QUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FG
MDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdL
UGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNF
NkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUM4MUQ1OTFDMjBFMUU1MDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovOyB9OworCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKKwkJ
OTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcw
MDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CisJCTk5RTcxNEM1MUMxMjRB
MDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBf
V0tBdXRvbWF0aW9uRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNz
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1
NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJOUY1
NEY4OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQxNjQ4QUUw
RTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OwogCQk5RkI1RjM5
NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZBODAwMDJDMjVC
RiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovOyB9OwpAQCAtMzQ1MSw2ICszNDU1LDEwIEBA
CiAJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxv
YWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdl
TG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRF
RDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1
dG9tYXRpb25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdXRvbWF0aW9uQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUM4
MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0
aW9uRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21h
dGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhFMTY0
ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFu
YWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdp
blByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1
RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMubW07IHBh
dGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ5MzIsNiArNDk0MCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTUxN0RENUJCMTgwREE3QzQwMDgxNjYwQiAvKiBEYXRhYmFzZXMgKi8sCisJCQkJ
OTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLywKKwkJCQk5
OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLywKIAkJCQk4
Mzg5MUI2QTFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywK
IAkJCQk4Mzg5MUI2QjFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
bW0gKi8sCiAJCQkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lmgg
Ki8sCkBAIC01MzMwLDYgKzUzNDAsNyBAQAogCQkJCTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAv
KiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovLAogCQkJCTM3QTVFMDExMThCQkY5MzcwMDBB
MDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSAqLywKIAkJCQkzNzlBODczNTE4QkJG
QTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oICovLAorCQkJ
CTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCAqLywK
IAkJCQkxQTU3MDRGNjFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oICovLAogCQkJCTFBNTcwNEY1MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVs
ZW1lbnRJbmZvLm1tICovLAogCQkJCTgzODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggKi8sCkBAIC02MzAwLDYgKzYzMTEsNyBAQAogCQkJCTM3
QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLywKIAkJCQlCQzhBNTAxMzExNzY1RjQ1
MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAvKiBtYWMg
Ki8sCisJCQkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQu
aCAqLywKIAkJCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGll
bnQuaCAqLywKIAkJCQk4Mzg5MUI2MjFBNjhCMzQyMDAzMEYzODYgLyogQVBJRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaCAqLywKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93
bmxvYWRDbGllbnQuaCAqLywKQEAgLTc4MzYsNiArNzg0OCw3IEBACiAJCQkJRTQxM0Y1OUQxQUMx
QURDNDAwMzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQyRTA2MTAxQUE3NTIzQjAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlP
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8q
IF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0UxQTBE
MDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMx
RUVCQkQxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNzk1OSw2ICs3OTcy
LDcgQEAKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRl
Q29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyog
U2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QzgxRDVBMUMyMEU3RTIwMDVD
NEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjBFNTEy
RENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTIxNzQ2MTE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjRCRUQ1MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBI
ZWFkZXJzICovLApAQCAtODM5Myw2ICs4NDA3LDcgQEAKIAkJCQkxQTNDODg4MDE4QTVBQkFFMDBD
NEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhF
QjExNzE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRDU5N0QwMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzUmVmLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21h
dGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5
IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2
NjE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQkFBQ0VCMTQ1MjI1RTMwMDUzRjgyRiAvKiBXS1Byb2Nlc3NHcm91cC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDE0Niw2ICsxMDE2MSw3IEBACiAJCQkJMUE3RTM3NzgxOEU0QTRGRTAwM0QwRkZG
IC8qIFdLU2NyaXB0TWVzc2FnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTU1MThCQkUw
NDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUNEMUM2
NjFCMzRCOURDMDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFDRDFDNUQxQjM0OTNBRjAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmln
aW5SZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MDMxMjRGRjAyNzAwNjhGMjBBIC8q
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1QThEMkQ4
MTg3RDMwNDAwMEMzOUM5RSAvKiBXS1Nlc3Npb25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267501</attachid>
            <date>2015-12-16 15:35:22 -0800</date>
            <delta_ts>2016-01-04 14:10:20 -0800</delta_ts>
            <desc>Proposed Fix (v2, revised)</desc>
            <filename>bug-151576-20151216153443.patch</filename>
            <type>text/plain</type>
            <size>34814</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODFhNDVjNWNiYmNkMmJjZjc2MGQ5YmY3MGRhZTIzZmY2NGYzM2JmLi5hYjIxNjc3YTk4MmViZDUy
MjMyMzg5NGYwODAwZmI2MWNjNTQwZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0xMi0xNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgaXMgdWx0aW1hdGVseSBkZWxlZ2F0ZWQgdmlhIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZSwgd2hpY2ggaXMgYW4gU1BJCisgICAgICAgIHRoYXQgYWxsb3dzIGNs
aWVudHMgdG8gaW5zdGFsbCBhbiBPYmplY3RpdmUtQyBkZWxlZ2F0ZSBmb3IgYXV0b21hdGlvbi4K
KworICAgICAgICBUaGUgc2V0dGluZyBmb3Igd2hldGhlciByZW1vdGUgYXV0b21hdGlvbiBpcyBh
bGxvd2VkIGlzIGluY2x1ZGVkIGluIHRoZQorICAgICAgICBsaXN0aW5nIHRoYXQgUmVtb3RlSW5z
cGVjdG9yIHNlbmRzIG91dC4gSXQgaXMgdXBkYXRlZCB3aGVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50CisgICAgICAgIGlzIGFzc2lnbmVkLCBvciB3aGVuIHRoZSBjbGllbnQgdXNlcyBhbiBOU05v
dGlmaWNhdGlvbiB0byBzaWduYWwgdGhhdCBpdCBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbToKKyAgICAgICAgKC1bSlNSZW1vdGVJbnNwZWN0b3JPYmpDQWRh
cHRlciBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKwogMjAxNS0xMi0xNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdvcmsgYXJvdW5kIGEgYnVnIGluIExMVk0gYnkg
ZmxpcHBpbmcgdGhlIHVuaWZpY2F0aW9uIG9yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2M2OWE1ZDM2M2I0
ZTgwODRlNzk4Yjc1OTU3ZmI2NGQ3YzU0NmViNi4uNzhmOTRiNWEzMWI0NmFhMDI4MjMxMzIyMGRk
NjViMTI3ZjYwNzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTEyLTE2ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkg
Zm9yIHJlZ2lzdGVyaW5nIGFuIGF1dG9tYXRpb24gY29udHJvbGxlciB3aXRoIFJlbW90ZUluc3Bl
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dL
QXV0b21hdGlvbkRlbGVnYXRlIGlzIGEgbmV3IFNQSSB0aGF0IGFsbG93cyBXS1Byb2Nlc3NQb29s
IGNsaWVudHMgdG8gZGVjaWRlCisgICAgICAgIHBvbGljeSBhbmQgaW1wbGVtZW50IGFjdGlvbnMg
Zm9yIHJlbW90ZSBhdXRvbWF0aW9uLgorCisgICAgICAgIFRoZSBTUEkncyBpbXBsZW1lbnRhdGlv
biBjb25uZWN0cyB0aGUgY2xpZW50J3MgZGVsZWdhdGUgdG8gUmVtb3RlSW5zcGVjdG9yOjpDbGll
bnQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBkZWxlZ2F0ZSB0byBoYW5kbGUgc29tZSBjb21t
YW5kcywgc3VjaCBhcyByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24sCisgICAgICAgIHRoYXQgY29t
ZSBvdmVyIFhQQyBmcm9tIGFuIGV4dGVybmFsIHRlc3QgcnVubmVyIGJ1dCBhcmUgbm90IGFzc29j
aWF0ZWQgd2l0aCBhIHNwZWNpZmljCisgICAgICAgIGF1dG9tYXRpb24gdGFyZ2V0LgorCisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9uQ2xpZW50Ojp+
QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChBUEk6OkF1dG9tYXRpb25DbGllbnQ6OmFsbG93
c1JlbW90ZUF1dG9tYXRpb24pOgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9uQ2xpZW50OjpyZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfYXV0b21hdGlvbkRlbGVn
YXRlXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpBdXRvbWF0aW9uQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvbkNsaWVudDo6fkF1dG9tYXRpb25DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9u
U2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCB3aGVuIHVzaW5nIE5FVFdPUktf
U0VTU0lPTiBhZnRlciByMTkzOTcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4
MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBmYjZiLi43MWNlNmM2NzdiMjMxOTA4NzBjMGRmMDRlNjAz
YmY0YzQ4ZGIyYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMzcsNiArMzcsNyBAQAogCiBPQkpD
X0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIEpT
UmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXI7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBA
IC00OCw2ICs0OSwxMyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmly
dHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkgPSAwOworICAgIH07CisKICAg
ICBzdGF0aWMgdm9pZCBzdGFydERpc2FibGVkKCk7CiAgICAgc3RhdGljIFJlbW90ZUluc3BlY3Rv
ciYgc2luZ2xldG9uKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUlu
c3BlY3Rvcj47CkBAIC01OCwxMCArNjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZE1lc3Nh
Z2VUb1JlbW90ZSh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
CiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3Bl
Y3Rpb25UYXJnZXQqKTsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJ
bnNwZWN0b3I6OkNsaWVudCopOwogCiAgICAgdm9pZCBzZXR1cEZhaWxlZCh1bnNpZ25lZCBpZGVu
dGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpOwog
ICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQgaWRlbnRpZmll
cik7CisgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKSB7IHB1c2hMaXN0aW5n
c1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
OyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtMTIzLDYgKzEzMyw5IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOwog
CisgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAg
IFJldGFpblB0cjxKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyPiBtX2F1dG9tYXRpb25BdmFp
bGFiaWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAg
ICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAgIGludCBtX25v
dGlmeVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhk
NjljZjI5MzlhMTE3YzFjNzZjNGFiZTEuLjdkNGFkMjllOGE1MzZlN2YwZDQ3YTA4ZDdiM2QzNjZh
NWQ2NjZiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTQzLDYgKzQzLDE3IEBACiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCitAaW50ZXJmYWNlIEpTUmVtb3RlSW5zcGVjdG9yT2JqQ0FkYXB0ZXIgOiBOU09iamVjdAor
LSAodm9pZCljbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyCistICh2b2lkKWNsaWVudENhcGFiaWxp
dGllc0RpZENoYW5nZQoreworICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0
b24oKS5jbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKK30KK0BlbmQKKwogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0
KCkKQEAgLTIzOCw2ICsyNDksMTggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB9CiB9
CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQoUmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xp
ZW50KTsKKyAgICBBU1NFUlQoISFtX2NsaWVudCAhPSAhIWNsaWVudCk7CisKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKwor
ICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMgd2hldGhlciB0aGUg
Y2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7
Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzE3LDYgKzM0MCwx
MCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgfSk7CiAK
KyAgICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9IGFkb3B0TlMoW0pTUmVtb3Rl
SW5zcGVjdG9yT2JqQ0FkYXB0ZXIgbmV3XSk7CisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNl
bnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBbY2VudGVy
IGFkZE9ic2VydmVyOm1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyLmdldCgpIHNlbGVj
dG9yOkBzZWxlY3RvcihjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UpIG5hbWU6QFdJUkF1dG9t
YXRpb25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCiAgICAg
bm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKIH0K
IApAQCAtMzU4LDYgKzM4NSw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwo
U3RvcFNvdXJjZSBzb3VyY2UpCiAgICAgfQogCiAgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRv
a2VuKTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6bV9hdXRvbWF0aW9uQXZhaWxhYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOworICAgIG1f
YXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyID0gbmlsOwogfQogCiB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQpAQCAtNTQ0LDYgKzU3NCw5IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQogICAgIFJldGFpblB0cjxO
U011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0KCkg
Zm9yS2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVudCAm
JiBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsKKyAgICBbbWVzc2FnZSBzZXRP
YmplY3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleV07
CisKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBt
ZXNzYWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRl
eCBlZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJiLi5jN2E0ODQ0MWRkYTk3
M2NmNTEzNThlMzBjOTQzOTIzNGYxNzdhMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25z
dGFudHMuaApAQCAtMzAsMTUgKzMwLDE1IEBACiAvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29y
ayBvbiB0aGUgT1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQKIC8vIGlPUyBXZWJLaXQgb24g
dGhlIGRldmljZSBzaWRlLgogCi0jZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAg
ICAgICAgICAgICAyNzc1MwotI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCi0jZGVmaW5lIFdJUlhQQ0RlYnVnZ2Vy
U2VydmljZU5hbWUgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rvci5kZWJ1Z2dl
ciIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAgICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCi0jZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFi
aWxpdHlDaGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmls
aXR5X2NoZWNrIgotI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAgICAg
ICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCi0jZGVmaW5lIFdJUlNlcnZpY2VE
aXNhYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZGlz
YWJsZWQiCi0jZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAgICAi
Y29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIKLQor
I2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgICAgICAgMjc3
NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZpY2VO
YW1lICAgICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdnZXIi
CisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAgICAgICAi
Y29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgorI2RlZmluZSBXSVJTZXJ2aWNlQXZh
aWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3Jk
LmF2YWlsYWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRp
b24gICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgorI2Rl
ZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZFN0YXRlICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9t
YXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCisjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxp
dHlDaGFuZ2VkTm90aWZpY2F0aW9uICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGlv
bl9hdmFpbGFiaWxpdHlfY2hhbmdlZCIKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZp
ZXJLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5l
IFdJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcktleSIKQEAgLTY3LDYgKzY3LDcgQEAKICNkZWZpbmUgV0lSUmF3RGF0
YUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKICNkZWZpbmUg
V0lSTGlzdGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3Nh
Z2UiCiAjZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJ
Ukxpc3RpbmdLZXkiCisjZGVmaW5lIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5ICAgICAg
ICAgICBAIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IgogI2RlZmluZSBXSVJEZXN0aW5h
dGlvbktleSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKICNkZWZp
bmUgV0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlv
bkRpZWRNZXNzYWdlIgogI2RlZmluZSBXSVJUeXBlS2V5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQCJXSVJUeXBlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxNWRkMDY2
MGE0ZjQ1Y2QzNmZiODJhMGQzNTZjYzEzNWYxMWJiZmJhLi45ODRhMWQ2ZTk4NTZmYzc3NTAyOWI0
Mjc2YWM5NmE2ZGMxZTkwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg5LDYg
KzE4OSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCiAKKyAgICBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5t
bQogICAgIFVJUHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9GaW5k
Q2xpZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21h
dGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYzk3MTMwMzA5NWE3YWMxNmUyNDg5NGVkOGMxMjJi
MGM1NWFmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUF1dG9tYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBBUElBdXRvbWF0aW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJQXV0b21hdGlvbkNsaWVudF9o
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Cit9CisKK25hbWVz
cGFjZSBBUEkgeworCitjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzUmVt
b3RlQXV0b21hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJ
QXV0b21hdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMThmZGE1MGNjMTU0NDA3ZmY0MTY4ZDk2OGMw
MzIxN2M2MTM3YmRiNC4uOWU1YjI4YzhlOWZhODgxMWE2MDgwODdhZmQ2NGE1Mjc0MWQ3NTIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9y
dCAiQXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2ltcG9ydCAi
RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKQEAgLTM3LDYg
KzM4LDcgQEAKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAi
X1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTQ5LDYgKzUxLDcgQEAKICNlbmRpZgogCiBA
aW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CisgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxp
ZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPj4gX2F1dG9tYXRpb25EZWxlZ2F0ZTsKICAgICBXZWJL
aXQ6OldlYWtPYmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPj4gX2Rvd25sb2FkRGVsZWdh
dGU7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMTksNiArMjIyLDE3IEBAIC0gKHZvaWQpX3Nl
dERvd25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVn
YXRlCiAgICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKIH0KIAorLSAoaWQg
PF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQoreworICAgIHJldHVy
biBfYXV0b21hdGlvbkRlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOworfQorCistICh2b2lkKV9z
ZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRp
b25EZWxlZ2F0ZQoreworICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdh
dGU7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihhdXRvbWF0aW9uRGVsZWdhdGUpKTsKK30KKwog
LSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCiB7CiAgICAgX3Byb2Nlc3NQb29sLT53YXJtSW5p
dGlhbFByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA2ZDA5MWQ4ODczYjNmYzYwMDcy
ODVjYTExNzM0MmYxM2EyM2MxZGI4Li4zZTExZGIxZTFjZGVmNjI5YWI4YzEyZDBmNGFjODlkMjky
ZWYwOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJ
X0VOQUJMRUQKIAogQGNsYXNzIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKK0Bwcm90b2Nv
bCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsK
IAogQGludGVyZmFjZSBXS1Byb2Nlc3NQb29sICgpCkBAIC00OCw2ICs0OSw3IEBACiAtICh2b2lk
KV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5IFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTop
IGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkPF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZTsKIAogKyAoTlNVUkwgKilfd2Vi
c2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTDsKICsg
KE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250
YWluZXJVUkwgYnVuZGxlSWRlbnRpZmllcklmTm90SW5Db250YWluZXI6KE5TU3RyaW5nICopYnVu
ZGxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYjU0NTg0MWNk
OThmZjZiYjc0MDNjZTJiY2VlNjhhMTE0MDAxN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitAcHJvdG9jb2wgX1dLQXV0b21hdGlvbkRlbGVnYXRl
IDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAoQk9PTClfYWxsb3dzUmVtb3RlQXV0b21hdGlvbjsK
Ky0gKHZvaWQpX3JlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbjsKK0BlbmQKKworI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWJiODdjN2RiYzVlMGRkZTVjMTFmNGM0MWM5YjNi
YzkyMjExM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBBdXRvbWF0aW9uQ2xpZW50X2gKKyNkZWZpbmUgQXV0b21hdGlvbkNsaWVudF9oCisKKyNp
bXBvcnQgIldLRm91bmRhdGlvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5z
cGVjdG9yLmg+CisKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
QXV0b21hdGlvbkNsaWVudCwgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgQXV0b21hdGlvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvbkRl
bGVnYXRlPik7CisgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpOworCitwcml2YXRlOgor
ICAgIC8vIEFQSTo6QXV0b21hdGlvbkNsaWVudAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NSZW1v
dGVBdXRvbWF0aW9uKFdlYlByb2Nlc3NQb29sKikgb3ZlcnJpZGUgeyByZXR1cm4gcmVtb3RlQXV0
b21hdGlvbkFsbG93ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oV2ViUHJvY2Vzc1Bvb2wqKSBvdmVycmlkZSB7IHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lv
bigpOyB9CisKKyAgICAvLyBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudAorICAgIHZpcnR1YWwgYm9v
bCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oKSBvdmVycmlkZTsKKworICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOworCisgICAgc3RydWN0
IHsKKyAgICAgICAgYm9vbCBhbGxvd3NSZW1vdGVBdXRvbWF0aW9uIDogMTsKKyAgICAgICAgYm9v
bCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24gOiAxOworICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEF1dG9t
YXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L0F1dG9tYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvbkNsaWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2RiYThjMmZhOWQyZThjNDAwOTdmNWYwMGU4
NDBkMDkwOGViZDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVudC5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0
ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90
ZUluc3BlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworQXV0b21hdGlvbkNsaWVudDo6QXV0b21hdGlvbkNsaWVudChpZCA8X1dLQXV0
b21hdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCit7
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuYWxsb3dzUmVtb3RlQXV0b21hdGlvbiA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9hbGxvd3NSZW1vdGVBdXRvbWF0aW9uKV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3JlcXVlc3RBdXRvbWF0aW9uU2Vzc2lv
bildOworCisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRSZW1vdGVJbnNwZWN0
b3JDbGllbnQodGhpcyk7Cit9CisKK0F1dG9tYXRpb25DbGllbnQ6On5BdXRvbWF0aW9uQ2xpZW50
KCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3Rv
ckNsaWVudChudWxscHRyKTsKK30KKworYm9vbCBBdXRvbWF0aW9uQ2xpZW50OjpyZW1vdGVBdXRv
bWF0aW9uQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmFsbG93
c1JlbW90ZUF1dG9tYXRpb24pCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfYWxs
b3dzUmVtb3RlQXV0b21hdGlvbl07CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXV0
b21hdGlvbkNsaWVudDo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkKK3sKKyAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKQorICAgICAgICBbbV9kZWxl
Z2F0ZS5nZXQoKSBfcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBmYzExYjczYWMzYTJjOWRhOTQ2M2RiZWFkN2EzNzFkMzAwNjA1ODY5Li5k
ZTQ4Y2EzNGNmNzIyNjM0NDVjZDc1MzYwNDg3ODA5ZjkxZTcwYjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRl
ICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC0xMzksNiArMTQwLDcgQEAgV2ViUHJvY2Vzc1Bvb2w6
OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyhmYWxzZSkKICAgICAsIG1fcHJv
Y2Vzc1dpdGhQYWdlQ2FjaGUoMCkKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3Jv
dXA6OmNyZWF0ZU5vbk51bGwoKSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4o
KSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkK
QEAgLTI3OSw2ICsyODEsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IGRvd24KICAgICAgICAgbV9k
b3dubG9hZENsaWVudCA9IFdURjo6bW92ZShkb3dubG9hZENsaWVudCk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvbkNsaWVudD4gYXV0b21hdGlvbkNsaWVudCkKK3sKKyAgICBpZiAoIWF1dG9tYXRpb25D
bGllbnQpCisgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgIGVsc2UKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gV1RGOjptb3ZlKGF1dG9tYXRpb25DbGllbnQpOworfQorCisKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVy
T2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtNjM0
LDcgKzY0NSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MoKQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLy8gSW5pdGlh
bGl6ZSByZW1vdGUgaW5zcGVjdG9yIGNvbm5lY3Rpb24gbm93IHRoYXQgd2UgaGF2ZSBhIHN1Yi1w
cm9jZXNzIHRoYXQgaXMgaG9zdGluZyBvbmUgb2Ygb3VyIHdlYiB2aWV3cy4KLSAgICBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCk7IAorICAgIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzaW5nbGV0b24oKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHByb2Nlc3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGIzYmVhMDQzMmM2
NmVmMDUxNDJkYTRjNDMzNDEwZTJmNzRmZThiZTIuLjViNjUwMWYwNzE0NTAxOGI0YzM2Mzk1MjY1
NzhhNDQ2NDY3MDhiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIEFQSSB7CitjbGFzcyBBdXRvbWF0aW9uQ2xpZW50OwogY2xhc3MgRG93bmxvYWRDbGll
bnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVD
b25uZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKik7CiAg
ICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRl
eHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOworICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50Pik7CiAKICAgICB2b2lkIHNl
dE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxl
ZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAgICB1bnNpZ25lZCBtYXhp
bXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9jb25maWd1cmF0aW9uLT5t
YXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmlndXJhdGlvbi0+bWF4aW11
bVByb2Nlc3NDb3VudCgpOyB9CkBAIC00MTgsNiArNDIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQg
bV9jb25uZWN0aW9uQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYyOWM3
N2EwY2Q5YjMwYmU2MmUxMzk0Y2I4ZTMxMzg5MWFiZjIwMC4uMDdlZDgyNjBjNGE1NTZkNDY5YWQ3
ZDUyNDgxOGM5NDA5YTBiYjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NSw2ICsxMjQ1LDEwIEBACiAJCTkzQTg4QjQ3
MUJDODgyOTcwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTg4QjQyMUJDODgyOEMwMEFCQTVDMiAv
KiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFC
IC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2Fk
VHlwZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJD
NUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlDODFENTkxQzIwRTFFNTAwNUM0QzgyIC8q
IEF1dG9tYXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5t
bSAqLzsgfTsKKwkJOTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU1
MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CisJCTk5QzgxRDVE
MUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIg
LyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovOyB9OworCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVC
M0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21h
dGlvbkRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUY1NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0
ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCTlGNTRGODk1MTY0
OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgx
QSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5tbSAqLzsgfTsKQEAgLTM0NTEsNiArMzQ1NSwxMCBAQAogCQk5M0E4
OEI0MzFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQ
cml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBl
c1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQz
OTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3
REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNz
TWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlF
NkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRoID0gbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
OTMyLDYgKzQ5NDAsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk1MTdERDVCQjE4MERBN0M0MDA4MTY2MEIgLyogRGF0YWJhc2VzICovLAorCQkJCTk5QzgxRDU1
MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi8sCisJCQkJOTlDODFENTYx
QzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkEx
QTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4
OTFCNkIxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAog
CQkJCUExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLApAQCAt
NTMzMCw2ICs1MzQwLDcgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyog
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4
QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQk5OUU3MTRD
MTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMUE1
NzA0RjYxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywK
IAkJCQkxQTU3MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5tbSAqLywKIAkJCQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZS5oICovLApAQCAtNjMwMCw2ICs2MzExLDcgQEAKIAkJCQkzN0M0QzA4MzE4
MTQ5QzJBMDAzNjg4QjkgLyogQ29jb2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTcz
IC8qIGNwcCAqLywKIAkJCQlCQzExMUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJ
CTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJ
CQkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8s
CiAJCQkJODM4OTFCNjIxQTY4QjM0MjAwMzBGMzg2IC8qIEFQSURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmggKi8sCiAJCQkJMUY3RDM2QzAxOERBNTEzRjAwRDlENjU5IC8qIEFQSURvd25sb2FkQ2xp
ZW50LmggKi8sCkBAIC03ODM2LDYgKzc4NDgsNyBAQAogCQkJCUU0MTNGNTlEMUFDMUFEQzQwMDM0
NTM2MCAvKiBOZXR3b3JrQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QjI1MEYx
QTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0MkUwNjEwMUFBNzUyM0IwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRv
bWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2RUNFMUEwRDA0MEIwMEVB
RDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMUVFQkJEMUJE
ODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc5NTksNiArNzk3Miw3IEBACiAJ
CQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25U
cmFja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyog
QXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NDIwRTUxMkRDRTJGRjAw
Q0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyMTc0NjEx
NjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggaW4gSGVhZGVycyAq
LywKQEAgLTgzOTMsNiArODQwNyw3IEBACiAJCQkJMUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYyIC8q
IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RUIxMTcxOERC
NkExOTAwNzkxN0MyIC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0Q1OTdEMDExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlc1JlZi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNjYxOEJCRTNE
OTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JBQUNF
QjE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAxNDYsNiArMTAxNjEsNyBAQAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1Nj
cmlwdE1lc3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNG
QzkgLyogV0tTY3JvbGxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlE
QzAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OUM4
MUQ1OTFDMjBFMUU1MDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxQ0QxQzVEMUIzNDkzQUYwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjAzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NUE4RDJEODE4N0QzMDQw
MDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268231</attachid>
            <date>2016-01-04 14:10:24 -0800</date>
            <delta_ts>2016-01-05 16:55:50 -0800</delta_ts>
            <desc>Proposed Fix v2.1</desc>
            <filename>bug-151576-20160104140950.patch</filename>
            <type>text/plain</type>
            <size>37554</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NWI0ZTNlZjYzZDNhYjY0ZTFlNjhjOTAwNDEyNmIzMWMzNWE3YmFmLi45NWYzOGI5NTJmZWE4MWYz
MDU2NjBmZGMxZGM1MDk5ZTFiZDI2NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wMS0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgaXMgdWx0aW1hdGVseSBkZWxlZ2F0ZWQgdmlhIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZSwgd2hpY2ggaXMgYW4gU1BJCisgICAgICAgIHRoYXQgYWxsb3dzIGNs
aWVudHMgdG8gaW5zdGFsbCBhbiBPYmplY3RpdmUtQyBkZWxlZ2F0ZSBmb3IgYXV0b21hdGlvbi4K
KworICAgICAgICBUaGUgc2V0dGluZyBmb3Igd2hldGhlciByZW1vdGUgYXV0b21hdGlvbiBpcyBh
bGxvd2VkIGlzIGluY2x1ZGVkIGluIHRoZQorICAgICAgICBsaXN0aW5nIHRoYXQgUmVtb3RlSW5z
cGVjdG9yIHNlbmRzIG91dC4gSXQgaXMgdXBkYXRlZCB3aGVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50CisgICAgICAgIGlzIGFzc2lnbmVkLCBvciB3aGVuIHRoZSBjbGllbnQgdXNlcyBhbiBOU05v
dGlmaWNhdGlvbiB0byBzaWduYWwgdGhhdCBpdCBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbToKKworICAgICAgICAgICAgQWRkIEpTUmVtb3RlSW5zcGVjdG9y
T2JqQ0FkYXB0ZXIgc28gdGhhdCBSZW1vdGVJbnNwZWN0b3IgY2FuIGxpc3RlbiBmb3IKKyAgICAg
ICAgICAgIE5TTm90aWZpY2F0aW9ucyBzZW50IGZyb20gX1dLQXV0b21hdGlvbkRlbGVnYXRlIHdo
ZW4gY2FwYWJpbGl0aWVzIGNoYW5nZS4KKworICAgICAgICAoLVtKU1JlbW90ZUluc3BlY3Rvck9i
akNBZGFwdGVyIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZV0pOiBBZGRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQpOiBB
ZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydCk6CisKKyAg
ICAgICAgICAgIExpc3RlbiBmb3IgY2xpZW50IGNhcGFiaWxpdHkgY2hhbmdlIG5vdGlmaWNhdGlv
bnMuIFRoZXNlIGFyZSBzZW50IGJ5CisgICAgICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBwcm92
aWRlIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZSBpbiBvcmRlciB0byB0cmlnZ2VyIGEgcmUtbGlzdGlu
ZworICAgICAgICAgICAgb2YgdGhlIHRoZSBhcHBsaWNhdGlvbiB3aXRoIHVwZGF0ZWQgYXV0b21h
dGlvbiBjYXBhYmlsaXRpZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
OjpzdG9wSW50ZXJuYWwpOiBUZWFyIGRvd24gdGhlIE5TTm90aWZpY2F0aW9uIG9ic2VydmVyLgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisK
KyAgICAgICAgICAgIEluIHRoZSBsaXN0aW5nLCBpbmNsdWRlIHdoZXRoZXIgdGhlIGFwcGxpY2F0
aW9uIHN1cHBvcnRzIHJlbW90ZSBhdXRvbWF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDogQWRkIGNvbnN0YW50cyBhbmQgcmUtaW5k
ZW50LgorCiAyMDE2LTAxLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHRoZSAhRU5BQkxFKElOVEwpIGJ1aWxkIGFmdGVyIHIxOTM0OTMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBlOGVkNjE1MjA0OTBmYjQ2NGJiYTU0ZWRmOWI3NjVkMzg5MGJmM2EwLi5iZWM5
MzRlMWYxMWIxM2I5MmYwMWYzZThlODFiZDI4MjAwNTczYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTQgQEAKKzIwMTYtMDEtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGEgV2ViS2l0IFNQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXV0b21hdGlvbiBjb250
cm9sbGVyIHdpdGggUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBfV0tBdXRvbWF0aW9uRGVsZWdhdGUgaXMgYSBuZXcgU1BJIHRo
YXQgYWxsb3dzIFdLUHJvY2Vzc1Bvb2wgY2xpZW50cyB0byBkZWNpZGUKKyAgICAgICAgcG9saWN5
IGFuZCBpbXBsZW1lbnQgYWN0aW9ucyBmb3IgcmVtb3RlIGF1dG9tYXRpb24uCisKKyAgICAgICAg
VGhlIFNQSSdzIGltcGxlbWVudGF0aW9uIGNvbm5lY3RzIHRoZSBjbGllbnQncyBkZWxlZ2F0ZSB0
byBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIGRlbGVn
YXRlIHRvIGhhbmRsZSBzb21lIGNvbW1hbmRzLCBzdWNoIGFzIHJlcXVlc3RBdXRvbWF0aW9uU2Vz
c2lvbiwKKyAgICAgICAgdGhhdCBjb21lIG92ZXIgWFBDIGZyb20gYW4gZXh0ZXJuYWwgdGVzdCBy
dW5uZXIgYnV0IGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMKKyAgICAgICAgYXV0
b21hdGlvbiB0YXJnZXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDogQWRkZWQuIEJvaWxlcnBsYXRl
IGZvciBXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQuCisgICAgICAgIChBUEk6OkF1dG9tYXRpb25D
bGllbnQ6On5BdXRvbWF0aW9uQ2xpZW50KToKKyAgICAgICAgKEFQSTo6QXV0b21hdGlvbkNsaWVu
dDo6YWxsb3dzUmVtb3RlQXV0b21hdGlvbik6CisgICAgICAgIChBUEk6OkF1dG9tYXRpb25DbGll
bnQ6OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9hdXRvbWF0
aW9uRGVsZWdhdGVdKTogQWRkZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9t
YXRpb25EZWxlZ2F0ZTpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOiBBZGQgZGVsZWdhdGUuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDogQWRkZWQuCisKKyAgICAgICAgICAg
IFRoaXMgaXMgYSBuZXcgZGVsZWdhdGUgU1BJIG9mIFdLUHJvY2Vzc1Bvb2w7IGl0IGNvcnJlc3Bv
bmRzIHRvIEF1dG9tYXRpb25DbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21h
dGlvbkNsaWVudC5tbTogQWRkZWQuCisKKyAgICAgICAgICAgIFRoaXMgaW1wbGVtZW50cyBhIGJy
aWRnZSBiZXR3ZWVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50IGFuZCBfV0tBdXRvbWF0aW9uRGVs
ZWdhdGUuCisgICAgICAgICAgICBTaW5jZSB0aGUgZGVsZWdhdGUgY2FuIGJlIGNhbGxlZCBmcm9t
IEphdmFTY3JpcHRDb3JlLCBzYXZlIHRoZSBkZWxlZ2F0aW5nCisgICAgICAgICAgICBXS1Byb2Nl
c3NQb29sIGFuZCBwYXNzIGl0IGFzIHRoZSBzZWxmIHBhcmFtZXRlciB0byBkZWxlZ2F0ZSBtZXRo
b2RzLgorCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OkF1dG9tYXRpb25DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50Ojp+QXV0b21hdGlvbkNsaWVu
dCk6CisKKyAgICAgICAgICAgIFRoaXMgY2xpZW50IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGFu
ZCB1bnJlZ2lzdGVycyBhcyBhIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50LgorCisgICAgICAgIChX
ZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0b21hdGlvbkNsaWVudDo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKToK
KworICAgICAgICAgICAgRm9yd2FyZCByZXF1ZXN0cyBmcm9tIFJlbW90ZUluc3BlY3RvciB0byB0
aGUgYXV0b21hdGlvbiBkZWxlZ2F0ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9v
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50
KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAxLTA0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jl
c3MgdG93YXJkcyBpbXBsZW1lbnRpbmcgZG93bmxvYWRzIHdpdGggTmV0d29ya1Nlc3Npb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLmgKaW5kZXggMDI2Y2QzYmI3ZTg1ODBlZGU0YTk0Nzg4MzI3NTY5YWEyZmYwZmI2
Yi4uNDVmZDA2ZDk2YWE3ZDc0NjViZDYyYTA2MjlmMmY1MDY1ZDI1MTQ3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorT0JKQ19DTEFTUyBKU1JlbW90ZUluc3BlY3Rv
ck9iakNBZGFwdGVyOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogCkBAIC00OCw2ICs0OSwxMyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgorICAgIGNsYXNz
IENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKCkgPSAwOworICAg
IH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydERpc2FibGVkKCk7CiAgICAgc3RhdGljIFJlbW90
ZUluc3BlY3RvciYgc2luZ2xldG9uKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PFJlbW90ZUluc3BlY3Rvcj47CkBAIC01OCwxMCArNjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
c2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogCiAgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQqKTsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3RvckNsaWVu
dChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogCiAgICAgdm9pZCBzZXR1cEZhaWxlZCh1bnNp
Z25lZCBpZGVudGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29tcGxldGVkKHVuc2lnbmVkIGlkZW50
aWZpZXIpOwogICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQg
aWRlbnRpZmllcik7CisgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKSB7IHB1
c2hMaXN0aW5nc1Nvb24oKTsgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtMTIzLDYgKzEzMyw5IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25u
ZWN0aW9uOwogCisgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0
ciB9OworICAgIFJldGFpblB0cjxKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyPiBtX2F1dG9t
YXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlcjsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNR
dWV1ZTsKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAg
IGludCBtX25vdGlmeVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMz
YjY4YWNmYzhkNjljZjI5MzlhMTE3YzFjNzZjNGFiZTEuLmEyOWQwYzQ5NTczNmZkMzQ3YjY1Y2Uy
NjJlYzYyNWQ4YTNlM2EwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0MywxNyBA
QAogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorQGludGVyZmFjZSBKU1JlbW90ZUluc3BlY3Rvck9iakNBZGFwdGVyIDog
TlNPYmplY3QKKy0gKHZvaWQpY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlOworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gSlNSZW1vdGVJbnNwZWN0b3JPYmpDQWRhcHRlcgorLSAodm9pZCljbGll
bnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UKK3sKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2luZ2xldG9uKCkuY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7Cit9CitAZW5kCisK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NXZWJJbnNwZWN0
b3JNYWNoUG9ydCgpCkBAIC0yMzgsNiArMjQ5LDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1
cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQq
CiAgICAgfQogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUX0FSRyhj
bGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisKKyAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKworICAg
IC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMgd2hldGhlciB0aGUgY2xp
ZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9
CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzE3LDYgKzM0MCwxMCBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgfSk7CiAKKyAg
ICBtX2F1dG9tYXRpb25BdmFpbGFiaWxpdHlPYnNlcnZlciA9IGFkb3B0TlMoW0pTUmVtb3RlSW5z
cGVjdG9yT2JqQ0FkYXB0ZXIgbmV3XSk7CisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRl
ciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOm1fYXV0b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyLmdldCgpIHNlbGVjdG9y
OkBzZWxlY3RvcihjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UpIG5hbWU6QFdJUkF1dG9tYXRp
b25BdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCiAgICAgbm90
aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKIH0KIApA
QCAtMzU4LDYgKzM4NSw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZSBzb3VyY2UpCiAgICAgfQogCiAgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2Vu
KTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9hdXRvbWF0aW9uQXZhaWxhYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOworICAgIG1fYXV0
b21hdGlvbkF2YWlsYWJpbGl0eU9ic2VydmVyID0gbmlsOwogfQogCiB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQpAQCAtNTQ0LDYgKzU3NCw5IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQogICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0KCkgZm9y
S2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVudCAmJiBt
X2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsKKyAgICBbbWVzc2FnZSBzZXRPYmpl
Y3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleV07CisK
ICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBtZXNz
YWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCBl
ZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJiLi5lNDRiODhiOWU3NGZjZTcx
Mjg3ODYxYWVlMTEyYjVkY2E0MTM1ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFu
dHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzAsMTUgKzMwLDE1IEBACiAvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0
aGUgT1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQKIC8vIGlPUyBXZWJLaXQgb24gdGhlIGRl
dmljZSBzaWRlLgogCi0jZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAgICAgICAg
ICAgICAyNzc1MwotI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAgICAgICAg
ICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCi0jZGVmaW5lIFdJUlhQQ0RlYnVnZ2VyU2Vydmlj
ZU5hbWUgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rvci5kZWJ1Z2dlciIKLSNk
ZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAgICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCi0jZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlD
aGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmlsaXR5X2No
ZWNrIgotI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAgImNv
bS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCi0jZGVmaW5lIFdJUlNlcnZpY2VEaXNhYmxl
ZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZGlzYWJsZWQi
Ci0jZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUgICAgICAiY29tLmFw
cGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGljX2luc3BlY3Rpb25fZW5hYmxlZCIKLQorI2RlZmlu
ZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgICAgICAgMjc3NTMKKyNk
ZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJYUENEZWJ1Z2dlclNlcnZpY2VOYW1lICAg
ICAgICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IuZGVidWdnZXIiCisjZGVm
aW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAgICAgICAgICAgICAiY29tLmFw
cGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgorI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmls
aXR5Q2hlY2tOb3RpZmljYXRpb24gICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWls
YWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRpb24gICAg
ICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgorI2RlZmluZSBX
SVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICAgICAgImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5h
YmxlZFN0YXRlICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19p
bnNwZWN0aW9uX2VuYWJsZWQiCisjZGVmaW5lIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlDaGFu
Z2VkTm90aWZpY2F0aW9uICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXV0b21hdGlvbl9hdmFp
bGFiaWxpdHlfY2hhbmdlZCIKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkg
ICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcktleSIKQEAgLTY3LDYgKzY3LDcgQEAKICNkZWZpbmUgV0lSUmF3RGF0YUtleSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKICNkZWZpbmUgV0lSTGlz
dGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3NhZ2UiCiAj
ZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUkxpc3Rp
bmdLZXkiCisjZGVmaW5lIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5ICAgICAgICAgICBA
IldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IgogI2RlZmluZSBXSVJEZXN0aW5hdGlvbktl
eSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKICNkZWZpbmUgV0lS
Q29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbkRpZWRN
ZXNzYWdlIgogI2RlZmluZSBXSVJUeXBlS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QCJXSVJUeXBlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA3ODFkOWNjNTZkN2Zm
MWU1YjY0YjNkZTYwODdjMWI4MGMyY2FhODlmLi5jOWFjM2YyYjMzNDM0MDg2ZmVhZmE5ZjJlMTVk
N2RjNjU2MDczZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg5LDYgKzE4OSw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCiAKKyAgICBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQogICAg
IFVJUHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbQogICAgIFVJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkYzQ2MjhjMDI2OTY0ODMzZjBmNjIzM2Q5ZmU2NTc1MWQzYTI3
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBB
UElBdXRvbWF0aW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJQXV0b21hdGlvbkNsaWVudF9oCisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Cit9CisKK25hbWVzcGFjZSBB
UEkgeworCitjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5B
dXRvbWF0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzUmVtb3RlQXV0
b21hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJQXV0b21h
dGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMThmZGE1MGNjMTU0NDA3ZmY0MTY4ZDk2OGMwMzIxN2M2
MTM3YmRiNC4uMjFiNWY0NTNkYjFmOTkxNWRmNWI1MmZkMmVjZWJjMThhYjMyZGQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQXV0b21h
dGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2ltcG9ydCAiRG93bmxvYWRD
bGllbnQuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKQEAgLTM3LDYgKzM4LDcgQEAK
ICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAiX1dLQXV0b21h
dGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0
ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTQ5LDYgKzUxLDcgQEAKICNlbmRpZgogCiBAaW1wbGVtZW50
YXRpb24gV0tQcm9jZXNzUG9vbCB7CisgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxpZCA8X1dLQXV0
b21hdGlvbkRlbGVnYXRlPj4gX2F1dG9tYXRpb25EZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYWtP
YmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPj4gX2Rvd25sb2FkRGVsZWdhdGU7CiAKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0yMTksNiArMjIyLDE3IEBAIC0gKHZvaWQpX3NldERvd25sb2Fk
RGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVnYXRlCiAgICAg
X3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKIH0KIAorLSAoaWQgPF9XS0F1dG9t
YXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQoreworICAgIHJldHVybiBfYXV0b21h
dGlvbkRlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOworfQorCistICh2b2lkKV9zZXRBdXRvbWF0
aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0
ZQoreworICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7CisgICAg
X3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKK30KKwogLSAo
dm9pZClfd2FybUluaXRpYWxQcm9jZXNzCiB7CiAgICAgX3Byb2Nlc3NQb29sLT53YXJtSW5pdGlh
bFByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA2ZDA5MWQ4ODczYjNmYzYwMDcyODVj
YTExNzM0MmYxM2EyM2MxZGI4Li45Y2I0NWJmNjZmMzI2NzNjODAxMGU5MzYwZWRjMjQ3ODg0OGRj
NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAogQGNsYXNzIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKK0Bwcm90b2NvbCBf
V0tBdXRvbWF0aW9uRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsKIAog
QGludGVyZmFjZSBXS1Byb2Nlc3NQb29sICgpCkBAIC00OCw2ICs0OSw3IEBACiAtICh2b2lkKV9z
ZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkg
KilkaWN0aW9uYXJ5IFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAogQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRv
bWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGU7CiAKICsgKE5TVVJMICopX3dlYnNp
dGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkw7CiArIChO
U1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFp
bmVyVVJMIGJ1bmRsZUlkZW50aWZpZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRs
ZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDEzYTY2ZjRjMDgz
N2Y0NGUzNjEyOWJkNzc1MTFiNTdkYTlkNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaApAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGNsYXNzIFdLUHJvY2Vzc1Bvb2w7CisKK0Bwcm90b2Nv
bCBfV0tBdXRvbWF0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCistIChCT09MKV9w
cm9jZXNzUG9vbEFsbG93c1JlbW90ZUF1dG9tYXRpb246KFdLUHJvY2Vzc1Bvb2wgKilwcm9jZXNz
UG9vbDsKKy0gKHZvaWQpX3Byb2Nlc3NQb29sRGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOihX
S1Byb2Nlc3NQb29sICopcHJvY2Vzc1Bvb2w7CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDI1YTI5ZTgyYjhmZmRhODJkMDM5NDg0YzZhOThkMTlhNGIyYmU0
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRv
bWF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXV0
b21hdGlvbkNsaWVudF9oCisjZGVmaW5lIEF1dG9tYXRpb25DbGllbnRfaAorCisjaW1wb3J0ICJX
S0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKworI2ltcG9ydCAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgorI2ltcG9ydCAi
V2Vha09iakNQdHIuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5o
PgorCitAY2xhc3MgV0tQcm9jZXNzUG9vbDsKKworQHByb3RvY29sIF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25DbGllbnQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uQ2xpZW50LCBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uQ2xpZW50KFdL
UHJvY2Vzc1Bvb2wgKiwgaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pOworICAgIHZpcnR1YWwg
fkF1dG9tYXRpb25DbGllbnQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBUEk6OkF1dG9tYXRpb25D
bGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzUmVtb3RlQXV0b21hdGlvbihXZWJQcm9jZXNz
UG9vbCopIG92ZXJyaWRlIHsgcmV0dXJuIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFdlYlByb2Nlc3NQb29sKikg
b3ZlcnJpZGUgeyByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oKTsgfQorCisgICAgLy8gUmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlvbkFsbG93
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uKCkgb3ZlcnJpZGU7CisKKyAgICBXS1Byb2Nlc3NQb29sICptX3Byb2Nlc3NQb29sOwor
ICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwor
CisgICAgc3RydWN0IHsKKyAgICAgICAgYm9vbCBhbGxvd3NSZW1vdGVBdXRvbWF0aW9uIDogMTsK
KyAgICAgICAgYm9vbCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24gOiAxOworICAgIH0gbV9kZWxl
Z2F0ZU1ldGhvZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2Vu
ZGlmIC8vIEF1dG9tYXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTEwYTQ3Y2RjMTE3MzE1
MmQ5NDJlYzk3MGY5MTA1OWYxZDRlZDYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVu
dC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgorCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXV0b21h
dGlvbkNsaWVudDo6QXV0b21hdGlvbkNsaWVudChXS1Byb2Nlc3NQb29sICpwcm9jZXNzUG9vbCwg
aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX3Byb2Nlc3NQb29s
KHByb2Nlc3NQb29sKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy5hbGxvd3NSZW1vdGVBdXRvbWF0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3Byb2Nlc3NQb29sQWxsb3dzUmVtb3RlQXV0b21hdGlvbjopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0QXV0b21hdGlvblNlc3Npb24gPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJvY2Vzc1Bvb2xEaWRSZXF1ZXN0QXV0
b21hdGlvblNlc3Npb246KV07CisKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNl
dFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlzKTsKK30KKworQXV0b21hdGlvbkNsaWVudDo6fkF1
dG9tYXRpb25DbGllbnQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0
UmVtb3RlSW5zcGVjdG9yQ2xpZW50KG51bGxwdHIpOworfQorCitib29sIEF1dG9tYXRpb25DbGll
bnQ6OnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QKK3sKKyAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuYWxsb3dzUmVtb3RlQXV0b21hdGlvbikKKyAgICAgICAgcmV0dXJuIFttX2RlbGVn
YXRlLmdldCgpIF9wcm9jZXNzUG9vbEFsbG93c1JlbW90ZUF1dG9tYXRpb246bV9wcm9jZXNzUG9v
bF07CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXV0b21hdGlvbkNsaWVudDo6cmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uKCkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uKQorICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfcHJvY2Vz
c1Bvb2xEaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Npb246bV9wcm9jZXNzUG9vbF07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggN2FlZjMyM2Y1NDAwNzY0NjE4MDZkNzg3YzhjMTVmODY5
MTcwYjg1ZS4uNzkwMWY1ZmNhOTU3NDlmOWRiMzNiNDM0YmU4NzgyMzMxZmEyZmM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5Lmgi
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNp
bmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMTM4LDYgKzEzOSw3IEBAIFdlYlBy
b2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKICAgICAsIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MoZmFsc2UpCiAg
ICAgLCBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlKDApCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAo
V2ViUGFnZUdyb3VwOjpjcmVhdGVOb25OdWxsKCkpCisgICAgLCBtX2F1dG9tYXRpb25DbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2Rvd25s
b2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKICAgICAs
IG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6
Y3JlYXRlKCkpCkBAIC0yNzcsNiArMjc5LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBkb3duCiAg
ICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBhdXRvbWF0aW9uQ2xpZW50KQoreworICAgIGlmICghYXV0
b21hdGlvbkNsaWVudCkKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX2F1dG9t
YXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOworfQorCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51
bWJlck9mUHJvY2Vzc2VzKQogewogICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAg
LTYzMiw3ICs2NDIsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVO
ZXdXZWJQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIC8vIElu
aXRpYWxpemUgcmVtb3RlIGluc3BlY3RvciBjb25uZWN0aW9uIG5vdyB0aGF0IHdlIGhhdmUgYSBz
dWItcHJvY2VzcyB0aGF0IGlzIGhvc3Rpbmcgb25lIG9mIG91ciB3ZWIgdmlld3MuCi0gICAgSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpOyAKKyAgICBJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwcm9jZXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA1YzVmNTBi
MzBmMzM4NWMyYTMzYjVhMTQ1ZmFkZTAxYTRkNmYzMjlhLi5lNjAxMDdmMWNmMmQ1NGI2M2JmOGYy
MmI2NDQ1YjM5NGI5ZGRkMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtNzAsNiArNzAsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAK
IG5hbWVzcGFjZSBBUEkgeworY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIERvd25sb2Fk
Q2xpZW50OwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29u
ZmlndXJhdGlvbjsKQEAgLTEzNCw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFs
aXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSop
OwogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKKyAgICB2b2lkIHNldEF1dG9tYXRpb25D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwogCiAgICAgdm9p
ZCBzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQpOyAvLyBDYW4gb25seSBiZSBj
YWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gcHJvY2Vzc2VzIHJ1bm5pbmcuCiAgICAgdW5zaWduZWQg
bWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gIW1fY29uZmlndXJhdGlv
bi0+bWF4aW11bVByb2Nlc3NDb3VudCgpID8gVUlOVF9NQVggOiBtX2NvbmZpZ3VyYXRpb24tPm1h
eGltdW1Qcm9jZXNzQ291bnQoKTsgfQpAQCAtNDE2LDYgKzQxOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb250ZXh0Q2xpZW50IG1fY2xpZW50OwogICAgIFdlYkNvbnRleHRDb25uZWN0aW9uQ2xp
ZW50IG1fY29ubmVjdGlvbkNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0
aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3
Y2ZiMjU5NDc1YjZiZDQ3NzlhZDJiMGE3ZWI1MzVkNWU0MWM4MDguLmVjYTUyNjA3OWQ4MGM3MGY0
OTg4YmMwYzE3NWQ1NjcxNjE3NjgwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDcsNiArMTI0NywxMCBAQAogCQk5M0E4
OEI0NzFCQzg4Mjk3MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4OEI0MjFCQzg4MjhDMDBBQkE1
QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJG
RUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdl
TG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRF
RDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4
MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGll
bnQubW0gKi87IH07CisJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4
MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OworCQk5OUM4
MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0
QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKKwkJOTlFNzE0QzUxQzEyNEEwNDAw
NjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg4
RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9OwogCQk5RjU0Rjg5
NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3
REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5
RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8q
IFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi87IH07CkBAIC0zNDQyLDYgKzM0NDYsMTAgQEAKIAkJ
OTNBODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5
cGVzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2Fk
VHlwZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJD
NUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21h
dGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1
dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QzgxRDVC
MUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9u
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OEUxNjQ4OEU4
NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJv
Y2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzky
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9
IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDkwNiw2ICs0OTE0LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJNTE3REQ1QkIxODBEQTdDNDAwODE2NjBCIC8qIERhdGFiYXNlcyAqLywKKwkJCQk5OUM4
MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovLAorCQkJCTk5Qzgx
RDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovLAogCQkJCTgzODkx
QjZBMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJ
CTgzODkxQjZCMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbSAq
LywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLywK
QEAgLTUyNzYsNiArNTI4Niw3IEBACiAJCQkJMzdBNUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFF
IC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMw
MDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCisJCQkJOTlF
NzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJ
CTFBNTcwNEY2MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgg
Ki8sCiAJCQkJMUE1NzA0RjUxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVu
dEluZm8ubW0gKi8sCiAJCQkJODM4OTFCNjgxQTY4QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKQEAgLTYyNjcsNiArNjI3OCw3IEBACiAJCQkJMzdDNEMw
ODMxODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1
NzU3MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywK
KwkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICov
LAogCQkJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
ICovLAogCQkJCTgzODkxQjYyMUE2OEIzNDIwMDMwRjM4NiAvKiBBUElEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oICovLAogCQkJCTFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3dubG9h
ZENsaWVudC5oICovLApAQCAtNzc5NCw2ICs3ODA2LDcgQEAKIAkJCQlFNDEzRjU5RDFBQzFBREM0
MDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNEIy
NTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDJFMDYxMDFBQTc1MjNCMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9DaGFu
bmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dL
QXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDRTFBMEQwNDBC
MDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzFFRUJC
RDFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTE1LDYgKzc5MjgsNyBA
QAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNz
aW9uVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlDODFENUExQzIwRTdFMjAwNUM0Qzgy
IC8qIEF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyMEU1MTJEQ0Uy
RkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjE3
NDYxMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyNEJFRDUxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MzQ3LDYgKzgzNjEsNyBAQAogCQkJCTFBM0M4ODgwMThBNUFCQUUwMEM0Qzk2
MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEVCMTE3
MThEQjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNENTk3RDAxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXNSZWYuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyog
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY2MThC
QkUzRDkwMDBGQ0ZDOSAvKiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
QUFDRUIxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMDY2LDYgKzEwMDgxLDcgQEAKIAkJCQkxQTdFMzc3ODE4RTRBNEZFMDAzRDBGRkYgLyog
V0tTY3JpcHRNZXNzYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNTUxOEJCRTA0NDAw
MEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQ0QxQzY2MUIz
NEI5REMwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTlDODFENTkxQzIwRTFFNTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MUNEMUM1RDFCMzQ5M0FGMDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYwMzEyNEZGMDI3MDA2OEYyMEEgLyogV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzVBOEQyRDgxODdE
MzA0MDAwQzM5QzlFIC8qIFdLU2Vzc2lvblJlZi5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268338</attachid>
            <date>2016-01-05 16:55:54 -0800</date>
            <delta_ts>2016-01-05 18:27:17 -0800</delta_ts>
            <desc>Proposed Fix v3</desc>
            <filename>bug-151576-20160105165521.patch</filename>
            <type>text/plain</type>
            <size>34574</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjlhNzc3Mzk1NDkwNzE0YTM3NTg0OGY5ZTk0NTk4YjQyYzdkOWRkLi41MWY2NGYxOTgyNTY2NmYz
M2QxYzJmNDFiNjQ2YmU1YzExMDZhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNi0wMS0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJLaXQgU1BJIGZvciByZWdpc3RlcmluZyBhbiBhdXRvbWF0aW9uIGNv
bnRyb2xsZXIgd2l0aCBSZW1vdGVJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIGEgUmVtb3RlSW5zcGVjdG9yIGVuZHBvaW50IHRo
YXQgaXMgaW5zdGFudGlhdGVkIGluIFVJUHJvY2VzcywgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJl
IGEgd2F5IHRvIGRlbGVnYXRlIGF1dG9tYXRpb24tcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCBw
b2xpY3kgdG8KKyAgICAgICAgY2xpZW50cyBvZiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjbGFz
cyBhZGRzIGEgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgaW50ZXJmYWNlIHRoYXQgc2VydmVzIGEg
ZGVsZWdhdGUuCisgICAgICAgIFRoaXMgaXMgdWx0aW1hdGVseSBkZWxlZ2F0ZWQgdmlhIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZSwgd2hpY2ggaXMgYW4gU1BJCisgICAgICAgIHRoYXQgYWxsb3dzIGNs
aWVudHMgdG8gaW5zdGFsbCBhbiBPYmplY3RpdmUtQyBkZWxlZ2F0ZSBmb3IgYXV0b21hdGlvbi4K
KworICAgICAgICBUaGUgc2V0dGluZyBmb3Igd2hldGhlciByZW1vdGUgYXV0b21hdGlvbiBpcyBh
bGxvd2VkIGlzIGluY2x1ZGVkIGluIHRoZQorICAgICAgICBsaXN0aW5nIHRoYXQgUmVtb3RlSW5z
cGVjdG9yIHNlbmRzIG91dC4gSXQgaXMgdXBkYXRlZCB3aGVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50CisgICAgICAgIGlzIGFzc2lnbmVkLCBvciB3aGVuIHRoZSBjbGllbnQgc2lnbmFscyB0aGF0
IGl0cyBjYXBhYmlsaXRpZXMgaGF2ZSBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRS
ZW1vdGVJbnNwZWN0b3JDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3cpOgorCisgICAgICAgICAgICBJbiB0aGUgbGlzdGlu
ZywgaW5jbHVkZSB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBzdXBwb3J0cyByZW1vdGUgYXV0b21h
dGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmg6IEFkZCBhIGNvbnN0YW50LgorCiAyMDE2LTAxLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIEIzIHNob3VsZCBkbyBiaW5hcnkgc25pcHBldHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZTE4MjY1NWM2ODg4NDA3MzJlOTU1NjA3Yjg1YWFjNTQzZDllODE3Li5m
N2RkZmYyYzczNGMxMDkyMGIyNDllNGQzMDIzMDMzNjAzYWZlY2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMTYtMDEtMDUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgV2ViS2l0IFNQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXV0b21hdGlvbiBj
b250cm9sbGVyIHdpdGggUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBfV0tBdXRvbWF0aW9uRGVsZWdhdGUgaXMgYSBuZXcgU1BJ
IHRoYXQgYWxsb3dzIFdLUHJvY2Vzc1Bvb2wgY2xpZW50cyB0byBkZWNpZGUKKyAgICAgICAgcG9s
aWN5IGFuZCBpbXBsZW1lbnQgYWN0aW9ucyBmb3IgcmVtb3RlIGF1dG9tYXRpb24uCisKKyAgICAg
ICAgVGhlIFNQSSdzIGltcGxlbWVudGF0aW9uIGNvbm5lY3RzIHRoZSBjbGllbnQncyBkZWxlZ2F0
ZSB0byBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIGRl
bGVnYXRlIHRvIGhhbmRsZSBzb21lIGNvbW1hbmRzLCBzdWNoIGFzIHJlcXVlc3RBdXRvbWF0aW9u
U2Vzc2lvbiwKKyAgICAgICAgdGhhdCBjb21lIG92ZXIgWFBDIGZyb20gYW4gZXh0ZXJuYWwgdGVz
dCBydW5uZXIgYnV0IGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMKKyAgICAgICAg
YXV0b21hdGlvbiB0YXJnZXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDogQWRkZWQuIEJvaWxlcnBs
YXRlIGZvciBXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQuCisgICAgICAgIChBUEk6OkF1dG9tYXRp
b25DbGllbnQ6On5BdXRvbWF0aW9uQ2xpZW50KToKKyAgICAgICAgKEFQSTo6QXV0b21hdGlvbkNs
aWVudDo6YWxsb3dzUmVtb3RlQXV0b21hdGlvbik6CisgICAgICAgIChBUEk6OkF1dG9tYXRpb25D
bGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9hdXRv
bWF0aW9uRGVsZWdhdGVdKTogQWRkZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1
dG9tYXRpb25EZWxlZ2F0ZTpdKTogQWRkZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2F1
dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRDaGFuZ2VdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOiBBZGQgZGVsZWdhdGUuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDogQWRkZWQu
CisKKyAgICAgICAgICAgIFRoaXMgaXMgYSBuZXcgZGVsZWdhdGUgU1BJIG9mIFdLUHJvY2Vzc1Bv
b2w7IGl0IGNvcnJlc3BvbmRzIHRvIEF1dG9tYXRpb25DbGllbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbTogQWRkZWQuCisKKyAgICAgICAgICAgIFRoaXMg
aW1wbGVtZW50cyBhIGJyaWRnZSBiZXR3ZWVuIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50IGFuZCBf
V0tBdXRvbWF0aW9uRGVsZWdhdGUuCisgICAgICAgICAgICBTaW5jZSB0aGUgZGVsZWdhdGUgY2Fu
IGJlIGNhbGxlZCBmcm9tIEphdmFTY3JpcHRDb3JlLCBzYXZlIHRoZSBkZWxlZ2F0aW5nCisgICAg
ICAgICAgICBXS1Byb2Nlc3NQb29sIGFuZCBwYXNzIGl0IGFzIHRoZSBzZWxmIHBhcmFtZXRlciB0
byBkZWxlZ2F0ZSBtZXRob2RzLgorCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6
OkF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50Ojp+
QXV0b21hdGlvbkNsaWVudCk6CisKKyAgICAgICAgICAgIFRoaXMgY2xpZW50IGF1dG9tYXRpY2Fs
bHkgcmVnaXN0ZXJzIGFuZCB1bnJlZ2lzdGVycyBhcyBhIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50
LgorCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OnJlbW90ZUF1dG9tYXRpb25B
bGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvbkNsaWVudDo6cmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uKToKKworICAgICAgICAgICAgRm9yd2FyZCByZXF1ZXN0cyBmcm9tIFJlbW90
ZUluc3BlY3RvciB0byB0aGUgYXV0b21hdGlvbiBkZWxlZ2F0ZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRB
dXRvbWF0aW9uQ2xpZW50KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp1cGRhdGVBdXRvbWF0aW9uQ2FwYWJpbGl0aWVzKTogQWRkZWQsIGl0IG5vdGlmaWVzIFJlbW90
ZUluc3BlY3Rvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMDEtMDQgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9n
cmVzcyB0b3dhcmRzIGltcGxlbWVudGluZyBkb3dubG9hZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaAppbmRleCAwMjZjZDNiYjdlODU4MGVkZTRhOTQ3ODgzMjc1NjlhYTJmZjBm
YjZiLi43OTMzNDJjNjI2YTU4M2I2NWRlZTczMWRjNDNjMDRlODg2OWQ4MmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNiArNDgsMTMgQEAgY2xhc3MgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwg
OiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNv
bnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigp
ID0gMDsKKyAgICB9OworCiAgICAgc3RhdGljIHZvaWQgc3RhcnREaXNhYmxlZCgpOwogICAgIHN0
YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNpbmdsZXRvbigpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OwpAQCAtNTgsMTAgKzY1LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIHZvaWQgdXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kik7CisgICAgdm9pZCBzZXRSZW1vdGVJbnNw
ZWN0b3JDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0dXBG
YWlsZWQodW5zaWduZWQgaWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXR1cENvbXBsZXRlZCh1bnNp
Z25lZCBpZGVudGlmaWVyKTsKICAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9u
KHVuc2lnbmVkIGlkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hh
bmdlKCkgeyBwdXNoTGlzdGluZ3NTb29uKCk7IH0KIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0KQEAgLTEyMyw2ICsxMzIs
OCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+
IG1feHBjQ29ubmVjdGlvbjsKIAorICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVu
dCB7IG51bGxwdHIgfTsKKwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICAgICB1
bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyIHsgMSB9OwogICAgIGludCBtX25vdGlm
eVRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDdmNjIwODMzYjY4YWNmYzhkNjlj
ZjI5MzlhMTE3YzFjNzZjNGFiZTEuLjk0ODUzNTNlOTg3NGY5OTRkZjA2OTE1ZDU2ZjMxNzM5NTI1
NzJjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzgsNiArMjM4LDE4IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUlu
c3BlY3Rpb25UYXJnZXQqCiAgICAgfQogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVt
b3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisK
KyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICBtX2NsaWVudCA9
IGNsaWVudDsKKworICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVkZXMg
d2hldGhlciB0aGUgY2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KKyAgICBwdXNoTGlz
dGluZ3NTb29uKCk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAt
NTQ0LDYgKzU1Niw5IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQog
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBbbWVzc2FnZSBzZXRPYmplY3Q6
bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwogCisgICAgQk9PTCBpc0FsbG93
ZWQgPSBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsKKyAg
ICBbbWVzc2FnZSBzZXRPYmplY3Q6QChpc0FsbG93ZWQpIGZvcktleTpXSVJSZW1vdGVBdXRvbWF0
aW9uRW5hYmxlZEtleV07CisKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxp
c3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaAppbmRleCBlZjlhMzY0OTQ4YjVlNTZjMTU1NTEwN2NhNWQwN2NmNGMxZjVmZWJi
Li5mMDVkOWNiZGVmMTRhOWEyN2I5ZTYzYjM3MzdhYjMyYThlNjc4MWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25z
dGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcsNiArNjcsNyBAQAogI2RlZmluZSBXSVJSYXdEYXRh
S2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgogI2RlZmluZSBX
SVJMaXN0aW5nTWVzc2FnZSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2Fn
ZSIKICNkZWZpbmUgV0lSTGlzdGluZ0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lS
TGlzdGluZ0tleSIKKyNkZWZpbmUgV0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRLZXkgICAgICAg
ICAgIEAiV0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRLZXkiCiAjZGVmaW5lIFdJUkRlc3RpbmF0
aW9uS2V5ICAgICAgICAgICAgICAgICAgICAgICBAIldJUkRlc3RpbmF0aW9uS2V5IgogI2RlZmlu
ZSBXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2UgICAgICAgICAgICAgICAgQCJXSVJDb25uZWN0aW9u
RGllZE1lc3NhZ2UiCiAjZGVmaW5lIFdJUlR5cGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBAIldJUlR5cGVLZXkiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDc4MWQ5Y2M1
NmQ3ZmYxZTViNjRiM2RlNjA4N2MxYjgwYzJjYWE4OWYuLmM5YWMzZjJiMzM0MzQwODZmZWFmYTlm
MmUxNWQ3ZGM2NTYwNzNmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFj
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODksNiAr
MTg5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0KIAorICAgIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1t
CiAgICAgVUlQcm9jZXNzL0NvY29hL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tCiAgICAgVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCiAgICAgVUlQcm9jZXNzL0NvY29hL0ZpbmRD
bGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRjNDYyOGMwMjY5NjQ4MzNmMGY2MjMzZDlmZTY1NzUx
ZDNhMjc4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJQXV0b21hdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEFQSUF1dG9tYXRpb25DbGllbnRfaAorI2RlZmluZSBBUElBdXRvbWF0aW9uQ2xpZW50X2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK30KKworbmFtZXNw
YWNlIEFQSSB7CisKK2NsYXNzIEF1dG9tYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkF1dG9tYXRpb25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NSZW1v
dGVBdXRvbWF0aW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCopIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBBUElB
dXRvbWF0aW9uQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAxOGZkYTUwY2MxNTQ0MDdmZjQxNjhkOTY4YzAz
MjE3YzYxMzdiZGI0Li5jNzU3MmNkNjQyZGVmYmFhNDM4NWMyZDU2MTc3ZWQ4NWM5Y2Q2Nzc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJB
dXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3du
bG9hZENsaWVudC5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgpAQCAtMzcsNiArMzgs
NyBAQAogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0ICJfV0tB
dXRvbWF0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCIKICNp
bXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtNDksNiArNTEsNyBAQAogI2VuZGlmCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXS1Byb2Nlc3NQb29sIHsKKyAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPGlkIDxf
V0tBdXRvbWF0aW9uRGVsZWdhdGU+PiBfYXV0b21hdGlvbkRlbGVnYXRlOwogICAgIFdlYktpdDo6
V2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxlZ2F0ZTsK
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIxOSwxMSArMjIyLDI3IEBAIC0gKHZvaWQpX3NldERv
d25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVnYXRl
CiAgICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKIH0KIAorLSAoaWQgPF9X
S0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQoreworICAgIHJldHVybiBf
YXV0b21hdGlvbkRlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOworfQorCistICh2b2lkKV9zZXRB
dXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25E
ZWxlZ2F0ZQoreworICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7
CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKK30K
KwogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCiB7CiAgICAgX3Byb2Nlc3NQb29sLT53YXJt
SW5pdGlhbFByb2Nlc3MoKTsKIH0KIAorLSAodm9pZClfYXV0b21hdGlvbkNhcGFiaWxpdGllc0Rp
ZENoYW5nZQoreworICAgIF9wcm9jZXNzUG9vbC0+dXBkYXRlQXV0b21hdGlvbkNhcGFiaWxpdGll
cygpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCmluZGV4IDZkMDkxZDg4NzNiM2ZjNjAwNzI4NWNhMTE3MzQyZjEzYTIzYzFkYjguLjkxZDg3
YjFkMTM4ZjRjODc2Y2JhMjUwNWRmZWNkNjQwNzM4NWEwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiBAY2xhc3MgX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOworQHByb3RvY29sIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZTsKIEBw
cm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlOwogCiBAaW50ZXJmYWNlIFdLUHJvY2Vzc1Bvb2wg
KCkKQEAgLTQ4LDExICs0OSwxMyBAQAogLSAodm9pZClfc2V0T2JqZWN0c0ZvckJ1bmRsZVBhcmFt
ZXRlcnNXaXRoRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeSBXS19BVkFJTEFC
TEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFr
LCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4g
X2Rvd25sb2FkRGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9z
ZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21h
dGlvbkRlbGVnYXRlOwogCiArIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldp
dGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMOwogKyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxG
b3JDb250YWluZXJXaXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTCBidW5kbGVJZGVudGlmaWVy
SWZOb3RJbkNvbnRhaW5lcjooTlNTdHJpbmcgKilidW5kbGVJZGVudGlmaWVyOwogCiAtICh2b2lk
KV93YXJtSW5pdGlhbFByb2Nlc3MgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEp
OworLSAodm9pZClfYXV0b21hdGlvbkNhcGFiaWxpdGllc0RpZENoYW5nZSBXS19BVkFJTEFCTEUo
V0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGQxM2E2NmY0YzA4MzdmNDRlMzYxMjliZDc3NTExYjU3ZGE5ZDYwNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0BjbGFzcyBXS1By
b2Nlc3NQb29sOworCitAcHJvdG9jb2wgX1dLQXV0b21hdGlvbkRlbGVnYXRlIDxOU09iamVjdD4K
K0BvcHRpb25hbAorLSAoQk9PTClfcHJvY2Vzc1Bvb2xBbGxvd3NSZW1vdGVBdXRvbWF0aW9uOihX
S1Byb2Nlc3NQb29sICopcHJvY2Vzc1Bvb2w7CistICh2b2lkKV9wcm9jZXNzUG9vbERpZFJlcXVl
c3RBdXRvbWF0aW9uU2Vzc2lvbjooV0tQcm9jZXNzUG9vbCAqKXByb2Nlc3NQb29sOworQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNWEyOWU4MmI4ZmZkYTgy
ZDAzOTQ4NGM2YTk4ZDE5YTRiMmJlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEF1dG9tYXRpb25DbGllbnRfaAorI2RlZmluZSBBdXRvbWF0aW9u
Q2xpZW50X2gKKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgIkFQSUF1dG9tYXRp
b25DbGllbnQuaCIKKyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KKworQGNsYXNzIFdLUHJvY2Vzc1Bvb2w7CisKK0Bwcm90
b2NvbCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvbkNsaWVudCwg
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQXV0b21hdGlvbkNsaWVudChXS1Byb2Nlc3NQb29sICosIGlkIDxfV0tBdXRvbWF0aW9uRGVs
ZWdhdGU+KTsKKyAgICB2aXJ0dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gQVBJOjpBdXRvbWF0aW9uQ2xpZW50CisgICAgdmlydHVhbCBib29sIGFsbG93c1JlbW90
ZUF1dG9tYXRpb24oV2ViUHJvY2Vzc1Bvb2wqKSBvdmVycmlkZSB7IHJldHVybiByZW1vdGVBdXRv
bWF0aW9uQWxsb3dlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vz
c2lvbihXZWJQcm9jZXNzUG9vbCopIG92ZXJyaWRlIHsgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9u
KCk7IH0KKworICAgIC8vIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50CisgICAgdmlydHVhbCBib29s
IHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigpIG92ZXJyaWRlOworCisgICAgV0tQcm9jZXNz
UG9vbCAqbV9wcm9jZXNzUG9vbDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLQXV0b21hdGlvbkRl
bGVnYXRlPj4gbV9kZWxlZ2F0ZTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgYWxsb3dz
UmVtb3RlQXV0b21hdGlvbiA6IDE7CisgICAgICAgIGJvb2wgcmVxdWVzdEF1dG9tYXRpb25TZXNz
aW9uIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBBdXRvbWF0aW9uQ2xpZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjUxMGE0N2NkYzExNzMxNTJkOTQyZWM5NzBmOTEwNTlmMWQ0ZWQ2MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50
Lm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCAiV0tQcm9jZXNzUG9vbC5oIgorI2lt
cG9ydCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9S
ZW1vdGVJbnNwZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0F1dG9tYXRpb25DbGllbnQ6OkF1dG9tYXRpb25DbGllbnQoV0tQcm9j
ZXNzUG9vbCAqcHJvY2Vzc1Bvb2wsIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IGRlbGVnYXRl
KQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKKyAgICAsIG1fZGVsZWdhdGUoZGVs
ZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuYWxsb3dzUmVtb3RlQXV0b21hdGlvbiA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9wcm9jZXNzUG9vbEFsbG93
c1JlbW90ZUF1dG9tYXRpb246KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9t
YXRpb25TZXNzaW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3By
b2Nlc3NQb29sRGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOildOworCisgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQodGhpcyk7Cit9CisK
K0F1dG9tYXRpb25DbGllbnQ6On5BdXRvbWF0aW9uQ2xpZW50KCkKK3sKKyAgICBSZW1vdGVJbnNw
ZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudChudWxscHRyKTsKK30K
KworYm9vbCBBdXRvbWF0aW9uQ2xpZW50OjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0
Cit7CisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmFsbG93c1JlbW90ZUF1dG9tYXRpb24pCisg
ICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfcHJvY2Vzc1Bvb2xBbGxvd3NSZW1vdGVB
dXRvbWF0aW9uOm1fcHJvY2Vzc1Bvb2xdOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEF1dG9tYXRpb25DbGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbigpCit7CisgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbikKKyAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX3Byb2Nlc3NQb29sRGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uOm1f
cHJvY2Vzc1Bvb2xdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDdhZWYzMjNmNTQw
MDc2NDYxODA2ZDc4N2M4YzE1Zjg2OTE3MGI4NWUuLmNjNDA3YjRmZWI1ZmE4YWRlNGZkZDk5MzQ4
ZTFjZGE3YWQxNTU3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAK
ICNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUF1dG9tYXRpb25DbGllbnQuaCIK
ICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRl
eHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAg
LTEzOCw2ICsxMzksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2hhdmVJbml0aWFs
RW1wdHlQcm9jZXNzKGZhbHNlKQogICAgICwgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSgwKQogICAg
ICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9uTnVsbCgpKQorICAg
ICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xp
ZW50PigpKQogICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93
bmxvYWRDbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQogICAgICwgbV92aXNpdGVkTGlua1N0
b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQpAQCAtMjc3LDYgKzI3OSwxNCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
b3dubG9hZENsaWVudD4gZG93bgogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShk
b3dubG9hZENsaWVudCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4gYXV0b21hdGlvbkNs
aWVudCkKK3sKKyAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCisgICAgICAgIG1fYXV0b21hdGlv
bkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAg
IGVsc2UKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xp
ZW50KTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJvY2Vz
c2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICAvLyBHdWFyZCBh
Z2FpbnN0IEFQSSBtaXN1c2UuCkBAIC0xMDY1LDYgKzEwNzUsMTUgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRp
ZmljYXRlSW4KICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjZXJ0aWZpY2F0
ZS0+Y2VydGlmaWNhdGVJbmZvKCksIGhvc3QpLCAwKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09B
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlQXV0b21hdGlvbkNhcGFiaWxpdGllcygpIGNv
bnN0Cit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpOwor
I2VuZGlmCit9CisjZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SFRUUFBpcGVsaW5p
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNWM1ZjUwYjMwZjMzODVjMmEz
M2I1YTE0NWZhZGUwMWE0ZDZmMzI5YS4uNWMzZmEyNzRmZDc0ODRjNDI4YWY3MWY3NDRjNzQzZDkw
ZDM4MzhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTcwLDYgKzcwLDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
QVBJIHsKK2NsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNs
YXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CkBAIC0xMzQsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rp
b25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqKTsKICAgICB2b2lk
IHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQ+KTsKICAgICB2b2lkIHNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkRvd25sb2FkQ2xpZW50Pik7CisgICAgdm9pZCBzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KTsKIAogICAgIHZvaWQgc2V0TWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1i
ZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Q
cm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vz
c0NvdW50KCk7IH0KQEAgLTI0OSw2ICsyNTEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbigpIHsgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkID0gZmFs
c2U7IH0KICAgICB2b2lkIGVuYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpOwogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3Q7
CisjZW5kaWYKKwogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgogICAgIHZvaWQgc2V0SFRUUFBp
cGVsaW5pbmdFbmFibGVkKGJvb2wpOwogICAgIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCkg
Y29uc3Q7CkBAIC00MTYsNiArNDIyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvbnRleHRDbGll
bnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9u
Q2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0
b21hdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4g
bV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTdjZmIyNTk0NzViNmJkNDc3
OWFkMmIwYTdlYjUzNWQ1ZTQxYzgwOC4uZWNhNTI2MDc5ZDgwYzcwZjQ5ODhiYzBjMTc1ZDU2NzE2
MTc2ODBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI0Nyw2ICsxMjQ3LDEwIEBACiAJCTkzQTg4QjQ3MUJDODgyOTcwMEFC
QTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTg4QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0
UmVzdWx0LmNwcCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxv
YWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNF
NkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBF
NyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTlDODFENTkxQzIwRTFFNTAwNUM0QzgyIC8qIEF1dG9tYXRpb25D
bGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLzsgfTsKKwkJ
OTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVD
NEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CisJCTk5QzgxRDVEMUMyMUYzOEIwMDVD
NEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21h
dGlvbkNsaWVudC5oICovOyB9OworCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0
b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUY1
NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgx
QSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgx
QSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8q
IFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLzsgfTsKQEAgLTM0NDIsNiArMzQ0NiwxMCBAQAogCQk5M0E4OEI0MzFCQzg4MjhD
MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8q
IF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUM4MUQ1NTFD
MjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDODFENUIxQzIwRTgxNzAwNUM0Qzgy
IC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRoID0gbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTA2LDYgKzQ5MTQs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTdERDVCQjE4
MERBN0M0MDA4MTY2MEIgLyogRGF0YWJhc2VzICovLAorCQkJCTk5QzgxRDU1MUMyMERGQkUwMDVD
NEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi8sCisJCQkJOTlDODFENTYxQzIwREZCRTAwNUM0
QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMwQjAwMzBG
Mzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIxQTY4QzMw
QjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAogCQkJCUExREY2MzEx
MThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLApAQCAtNTI3Niw2ICs1Mjg2
LDcgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQk5OUU3MTRDMTFDMTI0OUU2MDA2
NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMUE1NzA0RjYxQkUwMUZG
NDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3MDRG
NTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJ
CQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZS5oICovLApAQCAtNjI2Nyw2ICs2Mjc4LDcgQEAKIAkJCQkzN0M0QzA4MzE4MTQ5QzJBMDAzNjg4
QjkgLyogQ29jb2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNwcCAqLywK
IAkJCQlCQzExMUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJCTk5QzgxRDVCMUMy
MEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJMDc2RTg4NEQx
QTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJODM4OTFC
NjIxQTY4QjM0MjAwMzBGMzg2IC8qIEFQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJ
CQkJMUY3RDM2QzAxOERBNTEzRjAwRDlENjU5IC8qIEFQSURvd25sb2FkQ2xpZW50LmggKi8sCkBA
IC03Nzk0LDYgKzc4MDYsNyBAQAogCQkJCUU0MTNGNTlEMUFDMUFEQzQwMDM0NTM2MCAvKiBOZXR3
b3JrQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZC
MTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MkUw
NjEwMUFBNzUyM0IwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2RUNFMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3
b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMUVFQkJEMUJEODVDNDMwMEJCNjRD
MyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTUsNiArNzkyOCw3IEBACiAJCQkJMUFGREU2NUEx
OTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEw
MDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NDIwRTUxMkRDRTJGRjAwQ0FBRTJDIC8qIFNo
YXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyMTc0NjExNjRDMjBFMzAwMzdB
NUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QkVENTEy
MDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTgzNDcs
NiArODM2MSw3IEBACiAJCQkJMUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5j
ZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RUIxMTcxOERCNkExOTAwNzkxN0My
IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDEx
MkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlc1JlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNjYxOEJCRTNEOTAwMEZDRkM5IC8q
IFdLUHJpbnRpbmdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JBQUNFQjE0NTIyNUUzMDA1
M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwNjYsNiArMTAw
ODEsNyBAQAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2Uu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3Jv
bGxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlEQzAwMTQyQ0E1IC8q
IFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OUM4MUQ1OTFDMjBFMUU1
MDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQ0Qx
QzVEMUIzNDkzQUYwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNDA3NjAzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NUE4RDJEODE4N0QzMDQwMDBDMzlDOUUgLyog
V0tTZXNzaW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="293278"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>