<?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>168010</bug_id>
          
          <creation_ts>2017-02-08 11:52:26 -0800</creation_ts>
          <short_desc>[WebRTC][Mac][WebKit2] Conditionally add sandbox extensions to the Network Process</short_desc>
          <delta_ts>2017-02-16 11:42:23 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=167293</see_also>
          <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>
          <dependson>168438</dependson>
          <blocked>168242</blocked>
    
    <blocked>168243</blocked>
    
    <blocked>167289</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>agouaillard</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274482</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-08 11:52:26 -0800</bug_when>
    <thetext>Conditionally add sandbox extensions to the Network Process when the WebRTC/Media Capture features are enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274740</commentid>
    <comment_count>1</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-02-08 21:06:34 -0800</bug_when>
    <thetext>rdar://problem/30245503</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276072</commentid>
    <comment_count>2</comment_count>
      <attachid>301326</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-12 18:45:08 -0800</bug_when>
    <thetext>Created attachment 301326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276073</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 18:46:53 -0800</bug_when>
    <thetext>Attachment 301326 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:120:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:316:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:324:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276292</commentid>
    <comment_count>4</comment_count>
      <attachid>301371</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-13 12:19:52 -0800</bug_when>
    <thetext>Created attachment 301371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276306</commentid>
    <comment_count>5</comment_count>
      <attachid>301371</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-13 12:35:36 -0800</bug_when>
    <thetext>Comment on attachment 301371
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        Note: This does not yet do anything in the UIProcess to confirm we should expand the sandbox.

Not yet...

&gt; Source/WebKit2/ChangeLog:18
&gt; +        2. Each NetworkRTCProvider should remember what sandbox extensions were created on its behalf,
&gt; +           and revoke them when closing down.

Since the NetworkRTCProvider is kind of owned by the NetworkConnectionToWebProcess, we might not want to wait until that WebProcess closes before revoking the sandbox extensions.  For example, if a user navigated to a page that used WebRTC once a few months ago and then navigated away, we don&apos;t want to keep the sandbox extension.  Closing it earlier will require a change to something that isn&apos;t touched by this patch, though.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:50
&gt; +#if USE(LIBWEBRTC)
&gt; +#include &lt;wtf/text/StringBuilder.h&gt;

Let&apos;s include this unconditionally.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:309
&gt; +    WTFLogAlways(&quot;NetworkProcessProxy::grantSandboxExtensionsToRTCProvider: Expanding sandbox to include: %s&quot;, extensionBuilder.toString().utf8().data());

Do we really want to WTFLogAlways this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276312</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 12:47:03 -0800</bug_when>
    <thetext>Some discussion items we discussed with brent &amp; ap:
- Having the extension be passed as a Ref&lt;&gt;&amp;&amp;
- Adding a failure message to remove the handler if denied
- The UI process may still want to have something to say about TCP client sockets even though these might not need any sandbox extension (to be checked)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276413</commentid>
    <comment_count>7</comment_count>
      <attachid>301405</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-13 15:50:27 -0800</bug_when>
    <thetext>Created attachment 301405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276429</commentid>
    <comment_count>8</comment_count>
      <attachid>301405</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 16:17:10 -0800</bug_when>
    <thetext>Comment on attachment 301405
Patch

LGTM.
A few nits below.

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:229
&gt; +    HashMap&lt;uint64_t, Function&lt;void(RefPtr&lt;SandboxExtension&gt;)&gt;&gt; m_sandboxExtensionsForRTCProviderCompletionHandlers;

Shouldn&apos;t it be Function&lt;void(Ref&lt;SandboxExtension&gt;)&amp;&amp;&gt; ?

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.messages.in:81
&gt; +    DidGrantSandboxExtensionsToRTCProvider(uint64_t identifier, WebKit::SandboxExtension::Handle handle)

s/Handle handle/Handle/

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:81
&gt; +        [this, identifier, socketAddress, minPort, maxPort](Ref&lt;SandboxExtension&gt;&amp;&amp; extension) {

You need to ensure that &quot;this&quot; is not captured by taking a ref from it, something like:
protectedThis = makeRef(*this).

That is why we also need to ensure the UI process actually denies access instead of not responding, should we have a need for it.
Not sure how to best keep that information.
Maybe a comment in the UI process code?

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:83
&gt; +            callOnRTCNetworkThread([this, identifier, socketAddress, minPort, maxPort]() {

No need here to protect &quot;this&quot; since NetworkRTCProvider::NetworkRTCProvider does it for you.

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:113
&gt; +    WTFLogAlways(&quot;NetworkRTCProvider::createClientTCPSocket: Remind me to open a client TCP socket from %s to %s once I have an extension.&quot;, localAddress.utf8().data(), remoteAddress.utf8().data());

Why having this log here?

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.h:105
&gt; +    Vector&lt;RefPtr&lt;SandboxExtension&gt;&gt; m_sandboxExtensions;

We support Vector&lt;Ref&lt;&gt;&gt; I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276463</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 17:14:56 -0800</bug_when>
    <thetext>Some discussion items related to webrtc networking and sandbox and have webrtc networking in its own process.
That would have a few benefits:
- No need to relax the current network process sandbox
- Tighten webrtc networking sandbox (no file access...)
- No risk of compromising the network process with libwebrtc code issues
- Go directly from libwebrtc network thread (in the web process) to webrtc networking process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276466</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-13 17:18:03 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Some discussion items related to webrtc networking and sandbox and have
&gt; webrtc networking in its own process.
&gt; That would have a few benefits:
&gt; - No need to relax the current network process sandbox
&gt; - Tighten webrtc networking sandbox (no file access...)
&gt; - No risk of compromising the network process with libwebrtc code issues
&gt; - Go directly from libwebrtc network thread (in the web process) to webrtc
&gt; networking process

Yeah -- given some of the limitations in what we can dynamically change in the sandbox, moving to a separate process would probably be a better model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277441</commentid>
    <comment_count>11</comment_count>
      <attachid>301682</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-15 17:56:17 -0800</bug_when>
    <thetext>Created attachment 301682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277483</commentid>
    <comment_count>12</comment_count>
      <attachid>301682</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-15 20:41:01 -0800</bug_when>
    <thetext>Comment on attachment 301682
Patch

Since we are not able to consume the network sandbox extension, I would remove the code related to it from this patch.
The grant/deny callback would then be Function&lt;void()&gt;&gt;.

I would also consider splitting the verification to check for socket opening by the UIProcess in a separate patch.

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:316
&gt; +void NetworkProcess::grantSandboxExtensionsToRTCProvider(const String&amp; protocol, const String&amp; address, uint16_t minPort, uint16_t maxPort, Function&lt;void(Ref&lt;SandboxExtension&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

If we keep this mechanism, I would rename it to something like grantRTCConnection/denyRTCConnection.
When being allowed, a sandbox extension might be given if the network process can handle dynamic extension.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:319
&gt; +    m_sandboxExtensionsForRTCProviderCompletionHandlers.set(requestID, WTFMove(completionHandler));

I would rename it to m_pendingConnections.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:229
&gt; +    HashMap&lt;uint64_t, Function&lt;void(Ref&lt;SandboxExtension&gt;)&gt;&gt; m_sandboxExtensionsForRTCProviderCompletionHandlers;

If we keep it, it should probably be Function&lt;void(Ref&lt;SandboxExtension&gt;&amp;&amp;&gt;

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:112
&gt; +    WTFLogAlways(&quot;NetworkRTCProvider::createClientTCPSocket: Remind me to open a client TCP socket from %s to %s once I have an extension.&quot;, localAddress.utf8().data(), remoteAddress.utf8().data());

Is it needed?

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.h:105
&gt; +    Vector&lt;RefPtr&lt;SandboxExtension&gt;&gt; m_sandboxExtensions;

Should be a Vector of Ref.

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:249
&gt; +    bool webRTCEnabled = m_defaultPageGroup-&gt;preferences().peerConnectionEnabled();

We should test for mediaStreamEnabled, so s/webRTCEnabled/mediaStreamEnabled.
Also we redefine webRTCEnabled below, this would fix the issue here.

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:307
&gt; +#if ENABLE(MEDIA_STREAM)

Should be ENABLE(WEB_RTC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277724</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-16 10:15:33 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 301682 [details]
&gt; Patch
&gt; 
&gt; I would also consider splitting the verification to check for socket opening
&gt; by the UIProcess in a separate patch.

I&apos;ll land that patch under Bug 168242.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277774</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-02-16 11:42:23 -0800</bug_when>
    <thetext>Committed r212451: &lt;http://trac.webkit.org/changeset/212451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301326</attachid>
            <date>2017-02-12 18:45:08 -0800</date>
            <delta_ts>2017-02-13 12:19:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168010-20170212184237.patch</filename>
            <type>text/plain</type>
            <size>23214</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjIxNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTAyLTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdW01hY10gQ29u
ZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRlbnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAxMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAyNDU1MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRl
bnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3Mgd2hlbiB0aGUgV2ViUlRDL01lZGlhIENhcHR1
cmUKKyAgICAgICAgZmVhdHVyZXMgYXJlIGVuYWJsZWQuCisgICAgICAgIAorICAgICAgICBOb3Rl
OiBUaGlzIGRvZXMgbm90IHlldCBkbyBhbnl0aGluZyBpbiB0aGUgVUlQcm9jZXNzIHRvIGNvbmZp
cm0gd2Ugc2hvdWxkIGV4cGFuZCB0aGUgc2FuZGJveC4KKworICAgICAgICBDaGFuZ2VzOgorICAg
ICAgICAxLiBNb2RpZnkgTmV0d29ya1Byb2Nlc3MgdG8ga2VlcCBhIHNldCBvZiBwZW5kaW5nIGNv
bXBsZXRpb24gaGFuZGxlcnMgZm9yIFdlYlJUQyBjb25uZWN0aW9uCisgICAgICAgICAgIHNhbmRi
b3ggZXhwYW5zaW9uIHJlcXVlc3RzLgorICAgICAgICAyLiBFYWNoIE5ldHdvcmtSVENQcm92aWRl
ciBzaG91bGQgcmVtZW1iZXIgd2hhdCBzYW5kYm94IGV4dGVuc2lvbnMgd2VyZSBjcmVhdGVkIG9u
IGl0cyBiZWhhbGYsCisgICAgICAgICAgIGFuZCByZXZva2UgdGhlbSB3aGVuIGNsb3NpbmcgZG93
bi4KKyAgICAgICAgMy4gQ3JlYXRlIG5ldHdvcmsgc2FuZGJveCBleHRlbnNpb25zIGFzIE5ldHdv
cmtSVENQcm92aWRlciBjcmVhdGVzIG5ldyBjb25uZWN0aW9ucy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQ
cm92aWRlckZvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIpOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSVENQcm92aWRlcjo6Y3JlYXRlU2VydmVyVENQU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxNy0wMi0xMiAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU29tZSAtcmVzcG9uZHNU
b1NlbGVjdG9yOiBjaGVja3MgYXJlIHVubmVjZXNzYXJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCShyZXZpc2lvbiAyMTIxNjgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDE4ICszNCwxOSBAQCBNT0RVTEVNQVBfRklMRVtzZGs9aXBob25lKl09TW9kdWxl
cy9pT1MuCiBJTlNUQUxMX1BBVEggPSAkKFdFQktJVF9GUkFNRVdPUktTX0RJUik7CiBEWUxJQl9J
TlNUQUxMX05BTUVfQkFTRSA9ICQoTk9STUFMX1dFQktJVF9GUkFNRVdPUktTX0RJUik7CiAKK0xJ
QldFQlJUQ19MREZMQUdTID0gIC1sYm9yaW5nc3NsIC1sd2VicnRjOwogRlJBTUVXT1JLX0FORF9M
SUJSQVJZX0xERkxBR1NfQkFTRV9pb3MgPSAtbG9iamMgLWZyYW1ld29yayBBc3NlcnRpb25TZXJ2
aWNlcyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFt
ZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVBERiAtZnJhbWV3b3JrIENvcmVUZXh0
IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEdyYXBoaWNzU2VydmljZXMgLWZyYW1l
d29yayBJbWFnZUlPIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29yayBPcGVuR0xFUyAtZnJhbWV3
b3JrIE1vYmlsZUNvcmVTZXJ2aWNlcyAtbE1vYmlsZUdlc3RhbHQgJChGUkFNRVdPUktfQU5EX0xJ
QlJBUllfTERGTEFHU19QTEFURk9STV8kKFBMQVRGT1JNX05BTUUpKTsKLUZSQU1FV09SS19BTkRf
TElCUkFSWV9MREZMQUdTW3Nkaz1pcGhvbmVvcypdID0gJChGUkFNRVdPUktfQU5EX0xJQlJBUllf
TERGTEFHU19CQVNFX2lvcykgLWZyYW1ld29yayBJT1N1cmZhY2U7Ci1GUkFNRVdPUktfQU5EX0xJ
QlJBUllfTERGTEFHU1tzZGs9aXBob25lc2ltdWxhdG9yKl0gPSAkKEZSQU1FV09SS19BTkRfTElC
UkFSWV9MREZMQUdTX0JBU0VfaW9zKTsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTW3Nk
az1pcGhvbmVvcypdID0gJChGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU19CQVNFX2lvcykg
LWZyYW1ld29yayBJT1N1cmZhY2UgICQoTElCV0VCUlRDX0xERkxBR1MpOworRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1Nbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gJChGUkFNRVdPUktfQU5E
X0xJQlJBUllfTERGTEFHU19CQVNFX2lvcykgJChMSUJXRUJSVENfTERGTEFHUyk7CiBGUkFNRVdP
UktfQU5EX0xJQlJBUllfTERGTEFHU19QTEFURk9STV9pcGhvbmVvcyA9IDsKIEZSQU1FV09SS19B
TkRfTElCUkFSWV9MREZMQUdTX1BMQVRGT1JNX2lwaG9uZXNpbXVsYXRvciA9IDsKLUZSQU1FV09S
S19BTkRfTElCUkFSWV9MREZMQUdTW3Nkaz1tYWNvc3gqXSA9IC1mcmFtZXdvcmsgQXBwbGljYXRp
b25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsg
Q29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1l
d29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBPcGVuR0w7CitGUkFNRVdPUktfQU5EX0xJQlJBUllf
TERGTEFHU1tzZGs9bWFjb3N4Kl0gPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZy
YW1ld29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAt
ZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgSU9TdXJmYWNl
IC1mcmFtZXdvcmsgT3BlbkdMICQoTElCV0VCUlRDX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMr
KyBzdGFuZGFyZCBsaWJyYXJ5IG9wZXJhdG9yIG5ldywgZGVsZXRlIGFuZCB0aGVpciByZWxhdGVk
IGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5nIGV4cG9ydGVkIGFzIHdlYWsgc3ltYm9scy4KIFVO
RVhQT1JURURfU1lNQk9MX0xERkxBR1MgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pU
SVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlv
biAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtUHYgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxf
X1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVPUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3Jl
MTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVhU0VEbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBv
bGljeUFjdGlvbkVFRWNsRVMyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19f
MThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBFUlM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFQzFFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRVJLUzRfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25F
RUVhU0VSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aVFZOU3QzX18xMTdiYWRf
ZnVuY3Rpb25fY2FsbEU7CiAKIE9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChVTkVYUE9S
VEVEX1NZTUJPTF9MREZMQUdTKSAkKEFTQU5fT1RIRVJfTERGTEFHUykgJChGUkFNRVdPUktfQU5E
X0xJQlJBUllfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNKSAtZnJhbWV3b3JrIFdl
YktpdExlZ2FjeSAtc3ViX3VtYnJlbGxhIFdlYktpdExlZ2FjeTsKLU9USEVSX0xERkxBR1NfUExB
VEZPUk1bc2RrPW1hY29zeCpdID0gLXN1Yl91bWJyZWxsYSBXZWJDb3JlOworT1RIRVJfTERGTEFH
U19QTEFURk9STVtzZGs9bWFjb3N4Kl0gPSAtc3ViX3VtYnJlbGxhIFdlYkNvcmUgLWxib3Jpbmdz
c2wgLWx3ZWJydGM7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNW3Nkaz1pcGhvbmVvcypdID0gLWxB
Y2Nlc3NpYmlsaXR5OwogT1RIRVJfTERGTEFHU19QTEFURk9STVtzZGs9aXBob25lc2ltdWxhdG9y
Kl0gPSAtbEFjY2Vzc2liaWxpdHk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIxMjE2OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxMiw2ICszMTIsMzMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5k
Ym94RXh0ZQogICAgICAgICBoYW5kbGVyKCk7CiB9CiAKKyNpZiBVU0UoTElCV0VCUlRDKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIoY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Q
b3J0LCB1aW50MTZfdCBtYXhQb3J0LCBGdW5jdGlvbjx2b2lkIChSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
ICsrbV9sYXN0UmVxdWVzdFJUQ1Byb3ZpZGVyQ29tcGxldGlvbklEOworICAgIG1fc2FuZGJveEV4
dGVuc2lvbnNGb3JSVENQcm92aWRlckNvbXBsZXRpb25IYW5kbGVycy5zZXQocmVxdWVzdElELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcihyZXF1ZXN0SUQsIHByb3RvY29sLCBhZGRyZXNzLCBtaW5Qb3J0
LCBtYXhQb3J0KSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90ZUFkZHJlc3MsIEZ1
bmN0aW9uPHZvaWQgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gKyttX2xhc3RSZXF1ZXN0UlRDUHJvdmlk
ZXJDb21wbGV0aW9uSUQ7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uc0ZvclJUQ1Byb3ZpZGVyQ29t
cGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xp
ZW50KHJlcXVlc3RJRCwgcHJvdG9jb2wsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVzcyksIDAp
OworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9S
VENQcm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgaGFuZGxlKQoreworICAgIGF1dG8gcnRjUHJvdmlkZXJFeHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoaGFuZGxlKTsKKyAgICBydGNQcm92aWRlckV4dGVuc2lvbi0+Y29u
c3VtZSgpOworCisgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fc2FuZGJveEV4dGVuc2lvbnNGb3JS
VENQcm92aWRlckNvbXBsZXRpb25IYW5kbGVycy50YWtlKHJlcXVlc3RJRCkpCisgICAgICAgIGhh
bmRsZXIocnRjUHJvdmlkZXJFeHRlbnNpb24pOworfQorI2VuZGlmCisgICAgCiBzdGF0aWMgdm9p
ZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZCAoVmVjdG9y
PFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJM
RShORVRXT1JLX0NBQ0hFKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMTIxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNiw2
ICsxMTYsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9E
YXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAorI2lmIFVTRShMSUJXRUJS
VEMpCisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcihjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQs
IHVpbnQxNl90IG1heFBvcnQsIEZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9u
c1RvUlRDUHJvdmlkZXJGb3JDbGllbnQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcywgRnVuY3Rpb248
dm9pZCAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisj
ZW5kaWYKKwogICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5j
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQogCiBwcml2YXRlOgpA
QCAtMTg4LDYgKzE5MywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHcmFudFNhbmRib3hF
eHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOwog
CisjaWYgVVNFKExJQldFQlJUQykKKyAgICB2b2lkIGRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CisjZW5kaWYKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExT
RXJyb3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mKTsKQEAgLTIxNSw2ICsyMjQsMTEgQEAgcHJpdmF0ZToKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9y
QmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPE5ldHdv
cmtSZXNvdXJjZUxvYWRlcj4+IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CiAKKyNp
ZiBVU0UoTElCV0VCUlRDKQorICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+KT4+IG1fc2FuZGJveEV4dGVuc2lvbnNGb3JSVENQcm92aWRl
ckNvbXBsZXRpb25IYW5kbGVyczsKKyAgICB1aW50NjRfdCBtX2xhc3RSZXF1ZXN0UlRDUHJvdmlk
ZXJDb21wbGV0aW9uSUQgeyAwIH07CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZVBh
cnRpdGlvbmluZ0VuYWJsZWQoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjEyMTY4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzcsNCArNzcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiAKICAgICBEaWRHcmFudFNh
bmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0
SUQpCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBEaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9S
VENQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGUpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCShy
ZXZpc2lvbiAyMTIxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsMTAgQEAK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSVENTb2NrZXQuaCIKICNpbmNsdWRlICJXZWJSVENSZXNvbHZlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KQEAgLTY1LDYgKzY3LDkgQEAg
dm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlKCkKICAgICBjYWxsT25SVENOZXR3b3JrVGhy
ZWFkKFt0aGlzXSgpIHsKICAgICAgICAgbV9zb2NrZXRzLmNsZWFyKCk7CiAgICAgfSk7CisKKyAg
ICBmb3IgKGF1dG8gZXh0ZW5zaW9uIDogbV9zYW5kYm94RXh0ZW5zaW9ucykKKyAgICAgICAgZXh0
ZW5zaW9uLT5yZXZva2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVE
UFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MsIHVpbnQx
Nl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC03MiwxMCArNzcsMTQgQEAgdm9pZCBO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldAogICAgIHJ0Yzo6U29ja2V0QWRkcmVz
cyBzb2NrZXRBZGRyZXNzOwogICAgIHNvY2tldEFkZHJlc3MuRnJvbVN0cmluZyhhZGRyZXNzLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRp
Zmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oKSB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRG
YWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCkp
OwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldl
YlJUQ1NvY2tldENsaWVudDo6VHlwZTo6VURQKSk7Ci0gICAgfSk7CisgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKCJ1ZHAi
LCBhZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0LAorICAgICAgICBbdGhpcywgaWRlbnRpZmllciwg
c29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
IGV4dGVuc2lvbikgeworICAgICAgICAgICAgdGhpcy0+bV9zYW5kYm94RXh0ZW5zaW9ucy5hcHBl
bmQoZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMs
IGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnRdKCkgeworICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQo
bV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRkcmVzcywgbWlu
UG9ydCwgbWF4UG9ydCkpOworICAgICAgICAgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMs
IFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpVRFApKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmNyZWF0ZVNlcnZlclRDUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGludCBvcHRpb25z
KQpAQCAtODMsMTAgKzkyLDE0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTZXJ2
ZXJUQ1AKICAgICBydGM6OlNvY2tldEFkZHJlc3Mgc29ja2V0QWRkcmVzczsKICAgICBzb2NrZXRB
ZGRyZXNzLkZyb21TdHJpbmcoYWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGNhbGxPblJU
Q05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQs
IG1heFBvcnQsIG9wdGlvbnNdKCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlU2VydmVy
VGNwU29ja2V0KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnMpKTsKLSAg
ICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENT
b2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCkpOwotICAgIH0pOworICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcigidGNw
IiwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwKKyAgICAgICAgW3RoaXMsIGlkZW50aWZpZXIs
IHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPiBleHRlbnNpb24pIHsKKyAgICAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMu
YXBwZW5kKGV4dGVuc2lvbik7CisgICAgICAgICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0
aGlzLCBpZGVudGlmaWVyLCBzb2NrZXRBZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25z
XSgpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNv
Y2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlU2VydmVyVGNwU29ja2V0
KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnMpKTsKKyAgICAgICAgICAg
ICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1Nv
Y2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQo
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0
cmluZyYgcmVtb3RlQWRkcmVzcywgaW50IG9wdGlvbnMpCkBAIC05NywxMCArMTEwLDE2IEBAIHZv
aWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1AKICAgICBydGM6OlNvY2tldEFk
ZHJlc3Mgc29ja2V0UmVtb3RlQWRkcmVzczsKICAgICBzb2NrZXRSZW1vdGVBZGRyZXNzLkZyb21T
dHJpbmcocmVtb3RlQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGNhbGxPblJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldExvY2FsQWRkcmVzcywgc29ja2V0UmVt
b3RlQWRkcmVzcywgb3B0aW9uc10oKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVDbGll
bnRUY3BTb2NrZXQoc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRSZW1vdGVBZGRyZXNzLCB7IH0s
IHsgfSwgb3B0aW9ucykpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3Zl
KHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6Q2xpZW50VENQKSk7Ci0gICAg
fSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZUNsaWVudFRD
UFNvY2tldDogUmVtaW5kIG1lIHRvIG9wZW4gYSBjbGllbnQgVENQIHNvY2tldCBmcm9tICVzIHRv
ICVzIG9uY2UgSSBoYXZlIGFuIGV4dGVuc2lvbi4iLCBsb2NhbEFkZHJlc3MudXRmOCgpLmRhdGEo
KSwgcmVtb3RlQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKKworICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlckZvckNsaWVudCgi
dGNwIiwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzLAorICAgICAgICBbdGhpcywgaWRlbnRp
Zmllciwgc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRSZW1vdGVBZGRyZXNzLCBvcHRpb25zXShS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBtX3NhbmRi
b3hFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOworICAgICAgICAgICAgY2FsbE9uUlRDTmV0
d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRS
ZW1vdGVBZGRyZXNzLCBvcHRpb25zXSgpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+
Q3JlYXRlQ2xpZW50VGNwU29ja2V0KHNvY2tldExvY2FsQWRkcmVzcywgc29ja2V0UmVtb3RlQWRk
cmVzcywgeyB9LCB7IH0sIG9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICBhZGRTb2NrZXQoaWRl
bnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZp
ZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6
Q2xpZW50VENQKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTmV0
d29ya1JUQ1Byb3ZpZGVyOjphZGRTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPExpYldlYlJUQ1NvY2tldENsaWVudD4mJiBzb2NrZXQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oCShyZXZpc2lvbiAyMTIxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldENsaWVudC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSVENNb25pdG9yLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jv
cy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3NpZ3Nsb3QuaD4KQEAgLTEwMSw2ICsxMDIsNyBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBtX3J0Y05ldHdv
cmtUaHJlYWQ7CiAgICAgVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PiBt
X3BhY2tldFNvY2tldEZhY3Rvcnk7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gbV9zYW5kYm94RXh0ZW5zaW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIxMjE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDYsNiArNDYsMTAgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNl
bmRpZgogCisjaWYgVVNFKExJQldFQlJUQykKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisjZW5kaWYKKwogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FH
RV9DSEVDS19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbigpKQogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTI5Miw2ICsyOTYsNTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
cmFudFNhbmRib3hFeAogI2VuZGlmCiB9CiAKKyNpZiBVU0UoTElCV0VCUlRDKQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgYWRk
cmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKK3sKKyAgICAvLyBGSVhN
RTogRGVjaWRlIGlmIHdlIHNob3VsZCBncmFudCBhbiBleHRlbnNpb24uCisKKyAgICBTdHJpbmdC
dWlsZGVyIGV4dGVuc2lvbkJ1aWxkZXI7CisgICAgZXh0ZW5zaW9uQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJuZXR3b3JrKiAocmVtb3RlICIpOworICAgIGV4dGVuc2lvbkJ1aWxkZXIuYXBwZW5kKHBy
b3RvY29sKTsKKyAgICBleHRlbnNpb25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBcIiIpOworICAg
IGV4dGVuc2lvbkJ1aWxkZXIuYXBwZW5kKGFkZHJlc3MpOworICAgIGV4dGVuc2lvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiXCIpIik7CisKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtQcm9jZXNz
UHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyOiBFeHBhbmRpbmcgc2Fu
ZGJveCB0byBpbmNsdWRlOiAlcyIsIGV4dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0hhbmRs
ZTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9u
KGV4dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSwgbmV0d29ya0hhbmRsZSk7CisKKyAgICBjb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRHcmFudFNhbmRib3hF
eHRlbnNpb25zVG9SVENQcm92aWRlcihyZXF1ZXN0SUQsIG5ldHdvcmtIYW5kbGUpLCAwKTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQ
cm92aWRlckZvckNsaWVudCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90ZUFkZHJl
c3MpCit7CisgICAgLy8gRklYTUU6IERlY2lkZSBpZiB3ZSBzaG91bGQgZ3JhbnQgYW4gZXh0ZW5z
aW9uLgorICAgIAorICAgIFN0cmluZ0J1aWxkZXIgZXh0ZW5zaW9uQnVpbGRlcjsKKyAgICBleHRl
bnNpb25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIm5ldHdvcmsqIChsb2NhbCAiKTsKKyAgICBleHRl
bnNpb25CdWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CisgICAgZXh0ZW5zaW9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgXCIiKTsKKyAgICBleHRlbnNpb25CdWlsZGVyLmFwcGVuZChsb2NhbEFkZHJl
c3MpOworICAgIGV4dGVuc2lvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIpIChyZW1vdGUgIik7
CisgICAgZXh0ZW5zaW9uQnVpbGRlci5hcHBlbmQocHJvdG9jb2wpOworICAgIGV4dGVuc2lvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFwiIik7CisgICAgZXh0ZW5zaW9uQnVpbGRlci5hcHBlbmQo
cmVtb3RlQWRkcmVzcyk7CisgICAgZXh0ZW5zaW9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiki
KTsKKyAgICAKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50OiBFeHBhbmRpbmcgc2FuZGJveCB0
byBpbmNsdWRlOiAlcyIsIGV4dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0hhbmRsZTsKKyAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKGV4dGVu
c2lvbkJ1aWxkZXIudG9TdHJpbmcoKSwgbmV0d29ya0hhbmRsZSk7CisgICAgCisgICAgY29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkR3JhbnRTYW5kYm94RXh0
ZW5zaW9uc1RvUlRDUHJvdmlkZXIocmVxdWVzdElELCBuZXR3b3JrSGFuZGxlKSwgMCk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJv
Y2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDIxMjE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDksNiArMTA5LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0Zv
ckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsK
KyNpZiBVU0UoTElCV0VCUlRDKQorICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRD
UHJvdmlkZXIodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpOwor
ICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGllbnQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGxv
Y2FsQWRkcmVzcywgY29uc3QgU3RyaW5nJiByZW1vdGVBZGRyZXNzKTsKKyNlbmRpZgogICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25p
ZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjEyMTY4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw0ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIENhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25T
cGFjZSkKICNlbmRpZgorCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIFN0cmluZyBwcm90b2NvbCwg
U3RyaW5nIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCisgICAg
R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGllbnQodWludDY0X3QgcmVx
dWVzdElELCBTdHJpbmcgcHJvdG9jb2wsIFN0cmluZyBsb2NhbCwgU3RyaW5nIHJlbW90ZUFkZHJl
c3MpCisjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301371</attachid>
            <date>2017-02-13 12:19:52 -0800</date>
            <delta_ts>2017-02-13 15:50:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168010-20170213121720.patch</filename>
            <type>text/plain</type>
            <size>19182</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTAyLTEzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdW01hY10gQ29u
ZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRlbnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAxMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAyNDU1MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRl
bnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3Mgd2hlbiB0aGUgV2ViUlRDL01lZGlhIENhcHR1
cmUKKyAgICAgICAgZmVhdHVyZXMgYXJlIGVuYWJsZWQuCisgICAgICAgIAorICAgICAgICBOb3Rl
OiBUaGlzIGRvZXMgbm90IHlldCBkbyBhbnl0aGluZyBpbiB0aGUgVUlQcm9jZXNzIHRvIGNvbmZp
cm0gd2Ugc2hvdWxkIGV4cGFuZCB0aGUgc2FuZGJveC4KKworICAgICAgICBDaGFuZ2VzOgorICAg
ICAgICAxLiBNb2RpZnkgTmV0d29ya1Byb2Nlc3MgdG8ga2VlcCBhIHNldCBvZiBwZW5kaW5nIGNv
bXBsZXRpb24gaGFuZGxlcnMgZm9yIFdlYlJUQyBjb25uZWN0aW9uCisgICAgICAgICAgIHNhbmRi
b3ggZXhwYW5zaW9uIHJlcXVlc3RzLgorICAgICAgICAyLiBFYWNoIE5ldHdvcmtSVENQcm92aWRl
ciBzaG91bGQgcmVtZW1iZXIgd2hhdCBzYW5kYm94IGV4dGVuc2lvbnMgd2VyZSBjcmVhdGVkIG9u
IGl0cyBiZWhhbGYsCisgICAgICAgICAgIGFuZCByZXZva2UgdGhlbSB3aGVuIGNsb3NpbmcgZG93
bi4KKyAgICAgICAgMy4gQ3JlYXRlIG5ldHdvcmsgc2FuZGJveCBleHRlbnNpb25zIGFzIE5ldHdv
cmtSVENQcm92aWRlciBjcmVhdGVzIG5ldyBjb25uZWN0aW9ucy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQ
cm92aWRlckZvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIpOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSVENQcm92aWRlcjo6Y3JlYXRlU2VydmVyVENQU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxNy0wMi0xMyAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZp
ZXdlZCwgYWRkIG1pc3NpbmcgcHJlY29uZGl0aW9uIGNoZWNrCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTIy
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMTIsNiArMzEyLDMzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRpZEdyYW50U2FuZGJveEV4dGUKICAgICAgICAgaGFuZGxlcigpOwogfQogCisjaWYgVVNFKExJ
QldFQlJUQykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JU
Q1Byb3ZpZGVyKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywg
dWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgRnVuY3Rpb248dm9pZChSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9ICsrbV9sYXN0UmVxdWVzdFJUQ1Byb3ZpZGVyQ29tcGxldGlvbklEOworICAg
IG1fc2FuZGJveEV4dGVuc2lvbnNGb3JSVENQcm92aWRlckNvbXBsZXRpb25IYW5kbGVycy5zZXQo
cmVxdWVzdElELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpHcmFu
dFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcihyZXF1ZXN0SUQsIHByb3RvY29sLCBhZGRy
ZXNzLCBtaW5Qb3J0LCBtYXhQb3J0KSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90
ZUFkZHJlc3MsIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK21fbGFzdFJlcXVl
c3RSVENQcm92aWRlckNvbXBsZXRpb25JRDsKKyAgICBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRD
UHJvdmlkZXJDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJlcXVlc3RJRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworCisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJv
dmlkZXJGb3JDbGllbnQocmVxdWVzdElELCBwcm90b2NvbCwgbG9jYWxBZGRyZXNzLCByZW1vdGVB
ZGRyZXNzKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpCit7CisgICAgYXV0byBydGNQcm92aWRlckV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShoYW5kbGUpOworICAgIHJ0Y1Byb3ZpZGVyRXh0
ZW5zaW9uLT5jb25zdW1lKCk7CisKKyAgICBpZiAoYXV0byBoYW5kbGVyID0gbV9zYW5kYm94RXh0
ZW5zaW9uc0ZvclJUQ1Byb3ZpZGVyQ29tcGxldGlvbkhhbmRsZXJzLnRha2UocmVxdWVzdElEKSkK
KyAgICAgICAgaGFuZGxlcihydGNQcm92aWRlckV4dGVuc2lvbik7Cit9CisjZW5kaWYKKyAgICAK
IHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBGdW5jdGlvbjx2
b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTE2LDYgKzExNiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCisjaWYg
VVNFKExJQldFQlJUQykKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3Zp
ZGVyKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywgdWludDE2
X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgRnVuY3Rpb248dm9pZChSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdyYW50U2FuZGJv
eEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IGNvbnN0IFN0cmluZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90ZUFkZHJlc3Ms
IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisjZW5kaWYKKwogICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbG9hZFRocm90
dGxlTGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQogCiBw
cml2YXRlOgpAQCAtMTg4LDYgKzE5MywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHcmFu
dFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1
ZXN0SUQpOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICB2b2lkIGRpZEdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CisjZW5kaWYKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0
SWdub3JlVExTRXJyb3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0No
YW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKQEAgLTIxNSw2ICsyMjQsMTEgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkICgpPj4gbV9zYW5kYm94RXh0
ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRl
cnM7CiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+KT4+IG1fc2FuZGJveEV4dGVuc2lvbnNGb3JS
VENQcm92aWRlckNvbXBsZXRpb25IYW5kbGVyczsKKyAgICB1aW50NjRfdCBtX2xhc3RSZXF1ZXN0
UlRDUHJvdmlkZXJDb21wbGV0aW9uSUQgeyAwIH07CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25z
dCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0Q29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjEyMjMwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsNCArNzcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiAKICAgICBE
aWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRf
dCByZXF1ZXN0SUQpCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBEaWRHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBoYW5kbGUpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwCShyZXZpc2lvbiAyMTIyMzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCAr
MjgsMTAgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtSVENTb2NrZXQuaCIKICNpbmNsdWRlICJXZWJSVENSZXNvbHZlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KQEAgLTY1LDYg
KzY3LDkgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlKCkKICAgICBjYWxsT25SVENO
ZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKICAgICAgICAgbV9zb2NrZXRzLmNsZWFyKCk7CiAgICAg
fSk7CisKKyAgICBmb3IgKGF1dG8gZXh0ZW5zaW9uIDogbV9zYW5kYm94RXh0ZW5zaW9ucykKKyAg
ICAgICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmNyZWF0ZVVEUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJl
c3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC03MiwxMCArNzcsMTQg
QEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldAogICAgIHJ0Yzo6U29j
a2V0QWRkcmVzcyBzb2NrZXRBZGRyZXNzOwogICAgIHNvY2tldEFkZHJlc3MuRnJvbVN0cmluZyhh
ZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhp
cywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oKSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNr
ZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRkcmVzcywgbWluUG9ydCwg
bWF4UG9ydCkpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tl
dCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6VURQKSk7Ci0gICAgfSk7CisgICAgTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3Zp
ZGVyKCJ1ZHAiLCBhZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0LAorICAgICAgICBbdGhpcywgaWRl
bnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oUmVmUHRyPFNhbmRib3hF
eHRlbnNpb24+IGV4dGVuc2lvbikgeworICAgICAgICAgICAgdGhpcy0+bV9zYW5kYm94RXh0ZW5z
aW9ucy5hcHBlbmQoZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIGNhbGxPblJUQ05ldHdvcmtUaHJl
YWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnRdKCkg
eworICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0
PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRk
cmVzcywgbWluUG9ydCwgbWF4UG9ydCkpOworICAgICAgICAgICAgICAgIGFkZFNvY2tldChpZGVu
dGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmll
ciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpV
RFApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVNlcnZlclRDUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGlu
dCBvcHRpb25zKQpAQCAtODMsMTAgKzkyLDE0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpj
cmVhdGVTZXJ2ZXJUQ1AKICAgICBydGM6OlNvY2tldEFkZHJlc3Mgc29ja2V0QWRkcmVzczsKICAg
ICBzb2NrZXRBZGRyZXNzLkZyb21TdHJpbmcoYWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAotICAg
IGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3Ms
IG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3Jl
YXRlU2VydmVyVGNwU29ja2V0KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlv
bnMpKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBM
aWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCkpOwotICAgIH0pOworICAgIE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92
aWRlcigidGNwIiwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwKKyAgICAgICAgW3RoaXMsIGlk
ZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24pIHsKKyAgICAgICAgICAgIG1fc2FuZGJveEV4
dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbik7CisgICAgICAgICAgICBjYWxsT25SVENOZXR3b3Jr
VGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBzb2NrZXRBZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0
LCBvcHRpb25zXSgpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlU2VydmVy
VGNwU29ja2V0KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnMpKTsKKyAg
ICAgICAgICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExp
YldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRU
Q1BTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJlc3Ms
IGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcywgaW50IG9wdGlvbnMpCkBAIC05NywxMCArMTEw
LDE2IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1AKICAgICBydGM6
OlNvY2tldEFkZHJlc3Mgc29ja2V0UmVtb3RlQWRkcmVzczsKICAgICBzb2NrZXRSZW1vdGVBZGRy
ZXNzLkZyb21TdHJpbmcocmVtb3RlQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGNhbGxP
blJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldExvY2FsQWRkcmVzcywg
c29ja2V0UmVtb3RlQWRkcmVzcywgb3B0aW9uc10oKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5D
cmVhdGVDbGllbnRUY3BTb2NrZXQoc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRSZW1vdGVBZGRy
ZXNzLCB7IH0sIHsgfSwgb3B0aW9ucykpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwg
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlz
LCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6Q2xpZW50VENQ
KSk7Ci0gICAgfSk7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0
ZUNsaWVudFRDUFNvY2tldDogUmVtaW5kIG1lIHRvIG9wZW4gYSBjbGllbnQgVENQIHNvY2tldCBm
cm9tICVzIHRvICVzIG9uY2UgSSBoYXZlIGFuIGV4dGVuc2lvbi4iLCBsb2NhbEFkZHJlc3MudXRm
OCgpLmRhdGEoKSwgcmVtb3RlQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKKworICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlckZv
ckNsaWVudCgidGNwIiwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzLAorICAgICAgICBbdGhp
cywgaWRlbnRpZmllciwgc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRSZW1vdGVBZGRyZXNzLCBv
cHRpb25zXShSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uKSB7CisgICAgICAgICAg
ICBtX3NhbmRib3hFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOworICAgICAgICAgICAgY2Fs
bE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0TG9jYWxBZGRyZXNz
LCBzb2NrZXRSZW1vdGVBZGRyZXNzLCBvcHRpb25zXSgpIHsKKyAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0
RmFjdG9yeS0+Q3JlYXRlQ2xpZW50VGNwU29ja2V0KHNvY2tldExvY2FsQWRkcmVzcywgc29ja2V0
UmVtb3RlQWRkcmVzcywgeyB9LCB7IH0sIG9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICBhZGRT
b2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+
KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVu
dDo6VHlwZTo6Q2xpZW50VENQKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAK
IHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjphZGRTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1NvY2tldENsaWVudD4mJiBzb2NrZXQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5oCShyZXZpc2lvbiAyMTIyMzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldENsaWVudC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xpYldl
YlJUQ01hY3Jvcy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3NpZ3Nsb3QuaD4KQEAgLTEwMSw2
ICsxMDIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBt
X3J0Y05ldHdvcmtUaHJlYWQ7CiAgICAgVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRG
YWN0b3J5PiBtX3BhY2tldFNvY2tldEZhY3Rvcnk7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4gbV9zYW5kYm94RXh0ZW5zaW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDYsNiArNDYsMTAgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENT
UEkuaD4KICNlbmRpZgogCisjaWYgVVNFKExJQldFQlJUQykKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjZW5kaWYKKwogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlv
bikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbigpKQogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI5Miw2ICsyOTYsNDIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpncmFudFNhbmRib3hFeAogI2VuZGlmCiB9CiAKKyNpZiBVU0UoTElCV0VCUlRDKQor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92
aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKK3sKKyAg
ICAvLyBGSVhNRSgxNjgyNDIpOiBEZWNpZGUgaWYgd2Ugc2hvdWxkIGdyYW50IGFuIGV4dGVuc2lv
bi4KKworICAgIFN0cmluZ0J1aWxkZXIgZXh0ZW5zaW9uQnVpbGRlcjsKKyAgICBleHRlbnNpb25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIm5ldHdvcmsqIik7CisKKyAgICAvLyBGSVhNRSgxNjgyNDMp
OiBDcmFmdCB0aGUgZXh0ZW5zaW9uIGZpbHRlciB0byBqdXN0IGluY2x1ZGUgdGhlIHBvcnQgd2Ug
YWN0dWFsbHkgbmVlZC4KKworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya1Byb2Nlc3NQcm94eTo6
Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXI6IEV4cGFuZGluZyBzYW5kYm94IHRv
IGluY2x1ZGU6ICVzIiwgZXh0ZW5zaW9uQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIAorICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrSGFuZGxlOworICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oZXh0ZW5z
aW9uQnVpbGRlci50b1N0cmluZygpLCBuZXR3b3JrSGFuZGxlKTsKKworICAgIGNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb1JUQ1Byb3ZpZGVyKHJlcXVlc3RJRCwgbmV0d29ya0hhbmRsZSksIDApOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVy
Rm9yQ2xpZW50KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29u
c3QgU3RyaW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcykKK3sK
KyAgICAvLyBGSVhNRSgxNjgyNDIpOiBEZWNpZGUgaWYgd2Ugc2hvdWxkIGdyYW50IGFuIGV4dGVu
c2lvbi4KKworICAgIFN0cmluZ0J1aWxkZXIgZXh0ZW5zaW9uQnVpbGRlcjsKKyAgICBleHRlbnNp
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIm5ldHdvcmsqIik7CisgICAgCisgICAgLy8gRklYTUUo
MTY4MjQzKTogQ3JhZnQgdGhlIGV4dGVuc2lvbiBmaWx0ZXIgdG8ganVzdCBpbmNsdWRlIHRoZSBw
b3J0IHdlIGFjdHVhbGx5IG5lZWQuCisKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtQcm9jZXNz
UHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50OiBFeHBh
bmRpbmcgc2FuZGJveCB0byBpbmNsdWRlOiAlcyIsIGV4dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbmV0
d29ya0hhbmRsZTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmlj
RXh0ZW5zaW9uKGV4dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSwgbmV0d29ya0hhbmRsZSk7Cisg
ICAgCisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlk
R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIocmVxdWVzdElELCBuZXR3b3JrSGFu
ZGxlKSwgMCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5p
c2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuY2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDksNiAr
MTA5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0Rh
dGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhdGhzKTsKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIHZvaWQgZ3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQx
Nl90IG1heFBvcnQpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlk
ZXJGb3JDbGllbnQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGxvY2FsQWRkcmVzcywgY29uc3QgU3RyaW5nJiByZW1vdGVBZGRyZXNzKTsK
KyNlbmRpZgogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjEyMjMwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00Miw0ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmUKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAg
IENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlIHByb3RlY3Rpb25TcGFjZSkKICNlbmRpZgorCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBH
cmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIFN0
cmluZyBwcm90b2NvbCwgU3RyaW5nIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90
IG1heFBvcnQpCisgICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGll
bnQodWludDY0X3QgcmVxdWVzdElELCBTdHJpbmcgcHJvdG9jb2wsIFN0cmluZyBsb2NhbCwgU3Ry
aW5nIHJlbW90ZUFkZHJlc3MpCisjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301405</attachid>
            <date>2017-02-13 15:50:27 -0800</date>
            <delta_ts>2017-02-15 17:56:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168010-20170213154755.patch</filename>
            <type>text/plain</type>
            <size>19786</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTAyLTEzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdW01hY10gQ29u
ZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRlbnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAxMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAyNDU1MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRl
bnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3Mgd2hlbiB0aGUgV2ViUlRDL01lZGlhIENhcHR1
cmUKKyAgICAgICAgZmVhdHVyZXMgYXJlIGVuYWJsZWQuCisgICAgICAgIAorICAgICAgICBOb3Rl
OiBUaGlzIGRvZXMgbm90IHlldCBkbyBhbnl0aGluZyBpbiB0aGUgVUlQcm9jZXNzIHRvIGNvbmZp
cm0gd2Ugc2hvdWxkIGV4cGFuZCB0aGUgc2FuZGJveC4KKworICAgICAgICBDaGFuZ2VzOgorICAg
ICAgICAxLiBNb2RpZnkgTmV0d29ya1Byb2Nlc3MgdG8ga2VlcCBhIHNldCBvZiBwZW5kaW5nIGNv
bXBsZXRpb24gaGFuZGxlcnMgZm9yIFdlYlJUQyBjb25uZWN0aW9uCisgICAgICAgICAgIHNhbmRi
b3ggZXhwYW5zaW9uIHJlcXVlc3RzLgorICAgICAgICAyLiBFYWNoIE5ldHdvcmtSVENQcm92aWRl
ciBzaG91bGQgcmVtZW1iZXIgd2hhdCBzYW5kYm94IGV4dGVuc2lvbnMgd2VyZSBjcmVhdGVkIG9u
IGl0cyBiZWhhbGYsCisgICAgICAgICAgIGFuZCByZXZva2UgdGhlbSB3aGVuIGNsb3NpbmcgZG93
bi4KKyAgICAgICAgMy4gQ3JlYXRlIG5ldHdvcmsgc2FuZGJveCBleHRlbnNpb25zIGFzIE5ldHdv
cmtSVENQcm92aWRlciBjcmVhdGVzIG5ldyBjb25uZWN0aW9ucy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQ
cm92aWRlckZvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIpOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSVENQcm92aWRlcjo6Y3JlYXRlU2VydmVyVENQU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxNy0wMi0xMyAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZp
ZXdlZCwgYWRkIG1pc3NpbmcgcHJlY29uZGl0aW9uIGNoZWNrCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTIy
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMTIsNiArMzEyLDM4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRpZEdyYW50U2FuZGJveEV4dGUKICAgICAgICAgaGFuZGxlcigpOwogfQogCisjaWYgVVNFKExJ
QldFQlJUQykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JU
Q1Byb3ZpZGVyKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywg
dWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgRnVuY3Rpb248dm9pZChSZWY8U2Fu
ZGJveEV4dGVuc2lvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gKyttX2xhc3RSZXF1ZXN0UlRDUHJvdmlkZXJDb21wbGV0aW9uSUQ7CisgICAg
bV9zYW5kYm94RXh0ZW5zaW9uc0ZvclJUQ1Byb3ZpZGVyQ29tcGxldGlvbkhhbmRsZXJzLnNldChy
ZXF1ZXN0SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHJlcXVlc3RJRCwgcHJvdG9jb2wsIGFkZHJl
c3MsIG1pblBvcnQsIG1heFBvcnQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGllbnQoY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3Rl
QWRkcmVzcywgRnVuY3Rpb248dm9pZChSZWY8U2FuZGJveEV4dGVuc2lvbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gKyttX2xhc3RSZXF1ZXN0
UlRDUHJvdmlkZXJDb21wbGV0aW9uSUQ7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uc0ZvclJUQ1By
b3ZpZGVyQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3Zp
ZGVyRm9yQ2xpZW50KHJlcXVlc3RJRCwgcHJvdG9jb2wsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRk
cmVzcyksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgaGFuZGxlKQoreworICAgIGF1dG8gcnRjUHJvdmlkZXJFeHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoaGFuZGxlKTsKKyAgICBydGNQcm92aWRlckV4dGVu
c2lvbi0+Y29uc3VtZSgpOworCisgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fc2FuZGJveEV4dGVu
c2lvbnNGb3JSVENQcm92aWRlckNvbXBsZXRpb25IYW5kbGVycy50YWtlKHJlcXVlc3RJRCkpCisg
ICAgICAgIGhhbmRsZXIoV1RGTW92ZShydGNQcm92aWRlckV4dGVuc2lvbikpOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkaWREZW55U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVp
bnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRDUHJvdmlk
ZXJDb21wbGV0aW9uSGFuZGxlcnMucmVtb3ZlKHJlcXVlc3RJRCk7Cit9CisjZW5kaWYKKyAgICAK
IHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBGdW5jdGlvbjx2
b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTE2LDYgKzExNiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCisjaWYg
VVNFKExJQldFQlJUQykKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3Zp
ZGVyKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywgdWludDE2
X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgRnVuY3Rpb248dm9pZChSZWY8U2FuZGJveEV4
dGVuc2lvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGllbnQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
Y29uc3QgU3RyaW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcywg
RnVuY3Rpb248dm9pZChSZWY8U2FuZGJveEV4dGVuc2lvbj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworI2VuZGlmCisKICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGxvYWRUaHJvdHRs
ZUxhdGVuY3koKSBjb25zdCB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KIAogcHJp
dmF0ZToKQEAgLTE4OCw2ICsxOTMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkR3JhbnRT
YW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVz
dElEKTsKIAorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgZGlkRGVueVNhbmRib3hFeHRlbnNpb25zVG9SVENQ
cm92aWRlcih1aW50NjRfdCByZXF1ZXN0SUQpOworI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAg
ICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0yMTUsNiArMjI1LDEx
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1f
c2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX3dhaXRpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkZXJzOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPik+PiBtX3NhbmRib3hFeHRl
bnNpb25zRm9yUlRDUHJvdmlkZXJDb21wbGV0aW9uSGFuZGxlcnM7CisgICAgdWludDY0X3QgbV9s
YXN0UmVxdWVzdFJUQ1Byb3ZpZGVyQ29tcGxldGlvbklEIHsgMCB9OworI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
Q29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lk
IHNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDQgKzc3LDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFByb2Nlc3NEaWRSZXN1bWUo
KQogCiAgICAgRGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxv
YnModWludDY0X3QgcmVxdWVzdElEKQorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgRGlkR3JhbnRT
YW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIodWludDY0X3QgaWRlbnRpZmllciwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQorICAgIERpZERlbnlTYW5kYm94RXh0
ZW5zaW9uc1RvUlRDUHJvdmlkZXIodWludDY0X3QgaWRlbnRpZmllcikKKyNlbmRpZgogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0
d29ya1Byb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4JKHJldmlzaW9u
IDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4
LDkgQEAKICAgICAobGl0ZXJhbCAiL3ByaXZhdGUvdmFyL3J1bi9tRE5TUmVzcG9uZGVyIikKICAg
ICAocmVtb3RlIHRjcCkpCiAKKzs7IEZJWE1FIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6
Ly9wcm9ibGVtLzMwNDk4MDcyPiBpcyBmaXhlZC4KKyhhbGxvdyBuZXR3b3JrKikKKwogOzsgRklY
TUUgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vOTM0NzIwNT4gKyByZWxh
dGVkIHJhZGFyIGluIFNhZmFyaSBpcyBmaXhlZAogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgKGds
b2JhbC1uYW1lICJvcmcuaDVsLmtjbSIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAkocmV2
aXNpb24gMjEyMjMwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDEwIEBACiAK
ICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUlRDU29ja2V0LmgiCiAjaW5jbHVkZSAiV2ViUlRDUmVzb2x2ZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+CkBAIC02NSw2ICs2Nyw5IEBAIHZv
aWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZSgpCiAgICAgY2FsbE9uUlRDTmV0d29ya1RocmVh
ZChbdGhpc10oKSB7CiAgICAgICAgIG1fc29ja2V0cy5jbGVhcigpOwogICAgIH0pOworCisgICAg
Zm9yIChhdXRvIGV4dGVuc2lvbiA6IG1fc2FuZGJveEV4dGVuc2lvbnMpCisgICAgICAgIGV4dGVu
c2lvbi0+cmV2b2tlKCk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBT
b2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzLCB1aW50MTZf
dCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQpAQCAtNzIsMTAgKzc3LDE0IEBAIHZvaWQgTmV0
d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQKICAgICBydGM6OlNvY2tldEFkZHJlc3Mg
c29ja2V0QWRkcmVzczsKICAgICBzb2NrZXRBZGRyZXNzLkZyb21TdHJpbmcoYWRkcmVzcy51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZp
ZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnRdKCkgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFj
dG9yeS0+Q3JlYXRlVWRwU29ja2V0KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQpKTsK
LSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
U29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJS
VENTb2NrZXRDbGllbnQ6OlR5cGU6OlVEUCkpOwotICAgIH0pOworICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcigidWRwIiwg
YWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwKKyAgICAgICAgW3RoaXMsIGlkZW50aWZpZXIsIHNv
Y2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnRdKFJlZjxTYW5kYm94RXh0ZW5zaW9uPiYmIGV4
dGVuc2lvbikgeworICAgICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoV1RGbW92
ZShleHRlbnNpb24pKTsKKyAgICAgICAgICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMs
IGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnRdKCkgeworICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQo
bV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRkcmVzcywgbWlu
UG9ydCwgbWF4UG9ydCkpOworICAgICAgICAgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMs
IFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpVRFApKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmNyZWF0ZVNlcnZlclRDUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGludCBvcHRpb25z
KQpAQCAtODMsMTAgKzkyLDE0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTZXJ2
ZXJUQ1AKICAgICBydGM6OlNvY2tldEFkZHJlc3Mgc29ja2V0QWRkcmVzczsKICAgICBzb2NrZXRB
ZGRyZXNzLkZyb21TdHJpbmcoYWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGNhbGxPblJU
Q05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQs
IG1heFBvcnQsIG9wdGlvbnNdKCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlU2VydmVy
VGNwU29ja2V0KHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnMpKTsKLSAg
ICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENT
b2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCkpOwotICAgIH0pOworICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcigidGNw
IiwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwKKyAgICAgICAgW3RoaXMsIGlkZW50aWZpZXIs
IHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKFJlZjxTYW5kYm94RXh0
ZW5zaW9uPiYmIGV4dGVuc2lvbikgeworICAgICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9ucy5h
cHBlbmQoV1RGTW92ZShleHRlbnNpb24pKTsKKyAgICAgICAgICAgIGNhbGxPblJUQ05ldHdvcmtU
aHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldEFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQs
IG9wdGlvbnNdKCkgeworICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5j
UGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVTZXJ2ZXJU
Y3BTb2NrZXQoc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9ucykpOworICAg
ICAgICAgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGli
V2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJUQ1ApKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZUNsaWVudFRD
UFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiByZW1vdGVBZGRyZXNzLCBpbnQgb3B0aW9ucykKQEAgLTk3LDEwICsxMTAs
MTYgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZUNsaWVudFRDUAogICAgIHJ0Yzo6
U29ja2V0QWRkcmVzcyBzb2NrZXRSZW1vdGVBZGRyZXNzOwogICAgIHNvY2tldFJlbW90ZUFkZHJl
c3MuRnJvbVN0cmluZyhyZW1vdGVBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgY2FsbE9u
UlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0TG9jYWxBZGRyZXNzLCBz
b2NrZXRSZW1vdGVBZGRyZXNzLCBvcHRpb25zXSgpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldChtX3BhY2tldFNvY2tldEZhY3RvcnktPkNy
ZWF0ZUNsaWVudFRjcFNvY2tldChzb2NrZXRMb2NhbEFkZHJlc3MsIHNvY2tldFJlbW90ZUFkZHJl
c3MsIHsgfSwgeyB9LCBvcHRpb25zKSk7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMs
IFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpDbGllbnRUQ1Ap
KTsKLSAgICB9KTsKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRl
Q2xpZW50VENQU29ja2V0OiBSZW1pbmQgbWUgdG8gb3BlbiBhIGNsaWVudCBUQ1Agc29ja2V0IGZy
b20gJXMgdG8gJXMgb25jZSBJIGhhdmUgYW4gZXh0ZW5zaW9uLiIsIGxvY2FsQWRkcmVzcy51dGY4
KCkuZGF0YSgpLCByZW1vdGVBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOworCisgICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9y
Q2xpZW50KCJ0Y3AiLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MsCisgICAgICAgIFt0aGlz
LCBpZGVudGlmaWVyLCBzb2NrZXRMb2NhbEFkZHJlc3MsIHNvY2tldFJlbW90ZUFkZHJlc3MsIG9w
dGlvbnNdKFJlZjxTYW5kYm94RXh0ZW5zaW9uPiYmIGV4dGVuc2lvbikgeworICAgICAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZShleHRlbnNpb24pKTsKKyAgICAgICAg
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldExvY2Fs
QWRkcmVzcywgc29ja2V0UmVtb3RlQWRkcmVzcywgb3B0aW9uc10oKSB7CisgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldChtX3BhY2tl
dFNvY2tldEZhY3RvcnktPkNyZWF0ZUNsaWVudFRjcFNvY2tldChzb2NrZXRMb2NhbEFkZHJlc3Ms
IHNvY2tldFJlbW90ZUFkZHJlc3MsIHsgfSwgeyB9LCBvcHRpb25zKSk7CisgICAgICAgICAgICAg
ICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ6OlR5cGU6OkNsaWVudFRDUCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6YWRkU29ja2V0KHVpbnQ2NF90IGlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENTb2NrZXRDbGllbnQ+JiYgc29ja2V0KQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAkocmV2aXNpb24gMjEyMjMwKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRDbGllbnQu
aCIKICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9MaWJXZWJSVENNYWNyb3MuaD4KICNpbmNsdWRlIDx3ZWJydGMvYmFzZS9zaWdzbG90Lmg+CkBA
IC0xMDEsNiArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRo
cmVhZD4gbV9ydGNOZXR3b3JrVGhyZWFkOwogICAgIFVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0
U29ja2V0RmFjdG9yeT4gbV9wYWNrZXRTb2NrZXRGYWN0b3J5OworICAgIFZlY3RvcjxSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4+IG1fc2FuZGJveEV4dGVuc2lvbnM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMTIyMzApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxF
KFNFQ19JVEVNX1NISU0pCiAjaW5jbHVkZSAiU2VjSXRlbVNoaW1Qcm94eS5oIgpAQCAtMjkyLDYg
KzI5MywzNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4CiAjZW5k
aWYKIH0KIAorI2lmIFVTRShMSUJXRUJSVEMpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Q
b3J0LCB1aW50MTZfdCBtYXhQb3J0KQoreworICAgIC8vIEZJWE1FKDE2ODI0Mik6IERlY2lkZSBp
ZiB3ZSBzaG91bGQgZ3JhbnQgYW4gZXh0ZW5zaW9uLgorCisgICAgU3RyaW5nQnVpbGRlciBleHRl
bnNpb25CdWlsZGVyOworICAgIGV4dGVuc2lvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibmV0d29y
ayoiKTsKKyAgICAvLyBGSVhNRSgxNjgyNDMpOiBDcmFmdCB0aGUgZXh0ZW5zaW9uIGZpbHRlciB0
byBqdXN0IGluY2x1ZGUgdGhlIHBvcnQgd2UgYWN0dWFsbHkgbmVlZC4KKworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBuZXR3b3JrSGFuZGxlOworICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oZXh0ZW5zaW9uQnVpbGRlci50b1N0cmluZygp
LCBuZXR3b3JrSGFuZGxlKTsKKworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHJlcXVl
c3RJRCwgbmV0d29ya0hhbmRsZSksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJl
c3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcykKK3sKKyAgICAvLyBGSVhNRSgxNjgyNDIp
OiBEZWNpZGUgaWYgd2Ugc2hvdWxkIGdyYW50IGFuIGV4dGVuc2lvbi4KKworICAgIFN0cmluZ0J1
aWxkZXIgZXh0ZW5zaW9uQnVpbGRlcjsKKyAgICBleHRlbnNpb25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIm5ldHdvcmsqIik7CisgICAgLy8gRklYTUUoMTY4MjQzKTogQ3JhZnQgdGhlIGV4dGVuc2lv
biBmaWx0ZXIgdG8ganVzdCBpbmNsdWRlIHRoZSBwb3J0IHdlIGFjdHVhbGx5IG5lZWQuCisgICAg
CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG5ldHdvcmtIYW5kbGU7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihleHRlbnNpb25CdWls
ZGVyLnRvU3RyaW5nKCksIG5ldHdvcmtIYW5kbGUpOworICAgIAorICAgIGNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1JUQ1Byb3ZpZGVyKHJlcXVlc3RJRCwgbmV0d29ya0hhbmRsZSksIDApOworfQorI2VuZGlmCisK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcikKIHsKICAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxh
dW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lv
biAyMTIyMzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDYgKzEwOSwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CisjaWYgVVNF
KExJQldFQlJUQykKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVy
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5n
JiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KTsKKyAgICB2b2lk
IGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJl
c3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcyk7CisjZW5kaWYKICAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1
bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZp
Z3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMjIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNCArNDIs
OSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRlcklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2UpCiAj
ZW5kaWYKKworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1Rv
UlRDUHJvdmlkZXIodWludDY0X3QgcmVxdWVzdElELCBTdHJpbmcgcHJvdG9jb2wsIFN0cmluZyBh
ZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQorICAgIEdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9yQ2xpZW50KHVpbnQ2NF90IHJlcXVlc3RJRCwg
U3RyaW5nIHByb3RvY29sLCBTdHJpbmcgbG9jYWwsIFN0cmluZyByZW1vdGVBZGRyZXNzKQorI2Vu
ZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301682</attachid>
            <date>2017-02-15 17:56:17 -0800</date>
            <delta_ts>2017-02-15 20:41:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168010-20170215175342.patch</filename>
            <type>text/plain</type>
            <size>29161</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE3LTAyLTE1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdW01hY10gQ29u
ZGl0aW9uYWxseSBhZGQgc2FuZGJveCBleHRlbnNpb25zIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAxMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAyNDU1MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICBDb25kaXRpb25hbGx5IGFkZCBzYW5kYm94IGV4dGVu
c2lvbnMgdG8gdGhlIE5ldHdvcmsgUHJvY2VzcyB3aGVuIHRoZSBXZWJSVEMvTWVkaWEgQ2FwdHVy
ZQorICAgICAgICBmZWF0dXJlcyBhcmUgZW5hYmxlZC4KKyAgICAgICAgCisgICAgICAgIE5vdGU6
IFRoaXMgZG9lcyBub3QgeWV0IGRvIGFueXRoaW5nIGluIHRoZSBVSVByb2Nlc3MgdG8gY29uZmly
bSB3ZSBzaG91bGQgZXhwYW5kIHRoZSBzYW5kYm94LgorCisgICAgICAgIENoYW5nZXM6CisgICAg
ICAgIDEuIE1vZGlmeSBOZXR3b3JrUHJvY2VzcyB0byBrZWVwIGEgc2V0IG9mIHBlbmRpbmcgY29t
cGxldGlvbiBoYW5kbGVycyBmb3IgV2ViUlRDIGNvbm5lY3Rpb24KKyAgICAgICAgICAgc2FuZGJv
eCBleHBhbnNpb24gcmVxdWVzdHMuCisgICAgICAgIDIuIEVhY2ggTmV0d29ya1JUQ1Byb3ZpZGVy
IHNob3VsZCByZW1lbWJlciB3aGF0IHNhbmRib3ggZXh0ZW5zaW9ucyB3ZXJlIGNyZWF0ZWQgb24g
aXRzIGJlaGFsZiwKKyAgICAgICAgICAgYW5kIHJldm9rZSB0aGVtIHdoZW4gY2xvc2luZyBkb3du
LgorICAgICAgICAzLiBDcmVhdGUgbmV0d29yayBzYW5kYm94IGV4dGVuc2lvbnMgYXMgTmV0d29y
a1JUQ1Byb3ZpZGVyIGNyZWF0ZXMgbmV3IGNvbm5lY3Rpb25zLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1By
b3ZpZGVyRm9yQ2xpZW50KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcik6IEFkZGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBSZW1lbWJlciBzdGF0ZSBv
ZiBXZWJSVEMgZm9yIHdoZW4gdGhlCisgICAgICAgIHNhbmRib3ggaXMgZXN0YWJsaXNoZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6IEFkZCBF
TkFCTEVfTElCV0VCUlRDIHBhcmFtZXRlciB0byBzYW5kYm94IGxhdW5jaCBzdGF0ZS4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JU
Q1Byb3ZpZGVyKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRE
ZW55U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKTogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46IEFk
ZCBjb25kaXRpb25hbCBzYW5kYm94IGV4cGFuc2lvbiB0byBhbGxvdworICAgICAgICBiaWRpcmVj
dGlvbmFsIG5ldHdvcmsgYWNjZXNzIHdoZW4gdGhlIEVOQUJMRV9MSUJXRUJSVEMgZmxhZyBpcyBw
cmVzZW50IGluIHRoZSBzYW5kYm94IGxhdW5jaCBwYXJhbWV0ZXJzLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlKTogUmV2b2tlIGR5bmFtaWMgbmV0d29yayBzYW5k
Ym94IGV4dGVuc2lvbnMgd2hlbiBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQpOiBSZXF1ZXN0IHBlcm1pc3Np
b24gZnJvbSB0aGUgVUlQcm9jZXNzIGJlZm9yZSBjb21wbGV0aW5nIHRoZSBjb25uZWN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNlcnZlclRDUFNvY2tl
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZUNs
aWVudFRDUFNvY2tldCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IE1vdmUgbWljcm9waG9uZSBzYW5kYm94IGV4dGVuc2lv
biBoZXJlLCBzbyB0aGF0IHRoZQorICAgICAgICBpbml0aWFsIFdlYlByb2Nlc3MgaGFzIHRoZSBj
b3JyZWN0IG1pY3JvcGhvbmUgYWNjZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBOb3RpZnkgTmV0d29ya1Byb2Nl
c3MgYXQgbGF1bmNoIHRpbWUgd2hldGhlciB0aGUKKyAgICAgICAgdXNlciB3YW50cyBXZWJSVEMg
c3VwcG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXJGb3JDbGll
bnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IE1vdmUg
bWljcm9waG9uZSBzYW5kYm94IGV4dGVuc2lvbiBmcm9tIGhlcmUgdG8gcGxhdGZvcm0tc3BlY2lm
aWMgZmlsZS4KKwogMjAxNy0wMi0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMTg3OS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDIxMjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMiw2ICszMTIsMzUgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZQogICAgICAgICBoYW5kbGVyKCk7CiB9
CiAKKyNpZiBVU0UoTElCV0VCUlRDKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBGdW5jdGlv
bjx2b2lkKFJlZjxTYW5kYm94RXh0ZW5zaW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK21fbGFzdFJlcXVlc3RSVENQcm92aWRlckNvbXBs
ZXRpb25JRDsKKyAgICBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRDUHJvdmlkZXJDb21wbGV0aW9u
SGFuZGxlcnMuc2V0KHJlcXVlc3RJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIocmVxdWVzdElELCBw
cm90b2NvbCwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCksIDApOworfQorCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlckZvckNsaWVudChj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGxvY2FsQWRkcmVzcywgY29uc3Qg
U3RyaW5nJiByZW1vdGVBZGRyZXNzLCBGdW5jdGlvbjx2b2lkKFJlZjxTYW5kYm94RXh0ZW5zaW9u
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSAr
K21fbGFzdFJlcXVlc3RSVENQcm92aWRlckNvbXBsZXRpb25JRDsKKyAgICBtX3NhbmRib3hFeHRl
bnNpb25zRm9yUlRDUHJvdmlkZXJDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJlcXVlc3RJRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5z
aW9uc1RvUlRDUHJvdmlkZXJGb3JDbGllbnQocmVxdWVzdElELCBwcm90b2NvbCwgbG9jYWxBZGRy
ZXNzLCByZW1vdGVBZGRyZXNzKSwgMCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1
aW50NjRfdCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKK3sKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkRGVueVNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1aW50
NjRfdCkKK3sKK30KKyNlbmRpZgorCisjZW5kaWYKKyAgICAKIHN0YXRpYyB2b2lkIGZldGNoRGlz
a0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBGdW5jdGlvbjx2b2lkIChWZWN0b3I8V2Vic2l0ZURh
dGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgJKHJldmlzaW9uIDIxMjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE2LDYgKzExNiwxMSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJv
Y2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZv
aWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICB2
b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3Qg
bWF4UG9ydCwgRnVuY3Rpb248dm9pZChSZWY8U2FuZGJveEV4dGVuc2lvbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlk
ZXJGb3JDbGllbnQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBsb2NhbEFk
ZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVzcywgRnVuY3Rpb248dm9pZChSZWY8U2Fu
ZGJveEV4dGVuc2lvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworI2VuZGlmCisKICAgICBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25zdCB7IHJl
dHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KIAogcHJpdmF0ZToKQEAgLTE4OCw2ICsxOTMs
MTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0
YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKTsKIAorI2lmIFVTRShMSUJX
RUJSVEMpCisgICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAg
IHZvaWQgZGlkRGVueVNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92aWRlcih1aW50NjRfdCByZXF1
ZXN0SUQpOworI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vy
cm9ycyhib29sKTsKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0yMTUsNiArMjI1LDEyIEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+PiBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzOwogCisjaWYg
VVNFKExJQldFQlJUQykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKFJlZjxT
YW5kYm94RXh0ZW5zaW9uPik+PiBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRDUHJvdmlkZXJDb21w
bGV0aW9uSGFuZGxlcnM7CisgICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdFJUQ1Byb3ZpZGVyQ29t
cGxldGlvbklEIHsgMCB9OworICAgIGJvb2wgbV93ZWJSVENFbmFibGVkIHsgZmFsc2UgfTsKKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29sKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMTIzMjQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw0ICs3
Nyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKICAgICBQcm9j
ZXNzRGlkUmVzdW1lKCkKIAogICAgIERpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNl
UHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKKyNpZiBVU0UoTElCV0VCUlRDKQor
ICAgIERpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IGlkZW50
aWZpZXIsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSkKKyAgICBEaWRE
ZW55U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCisj
ZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlz
aW9uIDIxMjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDIsNiArMTAyLDkgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwg
cmVjb3JkUmVwbGF5TW9kZTsKICAgICBlbmNvZGVyIDw8IHJlY29yZFJlcGxheUNhY2hlTG9jYXRp
b247CiAjZW5kaWYKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGVuY29kZXIgPDwgd2ViUlRDRW5h
YmxlZDsKKyNlbmRpZgogfQogCiBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcmVzdWx0KQpAQCAtMjA1LDYgKzIwOCwxMCBAQCBib29sIE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVj
b3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgor
I2lmIFVTRShMSUJXRUJSVEMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViUlRD
RW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIx
MjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEzLDYgKzExMywxMCBAQCBzdHJ1Y3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgU3RyaW5nIHJlY29yZFJlcGxh
eU1vZGU7CiAgICAgU3RyaW5nIHJlY29yZFJlcGxheUNhY2hlTG9jYXRpb247CiAjZW5kaWYKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgYm9vbCB3ZWJSVENFbmFibGVkIHsgZmFsc2Ug
fTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1t
CShyZXZpc2lvbiAyMTIzMjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA1LDYgKzEwNSwxMCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAKICAgICBpZiAoIXBhcmFtZXRl
cnMuaHR0cFByb3h5LmlzTnVsbCgpIHx8ICFwYXJhbWV0ZXJzLmh0dHBzUHJveHkuaXNOdWxsKCkp
CiAgICAgICAgIG92ZXJyaWRlU3lzdGVtUHJveGllcyhwYXJhbWV0ZXJzLmh0dHBQcm94eSwgcGFy
YW1ldGVycy5odHRwc1Byb3h5KTsKKworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgbV93ZWJSVENF
bmFibGVkID0gcGFyYW1ldGVycy53ZWJSVENFbmFibGVkOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAt
MTE4LDYgKzEyMiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChj
CiAgICAgTlNCdW5kbGUgKndlYmtpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6
TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuc2V0
T3ZlcnJpZGVTYW5kYm94UHJvZmlsZVBhdGgoW3dlYmtpdDJCdW5kbGUgcGF0aEZvclJlc291cmNl
OkAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7CiAKKyNp
ZiBVU0UoTElCV0VCUlRDKQorICAgIGlmIChtX3dlYlJUQ0VuYWJsZWQpCisgICAgICAgIHNhbmRi
b3hQYXJhbWV0ZXJzLmFkZFBhcmFtZXRlcigiRU5BQkxFX0xJQldFQlJUQyIsICJUUlVFIik7Cisj
ZW5kaWYKKwogICAgIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gocGFyYW1ldGVycywg
c2FuZGJveFBhcmFtZXRlcnMpOwogfQogCkBAIC0xMzksNiArMTQ4LDI4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKICAgICB9CiB9CiAKKyNpZiBVU0UoTElCV0VC
UlRDKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRD
UHJvdmlkZXIodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGhhbmRsZSkKK3sKKyAgICBhdXRvIHJ0Y1Byb3ZpZGVyRXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKGhhbmRsZSk7CisgICAgaWYgKCFydGNQcm92aWRlckV4dGVuc2lvbikg
eworICAgICAgICBkaWREZW55U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHJlcXVlc3RJ
RCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRklYTUUoMTY4MjQzKTog
Q29uc3VtZSB0aGUgZXh0ZW5zaW9uIHdoZW4gaXQgY2FuIGJlIGxpbWl0ZWQgdG8gdGhlIGNvcnJl
Y3QgcG9ydC4KKyAgICAvLyBydGNQcm92aWRlckV4dGVuc2lvbi0+Y29uc3VtZSgpOworICAgIAor
ICAgIGlmIChhdXRvIGhhbmRsZXIgPSBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRDUHJvdmlkZXJD
b21wbGV0aW9uSGFuZGxlcnMudGFrZShyZXF1ZXN0SUQpKQorICAgICAgICBoYW5kbGVyKHJ0Y1By
b3ZpZGVyRXh0ZW5zaW9uLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWREZW55U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVl
c3RJRCkKK3sKKyAgICBtX3NhbmRib3hFeHRlbnNpb25zRm9yUlRDUHJvdmlkZXJDb21wbGV0aW9u
SGFuZGxlcnMucmVtb3ZlKHJlcXVlc3RJRCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjEyMzI0KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nl
c3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwOCwzICsyMDgsOSBAQAogICAgIDs7IEZJWE1F
OiBTaG91bGQgYmUgcmVtb3ZlZCBhZnRlciA8cmRhcjovL3Byb2JsZW0vMTA0NjM4ODE+IGlzIGZp
eGVkLgogICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5M
YXVuY2hTZXJ2aWNlcy5RdWFyYW50aW5lRXZlbnRzVjIiKQogICAgIChob21lLWxpdGVyYWwgIi9M
aWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5MYXVuY2hTZXJ2aWNlcy5RdWFyYW50aW5lRXZl
bnRzVjItam91cm5hbCIpKQorCisjaWYgRU5BQkxFX0xJQldFQlJUQworOzsgRklYTUUgc2hvdWxk
IGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vMzA0OTgwNzI+IGlzIGZpeGVkLgorKGlm
IChwb3NpdGl2ZT8gKHN0cmluZy1sZW5ndGggKHBhcmFtICJFTkFCTEVfTElCV0VCUlRDIikpKQor
ICAgIChhbGxvdyBuZXR3b3JrKikpCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CShyZXZpc2lvbiAyMTIzMjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSVENTb2NrZXQuaCIKICNpbmNsdWRlICJXZWJSVENSZXNv
bHZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KQEAg
LTY1LDYgKzY2LDkgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlKCkKICAgICBjYWxs
T25SVENOZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKICAgICAgICAgbV9zb2NrZXRzLmNsZWFyKCk7
CiAgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gZXh0ZW5zaW9uIDogbV9zYW5kYm94RXh0ZW5zaW9u
cykKKyAgICAgICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJv
dmlkZXI6OmNyZWF0ZVVEUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC03MiwxMCAr
NzYsMTQgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldAogICAgIHJ0
Yzo6U29ja2V0QWRkcmVzcyBzb2NrZXRBZGRyZXNzOwogICAgIHNvY2tldEFkZHJlc3MuRnJvbVN0
cmluZyhhZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgY2FsbE9uUlRDTmV0d29ya1RocmVh
ZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQo
bV9wYWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVVZHBTb2NrZXQoc29ja2V0QWRkcmVzcywgbWlu
UG9ydCwgbWF4UG9ydCkpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3Zl
KHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6VURQKSk7Ci0gICAgfSk7Cisg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JU
Q1Byb3ZpZGVyKCJ1ZHAiLCBhZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0LAorICAgICAgICBbdGhp
cywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydF0oUmVmPFNhbmRi
b3hFeHRlbnNpb24+JiYgZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBtX3NhbmRib3hFeHRlbnNp
b25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOworICAgICAgICAgICAgY2FsbE9uUlRDTmV0
d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4
UG9ydF0oKSB7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQ+IHNvY2tldChtX3BhY2tldFNvY2tldEZhY3RvcnktPkNyZWF0ZVVkcFNvY2tldChz
b2NrZXRBZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0KSk7CisgICAgICAgICAgICAgICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6
OlR5cGU6OlVEUCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU2VydmVyVENQU29ja2V0KHVpbnQ2NF90IGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4
UG9ydCwgaW50IG9wdGlvbnMpCkBAIC04MywxMCArOTEsMTQgQEAgdm9pZCBOZXR3b3JrUlRDUHJv
dmlkZXI6OmNyZWF0ZVNlcnZlclRDUAogICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBzb2NrZXRBZGRy
ZXNzOwogICAgIHNvY2tldEFkZHJlc3MuRnJvbVN0cmluZyhhZGRyZXNzLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0
QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9wYWNrZXRTb2NrZXRGYWN0
b3J5LT5DcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9y
dCwgb3B0aW9ucykpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNv
Y2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKSk7Ci0gICAgfSk7
CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1JUQ1Byb3ZpZGVyKCJ0Y3AiLCBhZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0LAorICAgICAgICBb
dGhpcywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9u
c10oUmVmPFNhbmRib3hFeHRlbnNpb24+JiYgZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBtX3Nh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOworICAgICAgICAgICAg
Y2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgc29ja2V0QWRkcmVzcywg
bWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldChtX3BhY2tldFNvY2tldEZhY3Rv
cnktPkNyZWF0ZVNlcnZlclRjcFNvY2tldChzb2NrZXRBZGRyZXNzLCBtaW5Qb3J0LCBtYXhQb3J0
LCBvcHRpb25zKSk7CisgICAgICAgICAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RG
TW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlQ2xpZW50VENQU29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90ZUFkZHJlc3MsIGludCBvcHRpb25z
KQpAQCAtOTcsMTAgKzEwOSwxNiBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlQ2xp
ZW50VENQCiAgICAgcnRjOjpTb2NrZXRBZGRyZXNzIHNvY2tldFJlbW90ZUFkZHJlc3M7CiAgICAg
c29ja2V0UmVtb3RlQWRkcmVzcy5Gcm9tU3RyaW5nKHJlbW90ZUFkZHJlc3MudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBzb2Nr
ZXRMb2NhbEFkZHJlc3MsIHNvY2tldFJlbW90ZUFkZHJlc3MsIG9wdGlvbnNdKCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0
U29ja2V0RmFjdG9yeS0+Q3JlYXRlQ2xpZW50VGNwU29ja2V0KHNvY2tldExvY2FsQWRkcmVzcywg
c29ja2V0UmVtb3RlQWRkcmVzcywgeyB9LCB7IH0sIG9wdGlvbnMpKTsKLSAgICAgICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6
OlR5cGU6OkNsaWVudFRDUCkpOwotICAgIH0pOworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQ6IFJlbWluZCBtZSB0byBvcGVuIGEgY2xp
ZW50IFRDUCBzb2NrZXQgZnJvbSAlcyB0byAlcyBvbmNlIEkgaGF2ZSBhbiBleHRlbnNpb24uIiwg
bG9jYWxBZGRyZXNzLnV0ZjgoKS5kYXRhKCksIHJlbW90ZUFkZHJlc3MudXRmOCgpLmRhdGEoKSk7
CisKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZ3JhbnRTYW5kYm94RXh0ZW5zaW9u
c1RvUlRDUHJvdmlkZXJGb3JDbGllbnQoInRjcCIsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVz
cywKKyAgICAgICAgW3RoaXMsIGlkZW50aWZpZXIsIHNvY2tldExvY2FsQWRkcmVzcywgc29ja2V0
UmVtb3RlQWRkcmVzcywgb3B0aW9uc10oUmVmPFNhbmRib3hFeHRlbnNpb24+JiYgZXh0ZW5zaW9u
KSB7CisgICAgICAgICAgICBtX3NhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVu
c2lvbikpOworICAgICAgICAgICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRp
Zmllciwgc29ja2V0TG9jYWxBZGRyZXNzLCBzb2NrZXRSZW1vdGVBZGRyZXNzLCBvcHRpb25zXSgp
IHsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tl
dD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlQ2xpZW50VGNwU29ja2V0KHNv
Y2tldExvY2FsQWRkcmVzcywgc29ja2V0UmVtb3RlQWRkcmVzcywgeyB9LCB7IH0sIG9wdGlvbnMp
KTsKKyAgICAgICAgICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tl
dCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6Q2xpZW50VENQKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjphZGRTb2Nr
ZXQodWludDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1NvY2tldENs
aWVudD4mJiBzb2NrZXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCShyZXZpc2lvbiAyMTIzMjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkxpYldl
YlJUQ1NvY2tldENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCisjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9i
YXNlL3NpZ3Nsb3QuaD4KQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBtX3J0Y05ldHdvcmtUaHJlYWQ7CiAgICAgVW5pcXVlUmVm
PHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PiBtX3BhY2tldFNvY2tldEZhY3Rvcnk7Cisg
ICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9zYW5kYm94RXh0ZW5zaW9uczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMTIzMjQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3
ICs3Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KQEAgLTU3NCwxMiArNTczLDYgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIGlmICghcGFyYW1ldGVy
cy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0
ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgcmVsYXRlZCBw
YXJhbWV0ZXIgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjk0NDgzNjg+IGlzIGZpeGVkLgotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lZGlhU3RyZWFtRW5h
YmxlZCgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmlj
RXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiLCBwYXJhbWV0ZXJzLmF1ZGlv
Q2FwdHVyZUV4dGVuc2lvbkhhbmRsZSk7Ci0jZW5kaWYKLSAgICAKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiA9IG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtT
ZXNzaW9uOwogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gY2FjaGVNb2RlbCgpOwpAQCAt
Nzk4LDEyICs3OTEsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
CiAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKSkgewogICAg
ICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZp
YSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5y
ZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7Ci0gICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldE1lZGlhU3RyZWFtRW5hYmxlZChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+
c3RvcmUoKS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1lZGlhU3RyZWFt
RW5hYmxlZEtleSgpKSk7Ci0jZW5kaWYKKyAgICB9IGVsc2UKICAgICAgICAgcHJvY2VzcyA9ICZj
cmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7Ci0gICAgfQog
CiAgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbikpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIxMjMyNCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICBBU1NFUlQocGFyYW1ldGVycy51aVByb2Nlc3NDb29r
aWVTdG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpOwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNz
Q29va2llU3RvcmFnZUlkZW50aWZpZXIuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIoY29va2llU3Rv
cmFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY29va2llU3RvcmFnZURhdGEuZ2V0KCkp
KTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgYm9vbCB3ZWJSVENFbmFi
bGVkID0gbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnBlZXJDb25uZWN0aW9uRW5h
YmxlZCgpOworICAgIGlmIChbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OkAiRXhwZXJpbWVudGFsUGVl
ckNvbm5lY3Rpb25FbmFibGVkIl0pCisgICAgICAgIHdlYlJUQ0VuYWJsZWQgPSBbZGVmYXVsdHMg
Ym9vbEZvcktleTpAIkV4cGVyaW1lbnRhbFBlZXJDb25uZWN0aW9uRW5hYmxlZCJdOworICAgIAor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgcmVsYXRlZCBwYXJhbWV0ZXIgd2hlbiA8cmRh
cjovL3Byb2JsZW0vMjk0NDgzNjg+IGlzIGZpeGVkLgorICAgIGlmICh3ZWJSVENFbmFibGVkKQor
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9u
KCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiLCBwYXJhbWV0ZXJzLmF1ZGlvQ2FwdHVyZUV4
dGVuc2lvbkhhbmRsZSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCkBAIC0yOTUsNiArMzA0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBpZiAocGFyYW1ldGVycy5yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcGFyYW1ldGVycy5yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGJvb2wgd2ViUlRDRW5hYmxlZCA9IG1fZGVmYXVsdFBh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS5wZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsKKyAgICBpZiAo
W2RlZmF1bHRzIG9iamVjdEZvcktleTpAIkV4cGVyaW1lbnRhbFBlZXJDb25uZWN0aW9uRW5hYmxl
ZCJdKQorICAgICAgICB3ZWJSVENFbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJFeHBl
cmltZW50YWxQZWVyQ29ubmVjdGlvbkVuYWJsZWQiXTsKKyAgICAKKyAgICBwYXJhbWV0ZXJzLndl
YlJUQ0VuYWJsZWQgPSB3ZWJSVENFbmFibGVkOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDIxMjMyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJTSkKICNpbmNsdWRlICJTZWNJdGVt
U2hpbVByb3h5LmgiCkBAIC0yOTIsNiArMjkzLDM4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z3JhbnRTYW5kYm94RXgKICNlbmRpZgogfQogCisjaWYgVVNFKExJQldFQlJUQykKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCit7CisgICAgLy8g
RklYTUUoMTY4MjQyKTogRGVjaWRlIGlmIHdlIHNob3VsZCBncmFudCBhbiBleHRlbnNpb24uCisK
KyAgICBTdHJpbmdCdWlsZGVyIGV4dGVuc2lvbkJ1aWxkZXI7CisgICAgZXh0ZW5zaW9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJuZXR3b3JrKiIpOworCisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG5ldHdvcmtIYW5kbGU7CisgICAgLy8gRklYTUUoMTY4MjQzKTogQ3JhZnQgdGhlIGV4dGVu
c2lvbiBmaWx0ZXIgdG8ganVzdCBpbmNsdWRlIHRoZSBwb3J0IHdlIGFjdHVhbGx5IG5lZWQuCisK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKGV4
dGVuc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSwgbmV0d29ya0hhbmRsZSk7CisKKyAgICBjb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRHcmFudFNhbmRib3hFeHRl
bnNpb25zVG9SVENQcm92aWRlcihyZXF1ZXN0SUQsIG5ldHdvcmtIYW5kbGUpLCAwKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9SVENQcm92
aWRlckZvckNsaWVudCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IGNvbnN0IFN0cmluZyYgbG9jYWxBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHJlbW90ZUFkZHJlc3Mp
Cit7CisgICAgLy8gRklYTUUoMTY4MjQyKTogRGVjaWRlIGlmIHdlIHNob3VsZCBncmFudCBhbiBl
eHRlbnNpb24uCisKKyAgICBTdHJpbmdCdWlsZGVyIGV4dGVuc2lvbkJ1aWxkZXI7CisgICAgZXh0
ZW5zaW9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJuZXR3b3JrKiIpOworICAgIAorICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrSGFuZGxlOworICAgIC8vIEZJWE1FKDE2ODI0Myk6
IENyYWZ0IHRoZSBleHRlbnNpb24gZmlsdGVyIHRvIGp1c3QgaW5jbHVkZSB0aGUgcG9ydCB3ZSBh
Y3R1YWxseSBuZWVkLgorCisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2Vu
ZXJpY0V4dGVuc2lvbihleHRlbnNpb25CdWlsZGVyLnRvU3RyaW5nKCksIG5ldHdvcmtIYW5kbGUp
OworICAgIAorICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHJlcXVlc3RJRCwgbmV0d29y
a0hhbmRsZSksIDApOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBDaGlsZFByb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMTIzMjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5
LDYgKzEwOSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnModWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25z
VG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRocyk7CisjaWYgVVNFKExJQldFQlJUQykKKyAgICB2b2lkIGdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1
aW50MTZfdCBtYXhQb3J0KTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1By
b3ZpZGVyRm9yQ2xpZW50KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBsb2NhbEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgcmVtb3RlQWRkcmVz
cyk7CisjZW5kaWYKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVz
dWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAg
ICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZh
bHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMjMyNCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDIsNCArNDIsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
ICAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSBwcm90ZWN0aW9uU3BhY2UpCiAjZW5kaWYKKworI2lmIFVTRShMSUJXRUJSVEMpCisg
ICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvUlRDUHJvdmlkZXIodWludDY0X3QgcmVxdWVzdElE
LCBTdHJpbmcgcHJvdG9jb2wsIFN0cmluZyBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50
MTZfdCBtYXhQb3J0KQorICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1JUQ1Byb3ZpZGVyRm9y
Q2xpZW50KHVpbnQ2NF90IHJlcXVlc3RJRCwgU3RyaW5nIHByb3RvY29sLCBTdHJpbmcgbG9jYWws
IFN0cmluZyByZW1vdGVBZGRyZXNzKQorI2VuZGlmCiB9Cg==
</data>
<flag name="review"
          id="323470"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="323487"
          type_id="3"
          status="-"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>