<?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>156639</bug_id>
          
          <creation_ts>2016-04-15 13:07:50 -0700</creation_ts>
          <short_desc>[WK2][iOS] Only adjust network responses&apos; MIME type for QuickLook in the context of a main resource load</short_desc>
          <delta_ts>2016-04-18 11:49:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1184191</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-15 13:07:50 -0700</bug_when>
    <thetext>Do not bother with QuickLook for non-main resource loads in the NetworkProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184259</commentid>
    <comment_count>1</comment_count>
      <attachid>276521</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-15 16:29:58 -0700</bug_when>
    <thetext>Created attachment 276521
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184379</commentid>
    <comment_count>2</comment_count>
      <attachid>276560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-16 13:26:25 -0700</bug_when>
    <thetext>Created attachment 276560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184380</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-16 13:27:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/25765848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184416</commentid>
    <comment_count>4</comment_count>
      <attachid>276560</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-16 18:49:49 -0700</bug_when>
    <thetext>Comment on attachment 276560
Patch

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

&gt; Source/WebCore/platform/network/ios/QuickLook.h:81
&gt; +    static std::unique_ptr&lt;QuickLookHandle&gt; createIfNecessary(ResourceHandle*, NSURLConnection *, NSURLResponse *, id delegate);

Should be ResourceHandle&amp; if you’re going to change all the call sites anyway.

&gt; Source/WebCore/platform/network/ios/QuickLook.h:83
&gt; +    static std::unique_ptr&lt;QuickLookHandle&gt; createIfNecessary(ResourceHandle*, SynchronousResourceHandleCFURLConnectionDelegate*, CFURLResponseRef);

Ditto.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:113
&gt; +// We must ensure that the MIME type is correct, so that QuickLook&apos;s web plugin is called when needed.
&gt; +// We filter the basic MIME types so that we don&apos;t do unnecessary work in standard browsing situations.
&gt; +static void adjustMIMETypeForQuickLook(CFURLResponseRef cfResponse)

All the places that use this function call shouldCreateForMIMEType just after calling it, although they differ in how they get the MIME type. But this function knows exactly how to get the MIME type. Can we combine this adjustment and checking into a single function that’s more helpful for each of these call sites? Not sure exactly what to name it, but it would both adjust the MIME type and check if it’s eligible for quick look.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:135
&gt; +    if (!mimeType || CFStringCompare(mimeType.get(), quickLookMIMEType.get(), kCFCompareCaseInsensitive) != kCFCompareEqualTo)

It’s a shame that the code does Unicode case folding here when we just want ASCII case folding. In code inside WebKit we fixed that, but I doubt there is a CFString function that compares for equality ignoring ASCII case.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:439
&gt; +std::unique_ptr&lt;QuickLookHandle&gt; QuickLookHandle::createIfNecessary(ResourceHandle* handle, NSURLConnection *connection, NSURLResponse *nsResponse, id delegate)

Why not just call the response &quot;response&quot;? I don’t think we need to name it nsResponse.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:442
&gt; +    bool isMainResourceLoad = handle-&gt;firstRequest().requester() != ResourceRequest::Requester::Main;

is main &lt;- (requester != main)

Is that right? I think it’s backwards! How did you test?

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:447
&gt; +    adjustMIMETypeForQuickLook(nsResponse._CFURLResponse);
&gt; +    if (!shouldCreateForMIMEType(nsResponse.MIMEType))

This relies on the behavior where adjusting the MIME type on the underlying CFURLResponse will change the result of the MIMEType method. I guess we can rely on that but it seems strange. Aren’t we moving to NSURLSession? Where’s the code for that case?

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:459
&gt; +    bool isMainResourceLoad = handle-&gt;firstRequest().requester() == ResourceRequest::Requester::Main;

And, yes, this one is the other way around. Makes me even more sure the one above is wrong. I’m not sure you need a local variable in either of these cases. Doesn’t really help me understand the code all that much.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:485
&gt; +std::unique_ptr&lt;QuickLookHandle&gt; QuickLookHandle::createIfNecessary(ResourceLoader&amp; loader, NSURLResponse *nsURLResponse)

Why not just call the response &quot;response&quot;? I don’t think we need to name it nsURLResponse.

This function is a *lot* like the one above that takes an NSURLConnection and a delegate. Maybe there’s a way to share more code?

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:494
&gt; +    adjustMIMETypeForQuickLook(nsURLResponse._CFURLResponse);
&gt; +
&gt; +    if (!shouldCreateForMIMEType(nsURLResponse.MIMEType))
&gt; +        return nullptr;

Tiny formatting nit: Why a blank line after adjustMIMEType here, but not in the other two functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184420</commentid>
    <comment_count>5</comment_count>
      <attachid>276560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-16 19:58:00 -0700</bug_when>
    <thetext>Comment on attachment 276560
Patch

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

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.h:81
&gt;&gt; +    static std::unique_ptr&lt;QuickLookHandle&gt; createIfNecessary(ResourceHandle*, NSURLConnection *, NSURLResponse *, id delegate);
&gt; 
&gt; Should be ResourceHandle&amp; if you’re going to change all the call sites anyway.

Ok.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.h:83
&gt;&gt; +    static std::unique_ptr&lt;QuickLookHandle&gt; createIfNecessary(ResourceHandle*, SynchronousResourceHandleCFURLConnectionDelegate*, CFURLResponseRef);
&gt; 
&gt; Ditto.

Ok.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:113
&gt;&gt; +static void adjustMIMETypeForQuickLook(CFURLResponseRef cfResponse)
&gt; 
&gt; All the places that use this function call shouldCreateForMIMEType just after calling it, although they differ in how they get the MIME type. But this function knows exactly how to get the MIME type. Can we combine this adjustment and checking into a single function that’s more helpful for each of these call sites? Not sure exactly what to name it, but it would both adjust the MIME type and check if it’s eligible for quick look.

Ok, I will take a look.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:439
&gt;&gt; +std::unique_ptr&lt;QuickLookHandle&gt; QuickLookHandle::createIfNecessary(ResourceHandle* handle, NSURLConnection *connection, NSURLResponse *nsResponse, id delegate)
&gt; 
&gt; Why not just call the response &quot;response&quot;? I don’t think we need to name it nsResponse.

Ok

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:442
&gt;&gt; +    bool isMainResourceLoad = handle-&gt;firstRequest().requester() != ResourceRequest::Requester::Main;
&gt; 
&gt; is main &lt;- (requester != main)
&gt; 
&gt; Is that right? I think it’s backwards! How did you test?

Yes, this one is reversed. I tested the NSURLSession code path (below), which is what we now use everywhere.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:447
&gt;&gt; +    if (!shouldCreateForMIMEType(nsResponse.MIMEType))
&gt; 
&gt; This relies on the behavior where adjusting the MIME type on the underlying CFURLResponse will change the result of the MIMEType method. I guess we can rely on that but it seems strange. Aren’t we moving to NSURLSession? Where’s the code for that case?

Yes, it does rely on it and it is not uncommon in our networking code.
The code path used for NSURLSession / WebKit2 is the last factory function is this file.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:459
&gt;&gt; +    bool isMainResourceLoad = handle-&gt;firstRequest().requester() == ResourceRequest::Requester::Main;
&gt; 
&gt; And, yes, this one is the other way around. Makes me even more sure the one above is wrong. I’m not sure you need a local variable in either of these cases. Doesn’t really help me understand the code all that much.

Ok, will fold it back into the if case.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:485
&gt;&gt; +std::unique_ptr&lt;QuickLookHandle&gt; QuickLookHandle::createIfNecessary(ResourceLoader&amp; loader, NSURLResponse *nsURLResponse)
&gt; 
&gt; Why not just call the response &quot;response&quot;? I don’t think we need to name it nsURLResponse.
&gt; 
&gt; This function is a *lot* like the one above that takes an NSURLConnection and a delegate. Maybe there’s a way to share more code?

FYI, this is the code path used for NSURLSession / WebKit2. I will look into sharing more code.

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:494
&gt;&gt; +        return nullptr;
&gt; 
&gt; Tiny formatting nit: Why a blank line after adjustMIMEType here, but not in the other two functions?

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184436</commentid>
    <comment_count>6</comment_count>
      <attachid>276572</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-16 21:50:16 -0700</bug_when>
    <thetext>Created attachment 276572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184497</commentid>
    <comment_count>7</comment_count>
      <attachid>276572</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-17 11:58:43 -0700</bug_when>
    <thetext>Comment on attachment 276572
Patch

Clearing flags on attachment: 276572

Committed r199644: &lt;http://trac.webkit.org/changeset/199644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184498</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-17 11:58:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184684</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-18 08:43:19 -0700</bug_when>
    <thetext>I rolled this out in r199669 because it seems to have caused a 1-2% regression on *warm* PLT. I think this is likely due to the fact that the previous code would save the updated MIME type in the disk cache, and would need to adjust the MIME type for QuickLook when the response is a successful validation (304 status code), which is common in the context of the warm PLT.

The new code was in the WebContent process and as a result, is not aware of network validations happening in the Network Process Disk Cache. Also, since the MIME type is adjusted in WebCore, we were not able to save the updated MIME type in the disk cache.

I think the plan B for this is to keep the QuickLook MIME type adjustment code in the NetworkProcess and only run it for main resources. As a result, we will be a lot less likely to dlopen() QuickLook in the NetworkProcess (because main resources usually have the common text/html MIME type, which we don&apos;t adjust).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184732</commentid>
    <comment_count>10</comment_count>
      <attachid>276646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-18 10:46:40 -0700</bug_when>
    <thetext>Created attachment 276646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184745</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-18 11:41:22 -0700</bug_when>
    <thetext>take #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184748</commentid>
    <comment_count>12</comment_count>
      <attachid>276646</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-18 11:49:42 -0700</bug_when>
    <thetext>Comment on attachment 276646
Patch

Clearing flags on attachment: 276646

Committed r199682: &lt;http://trac.webkit.org/changeset/199682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184749</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-18 11:49:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276521</attachid>
            <date>2016-04-15 16:29:58 -0700</date>
            <delta_ts>2016-04-16 13:26:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>156639_QuickLook_NetworkProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>14589</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA5MjY0M2Q5Li5kNjg4N2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuY3BwCkBAIC0xNjYsOSArMTY2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDCiAj
ZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIG1faGFuZGxlLT5zZXRRdWlja0xvb2tI
YW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRoaXMsIGNmUmVzcG9uc2Up
KTsKLSAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQotICAgICAgICBjZlJlc3Bv
bnNlID0gbV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5jZlJlc3BvbnNlKCk7CisgICAgaWYg
KGF1dG8gcXVpY2tMb29rSGFuZGxlID0gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2Fy
eShtX2hhbmRsZSwgdGhpcywgY2ZSZXNwb25zZSkpIHsKKyAgICAgICAgY2ZSZXNwb25zZSA9IHF1
aWNrTG9va0hhbmRsZS0+Y2ZSZXNwb25zZSgpOworICAgICAgICBtX2hhbmRsZS0+c2V0UXVpY2tM
b29rSGFuZGxlKFdURk1vdmUocXVpY2tMb29rSGFuZGxlKSk7CisgICAgfQogI2VuZGlmCiAgICAg
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCA0
NDgyNGRhLi5jNmE2NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2suaApAQCAtNzgsMTQgKzc4LDEyIEBAIFdFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5TU3RyaW5nICpmaWxlTmFtZSk7
CiBjbGFzcyBRdWlja0xvb2tIYW5kbGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1aWNr
TG9va0hhbmRsZSk7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hv
dWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgTlNVUkxD
b25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGVJZk5lY2Vzc2FyeShSZXNvdXJj
ZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRl
KTsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlSWZOZWNlc3NhcnkoUmVz
b3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2Yg
UmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJl
c291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGVJZk5lY2Vz
c2FyeShSZXNvdXJjZUxvYWRlciYsIE5TVVJMUmVzcG9uc2UgKik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB+UXVpY2tMb29rSGFuZGxlKCk7CiAKQEAgLTExMCw2ICsxMDgsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFF1aWNrTG9va0hhbmRsZShOU1VSTCAqLCBOU1VSTENvbm5lY3Rpb24gKiwg
TlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7CiAKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRD
cmVhdGVGb3JNSU1FVHlwZShOU1N0cmluZyAqKTsKKwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9m
aXJzdFJlcXVlc3RVUkw7CiAgICAgUmV0YWluUHRyPFFMUHJldmlld0NvbnZlcnRlcj4gbV9jb252
ZXJ0ZXI7CiAgICAgUmV0YWluUHRyPGlkPiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDEzZDFkZGMuLjQzNDQx
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNr
TG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0KQEAgLTM2LDEwICszNiwxNCBAQAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bXBvcnQgIlJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKKyNpbXBvcnQgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlVUSVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgor
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViQ29yZVVSTFJl
c3BvbnNlSU9TLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8
d3RmL1RocmVhZGluZy5oPgpAQCAtNDgsNiArNTIsMTQgQEAKIAogI2ltcG9ydCAiUXVpY2tMb29r
U29mdExpbmsuaCIKIAorU09GVF9MSU5LX0ZSQU1FV09SSyhNb2JpbGVDb3JlU2VydmljZXMpCisK
K1NPRlRfTElOSyhNb2JpbGVDb3JlU2VydmljZXMsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcsIENGU3RyaW5nUmVmLCAoQ0ZTdHJpbmdSZWYgaW5UYWdDbGFzcywgQ0ZTdHJp
bmdSZWYgaW5UYWcsIENGU3RyaW5nUmVmIGluQ29uZm9ybWluZ1RvVVRJKSwgKGluVGFnQ2xhc3Ms
IGluVGFnLCBpbkNvbmZvcm1pbmdUb1VUSSkpCisKK1NPRlRfTElOS19DT05TVEFOVChNb2JpbGVD
b3JlU2VydmljZXMsIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIENGU3RyaW5nUmVmKQor
CisjZGVmaW5lIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24gZ2V0a1VUVGFnQ2xhc3NGaWxl
bmFtZUV4dGVuc2lvbigpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU1NldCAqV2Vi
Q29yZTo6UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkKQEAgLTk2LDYgKzEwOCwz
NSBAQCBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqUUxDb250ZW50RGljdGlvbmFyeSgpCiAg
ICAgcmV0dXJuIGNvbnRlbnREaWN0aW9uYXJ5OwogfQogCitzdGF0aWMgdm9pZCBhZGp1c3RNSU1F
VHlwZUZvclF1aWNrTG9vayhDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCit7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShj
ZlJlc3BvbnNlKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVwZGF0ZWRNSU1FVHlwZSA9
IG1pbWVUeXBlOworCisgICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlz
IGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBu
ZWVkZWQuCisgICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2Ug
ZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25z
LgorICAgIGlmIChzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRh
dGVkTUlNRVR5cGUuZ2V0KCkpKSB7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5h
bWUoY2ZSZXNwb25zZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9v
a01JTUVUeXBlID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYpUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZv
ckZpbGVOYW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCks
IChOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7CisgICAgICAgIGlmICghcXVpY2tMb29rTUlN
RVR5cGUpIHsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gQ0ZVUkxSZXNwb25zZUdldFVSTChjZlJl
c3BvbnNlKTsKKyAgICAgICAgICAgIGlmIChbKE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKKyAg
ICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0Yo
Q0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXh0ZW5z
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
RmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgbnVsbHB0cikpOworICAgICAgICAg
ICAgICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCisgICAgICAgICAgICB1cGRhdGVkTUlNRVR5cGUg
PSBxdWlja0xvb2tNSU1FVHlwZTsKKyAgICB9CisKKyAgICBpZiAoIW1pbWVUeXBlIHx8IENGU3Ry
aW5nQ29tcGFyZShtaW1lVHlwZS5nZXQoKSwgdXBkYXRlZE1JTUVUeXBlLmdldCgpLCBrQ0ZDb21w
YXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgQ0ZVUkxS
ZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSk7Cit9
CisKIHZvaWQgV2ViQ29yZTo6YWRkUUxQcmV2aWV3Q29udmVydGVyV2l0aEZpbGVGb3JVUkwoTlNV
UkwgKnVybCwgaWQgY29udmVydGVyLCBOU1N0cmluZyAqZmlsZU5hbWUpCiB7CiAgICAgQVNTRVJU
KHVybCk7CkBAIC0zOTYsMTAgKzQzNywxNSBAQCBRdWlja0xvb2tIYW5kbGU6OlF1aWNrTG9va0hh
bmRsZShOU1VSTCAqZmlyc3RSZXF1ZXN0VVJMLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lYwogICAg
IExPRyhOZXR3b3JrLCAiUXVpY2tMb29rSGFuZGxlOjpRdWlja0xvb2tIYW5kbGUoKSAtIHByZXZp
ZXdGaWxlTmFtZTogJXMiLCBbbV9jb252ZXJ0ZXIgcHJldmlld0ZpbGVOYW1lXSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxS
ZXNwb25zZSAqbnNSZXNwb25zZSwgaWQgZGVsZWdhdGUpCitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXNwb25zZSAq
bnNSZXNwb25zZSwgaWQgZGVsZWdhdGUpCiB7CiAgICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRs
ZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkgIT0gUmVzb3Vy
Y2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4gfHwgIVtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXNTZXQoKSBjb250YWluc09iamVjdDpbbnNSZXNwb25zZSBNSU1FVHlwZV1dKQorICAgIGJv
b2wgaXNNYWluUmVzb3VyY2VMb2FkID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIo
KSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICBpZiAoIWlzTWFpblJl
c291cmNlTG9hZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhZGp1c3RNSU1FVHlw
ZUZvclF1aWNrTG9vayhuc1Jlc3BvbnNlLl9DRlVSTFJlc3BvbnNlKTsKKyAgICBpZiAoIXNob3Vs
ZENyZWF0ZUZvck1JTUVUeXBlKG5zUmVzcG9uc2UuTUlNRVR5cGUpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9v
a0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJM
UmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBjb25uZWN0aW9uLCBuc1Jlc3BvbnNl
LCBkZWxlZ2F0ZSkpOwpAQCAtNDA4LDEwICs0NTQsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNr
TG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwKIH0KIAogI2lmIFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFu
ZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25E
ZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQorc3RkOjp1bmlxdWVfcHRyPFF1
aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
KQogewogICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmIChoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpN
YWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmpl
Y3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkKKyAg
ICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVz
dGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47CisgICAgaWYgKCFpc01h
aW5SZXNvdXJjZUxvYWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYWRqdXN0TUlN
RVR5cGVGb3JRdWlja0xvb2soY2ZSZXNwb25zZSk7CisgICAgaWYgKCFzaG91bGRDcmVhdGVGb3JN
SU1FVHlwZShDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJM
UmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNwb25zZV07CkBAIC00Mjcs
MTcgKzQ3OCwyNCBAQCBDRlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25z
ZSgpCiB9CiAjZW5kaWYKIAotYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitib29sIFF1aWNrTG9va0hhbmRsZTo6c2hv
dWxkQ3JlYXRlRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWVUeXBlKQogewogICAgIHJldHVybiBb
UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWltZVR5
cGVdOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5k
bGU6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3N0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hh
bmRsZTo6Y3JlYXRlSWZOZWNlc3NhcnkoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgTlNVUkxSZXNw
b25zZSAqbnNVUkxSZXNwb25zZSkKIHsKLSAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlRm9yTUlNRVR5
cGUocmVzcG9uc2UubWltZVR5cGUoKSkpOworICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0g
bG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpID09ICZsb2FkZXI7
CisgICAgaWYgKCFpc01haW5SZXNvdXJjZUxvYWQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYWRqdXN0TUlNRVR5cGVGb3JRdWlja0xvb2sobnNVUkxSZXNwb25zZS5fQ0ZVUkxSZXNw
b25zZSk7CisKKyAgICBpZiAoIXNob3VsZENyZWF0ZUZvck1JTUVUeXBlKG5zVVJMUmVzcG9uc2Uu
TUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0cjxXZWJS
ZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJS
ZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9h
ZGVyOiZsb2FkZXJdKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlj
a0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbbG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWwsIHJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSwgZGVsZWdhdGUuZ2V0KCkpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVp
Y2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbbG9hZGVy
Lm9yaWdpbmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxd
LCBuaWwsIG5zVVJMUmVzcG9uc2UsIGRlbGVnYXRlLmdldCgpKSk7CiAgICAgW2RlbGVnYXRlIHNl
dFF1aWNrTG9va0hhbmRsZTpxdWlja0xvb2tIYW5kbGUuZ2V0KCldOwogICAgIGxvYWRlci5kaWRD
cmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7CiAgICAgcmV0dXJuIHF1aWNr
TG9va0hhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCBkMDY4ZjkxLi40OTc1NGYy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtMjgsMjEgKzI4LDYgQEAKIAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKLSNpbXBvcnQg
IlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotCi0j
aW1wb3J0ICJRdWlja0xvb2suaCIKLSNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCi0jaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNv
cmVTZXJ2aWNlcy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKE1vYmlsZUNvcmVTZXJ2aWNlcykK
LQotU09GVF9MSU5LKE1vYmlsZUNvcmVTZXJ2aWNlcywgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZywgQ0ZTdHJpbmdSZWYsIChDRlN0cmluZ1JlZiBpblRhZ0NsYXNzLCBDRlN0
cmluZ1JlZiBpblRhZywgQ0ZTdHJpbmdSZWYgaW5Db25mb3JtaW5nVG9VVEkpLCAoaW5UYWdDbGFz
cywgaW5UYWcsIGluQ29uZm9ybWluZ1RvVVRJKSkKLQotU09GVF9MSU5LX0NPTlNUQU5UKE1vYmls
ZUNvcmVTZXJ2aWNlcywga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgQ0ZTdHJpbmdSZWYp
Ci0KLSNkZWZpbmUga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiBnZXRrVVRUYWdDbGFzc0Zp
bGVuYW1lRXh0ZW5zaW9uKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MywyNyArMzgs
NiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJl
c3BvbnNlKQogICAgIGlmICghdXBkYXRlZE1JTUVUeXBlKQogICAgICAgICB1cGRhdGVkTUlNRVR5
cGUgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOwogCi0jaWYgVVNFKFFVSUNL
X0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNvcnJl
Y3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBuZWVkZWQu
Ci0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2UgZG9uJ3Qg
ZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25zLgotICAg
IGlmIChzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlN
RVR5cGUuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVk
RmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUoY2ZS
ZXNwb25zZSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9va01JTUVU
eXBlID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYpUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVO
YW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCksIChOU1N0
cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7Ci0gICAgICAgIGlmICghcXVpY2tMb29rTUlNRVR5cGUp
IHsKLSAgICAgICAgICAgIGF1dG8gdXJsID0gQ0ZVUkxSZXNwb25zZUdldFVSTChjZlJlc3BvbnNl
KTsKLSAgICAgICAgICAgIGlmIChbKE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKLSAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxD
b3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRD
RihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5h
bWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgbnVsbHB0cikpOwotICAgICAgICAgICAgICAg
ICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdldCgpKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRhdGVkTUlNRVR5cGUgPSBxdWlj
a0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCiAgICAgaWYg
KCFtaW1lVHlwZSB8fCBDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUuZ2V0KCksIHVwZGF0ZWRNSU1F
VHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFs
VG8pCiAgICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCB1cGRhdGVk
TUlNRVR5cGUuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0KaW5kZXggZGMzYmQ4YS4uMGQzNzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0xNjIsOSArMTYyLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBtX2hhbmRsZS0+c2V0
UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKG1faGFuZGxlLCBjb25uZWN0
aW9uLCByLCBzZWxmKSk7Ci0gICAgaWYgKG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSkKLSAg
ICAgICAgciA9IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+bnNSZXNwb25zZSgpOworICAg
IGlmIChhdXRvIHF1aWNrTG9va0hhbmRsZSA9IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlSWZOZWNl
c3NhcnkobV9oYW5kbGUsIGNvbm5lY3Rpb24sIHIsIHNlbGYpKSB7CisgICAgICAgIHIgPSBxdWlj
a0xvb2tIYW5kbGUtPm5zUmVzcG9uc2UoKTsKKyAgICAgICAgbV9oYW5kbGUtPnNldFF1aWNrTG9v
a0hhbmRsZShXVEZNb3ZlKHF1aWNrTG9va0hhbmRsZSkpOworICAgIH0KICNlbmRpZgogICAgIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGViMzJhYTIuLjlkNTBlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTE0LDEyICsxMTQsMTIg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAvLyBSZWZyYWluIGZyb20gY2FsbGluZyBk
aWRSZWNlaXZlUmVzcG9uc2UgaWYgUXVpY2tMb29rIHdpbGwgY29udmVydCB0aGlzIHJlc3BvbnNl
LCBzaW5jZSB0aGUgTUlNRSB0eXBlIG9mIHRoZQogICAgIC8vIGNvbnZlcnRlZCByZXNvdXJjZSBp
c24ndCB5ZXQga25vd24uIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgd2lsbCBs
YXRlciBjYWxsIGRpZFJlY2VpdmVSZXNwb25zZSB1cG9uCiAgICAgLy8gcmVjZWl2aW5nIHRoZSBj
b252ZXJ0ZWQgZGF0YS4KLSAgICBib29sIGlzTWFpbkxvYWQgPSBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpID09IG1fY29yZUxvYWRlcjsKLSAgICBp
ZiAoaXNNYWluTG9hZCAmJiBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBl
KHJlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKCptX2Nv
cmVMb2FkZXIsIHJlc3BvbnNlKSk7CisgICAgaWYgKGF1dG8gcXVpY2tMb29rSGFuZGxlID0gUXVp
Y2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgqbV9jb3JlTG9hZGVyLCByZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkpKSB7CisgICAgICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+c2V0UXVpY2tMb29rSGFuZGxlKFdURk1vdmUocXVpY2tMb29rSGFuZGxlKSk7CiAgICAgICAg
IHNob3VkQ2FsbENvcmVMb2FkZXJEaWRSZWNlaXZlUmVzcG9uc2UgPSBmYWxzZTsKICAgICB9CiAj
ZW5kaWYKKwogICAgIGlmIChzaG91ZENhbGxDb3JlTG9hZGVyRGlkUmVjZWl2ZVJlc3BvbnNlKQog
ICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276560</attachid>
            <date>2016-04-16 13:26:25 -0700</date>
            <delta_ts>2016-04-16 21:50:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156639-20160416132640.patch</filename>
            <type>text/plain</type>
            <size>19742</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhhOWZlYTQ0MzY2M2Qz
MGQ4YjE1ZDYyZGQ2ZGY2Y2ZmZjM5ZGRkZC4uODI5NWYyYzMxYzIwMjNmOGM5YmQ3MTRjMThhNGZl
NDIyMDVhNWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA0LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9TXSBEbyBub3Qg
ZGxvcGVuKCkgUXVpY2tMb29rIGluIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NjM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHVubmVjZXNzYXJpbHkgZGxv
cGVuKCkgUXVpY2tMb29rIGluIHRoZSBOZXR3b3JrUHJvY2VzcyBvbiBpT1MsIGFzCisgICAgICAg
IHdlIGFscmVhZHkgZGxvcGVuKCkgdGhpcyBsaWJyYXJ5IGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MuIFRoaXMgcGF0Y2gKKyAgICAgICAgbW92ZXMgdGhlIHJlc291cmNlIHJlc3BvbnNlIE1JTUUg
dHlwZSBhZGp1c3RpbmcgY29kZSBmb3IgUXVpY2tMb29rIGZyb20KKyAgICAgICAgYWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeSgpIHRvIGEgbmV3IGFkanVzdE1JTUVUeXBlRm9yUXVpY2tMb29rKCkg
ZnVuY3Rpb24uCisgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoKSBpcyBjYWxsZWQg
aW4gZGlkUmVjZWl2ZVJlc3BvbnNlKCkgaW4gdGhlIE5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBz
aWRlLCBmb3IgKmV2ZXJ5KiByZXNvdXJjZSByZXNwb25zZSwgZXZlbiB0aG91Z2ggUXVpY2tMb29r
IGNhbiBvbmx5CisgICAgICAgIGJlIHVzZWQgdG8gcHJldmlldyBtYWluIHJlc291cmNlcy4gVGhl
IG5ldyBhZGp1c3RNSU1FVHlwZUZvclF1aWNrTG9vaygpCisgICAgICAgIGZ1bmN0aW9uIGlzIGNh
bGxlZCBpbiB0aGUgUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgpIGZhY3RvcnkK
KyAgICAgICAgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSBjaGVja2luZyB0aGUgTUlNRSB0eXBlIHRv
IGRldGVybWluZSBpZiB3ZSBuZWVkIHRvCisgICAgICAgIHVzZSBRdWlja0xvb2ssIGFuZCBhZnRl
ciBjaGVja2luZyB0aGF0IHRoZSBsb2FkIGlzIGZvciBhIG1haW4gcmVzb3VyY2UuCisgICAgICAg
IEluIHRoZSBXZWJLaXQyIGNhc2UsIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
CisgICAgICAgIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKSwgb24gdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BlZWRzIHVw
IHRoZSBmaXJzdCBwYWdlIGxvYWQgZHVyaW5nIFBMVCBieSB+MjIlLCBiZWNhdXNlIHRoZQorICAg
ICAgICBmaXJzdCBsb2FkIG5vIGxvbmdlciB0cmlnZ2VycyBhIGRsb3BlbigpIHRvIFF1aWNrTG9v
ayBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCisgICAgICAgIFRoZSBvdmVyYWxsIFBMVCBzY29yZSBz
ZWVtcyB0byBiZSBwcm9ncmVzc2VkIGJ5IDAuOS0xJSBhcyB3ZWxsLiBUaGUgY2hhbmdlCisgICAg
ICAgIHNob3VsZCBhbHNvIGJlIG1lbW9yeS1wb3NpdGl2ZSBhcyB3ZSBubyBsb25nZXIgbmVlZCB0
byBkbG9wZW4oKSB0aGUKKyAgICAgICAgUXVpY2tMb29rIGxpYnJhcnkgaW4gdGhlIE5ldHdvcmtQ
cm9jZXNzIGF0IGFsbCAoYW5kIHdlIHdvdWxkIGFscmVhZHkgZGxvcGVuKCkKKyAgICAgICAgaXQg
b24gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIGFueXdheSkuIFNhZGx5LCBQTFVNIGJlbmNo
bWFyayBkb2VzIG5vdAorICAgICAgICBzaG93IHRoZSBtZW1vcnkgYmVuZWZpdCBiZWNhdXNlIGl0
IGRvZXMgbm90IG1lYXN1cmUgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZQorICAgICAgICBOZXR3b3Jr
IHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIFJlZmFjdG9yIHRoZSBjb2RlIGEgYml0IGZvciBjbGFy
aXR5LCBzbyB0aGF0IHdlIG9ubHkKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9v
a0hhbmRsZSgpIHdoZW4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgpCisgICAg
ICAgIHJldHVybnMgYSBub24tbnVsbCBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgIC0gUmVuYW1lIHRoZSBmYWN0b3JpZXMgZnJv
bSBjcmVhdGUoKSB0byBjcmVhdGVJZk5lY2Vzc2FyeSgpIGdpdmVuIHRoYXQgdGhleQorICAgICAg
ICAgIHJldHVybiBudWxscHRyIHdoZW4gaXQgaXMgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIHN1Y2gg
aGFuZGxlIChpLmUuIHRoaXMgaXMgbm90CisgICAgICAgICAgYSBtYWluIHJlc291cmNlIGxvYWRl
ciwgb3IgaXQgaXMgdW5lY2Vzc2FyeSBnaXZlbiB0aGUgcmVzcG9uc2UncyBNSU1FIHR5cGUuCisg
ICAgICAgIC0gTWFrZSBzaG91bGRDcmVhdGVGb3JNSU1FVHlwZSgpIHByaXZhdGUgbm93IHRoYXQg
dGhpcyBpcyBhbHdheXMgY2FsbGVkIGluc2lkZQorICAgICAgICAgIHRoZSBmYWN0b3J5IGZ1bmN0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbToKKyAg
ICAgICAgKGFkanVzdE1JTUVUeXBlRm9yUXVpY2tMb29rKToKKyAgICAgICAgRXh0cmFjdGVkIGNv
ZGUgZm9yIGFkanVzdGluZyB0aGUgTUlNRSB0eXBlIGZvciBRdWlja0xvb2sgZnJvbSB0aGUgZ2Vu
ZXJpYworICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KCkgaW4gV2ViQ29yZVVSTFJl
c3BvbnNlSU9TLm1tIHRvIGl0cyBvd24gZnVuY3Rpb24KKyAgICAgICAgaGVyZS4KKworICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAg
IENhbGwgYWRqdXN0TUlNRVR5cGVGb3JRdWlja0xvb2soKSBiZWZvcmUgY2hlY2tpbmcgdGhlIE1J
TUUgdHlwZS4KKworICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpzaG91bGRDcmVh
dGVGb3JNSU1FVHlwZSk6CisgICAgICAgIFRha2UgYSBOU1N0cmluZyAqIGluLCBpbnN0ZWFkIG9m
IGEgU3RyaW5nIHRvIHN1aXQgYWxsIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjph
ZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgRXh0cmFjdGVkIFF1aWNrTG9vay1z
cGVjaWZpYyBjb2RlIHRvIFF1aWNrTG9vay5tbS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9u
c2U6XSk6CisgICAgICAgIFJlZmFjdG9yIHRoZSBjb2RlIGEgYml0IGZvciBjbGFyaXR5LCBzbyB0
aGF0IHdlIG9ubHkKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9va0hhbmRsZSgp
IHdoZW4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgpCisgICAgICAgIHJldHVy
bnMgYSBub24tbnVsbCBwb2ludGVyLgorCiAyMDE2LTA0LTE1ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1A6IElnbm9yZSBwYXRocyBpbiBDU1AgbWF0Y2hp
bmcgYWZ0ZXIgcmVkaXJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQzNWE5M2YwMDA5MDcwZGIzYTk2ODg5
YjJkYjcwYjliZDlmMDhhNi4uOWQ3Mzg5OGU4NjFjNmQ2OWNkYTBiMWQxYTQ1MjZiZWJhNzI1ZTc5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA0LTE2ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9TXSBEbyBub3QgZGxvcGVuKCkg
UXVpY2tMb29rIGluIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgTW92ZSBjaGVja3MgZm9yIG1haW4gcmVzb3VyY2UgbG9hZCBh
bmQgZm9yIE1JTUUgdHlwZSBpbnNpZGUgb2YKKyAgICAgICAgUXVpY2tMb29rSGFuZGxlOjpjcmVh
dGVJZk5lY2Vzc2FyeSgpLCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKKyAgICAgICAgb3RoZXIg
UXVpY2tMb29rSGFuZGxlIGZhY3RvcnkgZnVuY3Rpb25zLgorCiAyMDE2LTA0LTE1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBOZXR3b3JrTG9hZCBhcyBG
YXN0QWxsb2NhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKaW5kZXggOTI2NDNkOTdjOTc4NDNjN2Uy
NmM0OWZhZDkwYjJjZTQ3MjBhN2EwOC4uZDY4ODdmZTcxZmI4NzAxZmE4MTUwNzVlMTAxMzIwNGI3
YWQ1ZTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMTY2LDkgKzE2NiwxMCBAQCB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQwogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBt
X2hhbmRsZS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKG1faGFu
ZGxlLCB0aGlzLCBjZlJlc3BvbnNlKSk7Ci0gICAgaWYgKG1faGFuZGxlLT5xdWlja0xvb2tIYW5k
bGUoKSkKLSAgICAgICAgY2ZSZXNwb25zZSA9IG1faGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+
Y2ZSZXNwb25zZSgpOworICAgIGlmIChhdXRvIHF1aWNrTG9va0hhbmRsZSA9IFF1aWNrTG9va0hh
bmRsZTo6Y3JlYXRlSWZOZWNlc3NhcnkobV9oYW5kbGUsIHRoaXMsIGNmUmVzcG9uc2UpKSB7Cisg
ICAgICAgIGNmUmVzcG9uc2UgPSBxdWlja0xvb2tIYW5kbGUtPmNmUmVzcG9uc2UoKTsKKyAgICAg
ICAgbV9oYW5kbGUtPnNldFF1aWNrTG9va0hhbmRsZShXVEZNb3ZlKHF1aWNrTG9va0hhbmRsZSkp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNw
b25zZShjZlJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1F1aWNrTG9vay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUXVpY2tMb29rLmgKaW5kZXggNDQ4MjRkYTAyNThkY2MxNzRiZGU5YmU3NTc2YTVmY2YyMTZj
MDU5Ni4uYzZhNjQ1OGQyYjE1NjgyYjJiZWE4YjhhZTZiYzQ4Y2ZhMGUzODMxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKQEAgLTc4LDE0
ICs3OCwxMiBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZv
clF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUpOwogY2xhc3MgUXVpY2tMb29rSGFuZGxlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWlja0xvb2tIYW5kbGUpOwogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+
IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNl
ICosIGlkIGRlbGVnYXRlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hh
bmRsZT4gY3JlYXRlSWZOZWNlc3NhcnkoUmVzb3VyY2VIYW5kbGUqLCBOU1VSTENvbm5lY3Rpb24g
KiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7CiAjaWYgVVNFKENGTkVUV09SSykKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNl
SGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
KiwgQ0ZVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IGNyZWF0ZUlmTmVjZXNzYXJ5KFJlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7
CiAjZW5kaWYKICAgICAvLyBGSVhNRTogVXNlIG9mIFJlc291cmNlTG9hZGVyIGhlcmUgaXMgYSBw
bGF0Zm9ybSB2aW9sYXRpb24uCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlSWZOZWNlc3NhcnkoUmVzb3VyY2VMb2FkZXImLCBOU1VS
TFJlc3BvbnNlICopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgflF1aWNrTG9va0hhbmRsZSgpOwog
CkBAIC0xMTAsNiArMTA4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBRdWlja0xvb2tIYW5k
bGUoTlNVUkwgKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdh
dGUpOwogCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoTlNTdHJpbmcg
Kik7CisKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fZmlyc3RSZXF1ZXN0VVJMOwogICAgIFJldGFp
blB0cjxRTFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJldGFpblB0cjxpZD4g
bV9kZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1
aWNrTG9vay5tbQppbmRleCAxM2QxZGRjM2NhZTllZjIzNjdmNjQxZjQ5MDdlNmUyYTgxZGE0MWEx
Li44ZTdiN2YyNzQ1Y2JjN2QwNWRjZWFlNGRjNWYxYjMwZGZkMWMyOTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zNiwxMCAr
MzYsMTQgQEAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxv
YWRlci5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisjaW1wb3J0ICJT
dWJyZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4K
QEAgLTQ4LDYgKzUyLDE0IEBACiAKICNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCiAKK1NP
RlRfTElOS19GUkFNRVdPUksoTW9iaWxlQ29yZVNlcnZpY2VzKQorCitTT0ZUX0xJTksoTW9iaWxl
Q29yZVNlcnZpY2VzLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnLCBDRlN0
cmluZ1JlZiwgKENGU3RyaW5nUmVmIGluVGFnQ2xhc3MsIENGU3RyaW5nUmVmIGluVGFnLCBDRlN0
cmluZ1JlZiBpbkNvbmZvcm1pbmdUb1VUSSksIChpblRhZ0NsYXNzLCBpblRhZywgaW5Db25mb3Jt
aW5nVG9VVEkpKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoTW9iaWxlQ29yZVNlcnZpY2VzLCBrVVRU
YWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBDRlN0cmluZ1JlZikKKworI2RlZmluZSBrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uIGdldGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24oKQor
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNTZXQgKldlYkNvcmU6OlFMUHJldmlld0dl
dFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCkBAIC05Niw2ICsxMDgsMzQgQEAgc3RhdGljIE5TTXV0
YWJsZURpY3Rpb25hcnkgKlFMQ29udGVudERpY3Rpb25hcnkoKQogICAgIHJldHVybiBjb250ZW50
RGljdGlvbmFyeTsKIH0KIAorLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlz
IGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBu
ZWVkZWQuCisvLyBXZSBmaWx0ZXIgdGhlIGJhc2ljIE1JTUUgdHlwZXMgc28gdGhhdCB3ZSBkb24n
dCBkbyB1bm5lY2Vzc2FyeSB3b3JrIGluIHN0YW5kYXJkIGJyb3dzaW5nIHNpdHVhdGlvbnMuCitz
dGF0aWMgdm9pZCBhZGp1c3RNSU1FVHlwZUZvclF1aWNrTG9vayhDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IENGVVJM
UmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKTsKKworICAgIGlmICghc2hvdWxkVXNlUXVp
Y2tMb29rRm9yTUlNRVR5cGUobWltZVR5cGUuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKGNmUmVzcG9uc2UpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9va01JTUVUeXBlID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYp
UUxUeXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVOYW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICop
c3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCksIChOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7Cisg
ICAgaWYgKCFxdWlja0xvb2tNSU1FVHlwZSkgeworICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVz
cG9uc2VHZXRVUkwoY2ZSZXNwb25zZSk7CisgICAgICAgIGlmICghWyhOU1VSTCAqKXVybCBpc0Zp
bGVVUkxdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKKyAg
ICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQo
KSwgbnVsbHB0cikpOworICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVU
SVRyZWUodXRpLmdldCgpKTsKKyAgICAgICAgaWYgKCFxdWlja0xvb2tNSU1FVHlwZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbWVUeXBlIHx8IENGU3RyaW5nQ29t
cGFyZShtaW1lVHlwZS5nZXQoKSwgcXVpY2tMb29rTUlNRVR5cGUuZ2V0KCksIGtDRkNvbXBhcmVD
YXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICBDRlVSTFJlc3Bv
bnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgcXVpY2tMb29rTUlNRVR5cGUuZ2V0KCkpOworfQor
CiB2b2lkIFdlYkNvcmU6OmFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9yVVJMKE5TVVJM
ICp1cmwsIGlkIGNvbnZlcnRlciwgTlNTdHJpbmcgKmZpbGVOYW1lKQogewogICAgIEFTU0VSVCh1
cmwpOwpAQCAtMzk2LDEwICs0MzYsMTUgQEAgUXVpY2tMb29rSGFuZGxlOjpRdWlja0xvb2tIYW5k
bGUoTlNVUkwgKmZpcnN0UmVxdWVzdFVSTCwgTlNVUkxDb25uZWN0aW9uICpjb25uZWMKICAgICBM
T0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFuZGxlKCkgLSBwcmV2aWV3
RmlsZU5hbWU6ICVzIiwgW21fY29udmVydGVyIHByZXZpZXdGaWxlTmFtZV0pOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5TVVJMUmVz
cG9uc2UgKm5zUmVzcG9uc2UsIGlkIGRlbGVnYXRlKQorc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5TVVJMUmVzcG9uc2UgKm5z
UmVzcG9uc2UsIGlkIGRlbGVnYXRlKQogewogICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUp
OwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNl
UmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5
cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6W25zUmVzcG9uc2UgTUlNRVR5cGVdXSkKKyAgICBib29s
IGlzTWFpblJlc291cmNlTG9hZCA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkg
IT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47CisgICAgaWYgKCFpc01haW5SZXNv
dXJjZUxvYWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYWRqdXN0TUlNRVR5cGVG
b3JRdWlja0xvb2sobnNSZXNwb25zZS5fQ0ZVUkxSZXNwb25zZSk7CisgICAgaWYgKCFzaG91bGRD
cmVhdGVGb3JNSU1FVHlwZShuc1Jlc3BvbnNlLk1JTUVUeXBlKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tI
YW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgY29ubmVjdGlvbiwgbnNSZXNwb25zZSwg
ZGVsZWdhdGUpKTsKQEAgLTQwOCwxMCArNDUzLDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
CiB9CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRs
ZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVs
ZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3N0ZDo6dW5pcXVlX3B0cjxRdWlj
a0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlSWZOZWNlc3NhcnkoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKiBjb25uZWN0aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFp
biB8fCAhW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0
OihOU1N0cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCisgICAg
Ym9vbCBpc01haW5SZXNvdXJjZUxvYWQgPSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3Rl
cigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgIGlmICghaXNNYWlu
UmVzb3VyY2VMb2FkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGFkanVzdE1JTUVU
eXBlRm9yUXVpY2tMb29rKGNmUmVzcG9uc2UpOworICAgIGlmICghc2hvdWxkQ3JlYXRlRm9yTUlN
RVR5cGUoQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJl
c3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwpAQCAtNDI3LDE3
ICs0NzcsMjQgQEAgQ0ZVUkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2Uo
KQogfQogI2VuZGlmCiAKLWJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3Vs
ZENyZWF0ZUZvck1JTUVUeXBlKE5TU3RyaW5nICptaW1lVHlwZSkKIHsKICAgICByZXR1cm4gW1FM
UHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0Om1pbWVUeXBl
XTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxl
OjpjcmVhdGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5k
bGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIE5TVVJMUmVzcG9u
c2UgKm5zVVJMUmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKHNob3VsZENyZWF0ZUZvck1JTUVUeXBl
KHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IGxv
YWRlci5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKSA9PSAmbG9hZGVyOwor
ICAgIGlmICghaXNNYWluUmVzb3VyY2VMb2FkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGFkanVzdE1JTUVUeXBlRm9yUXVpY2tMb29rKG5zVVJMUmVzcG9uc2UuX0NGVVJMUmVzcG9u
c2UpOworCisgICAgaWYgKCFzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShuc1VSTFJlc3BvbnNlLk1J
TUVUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8V2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjombG9hZGVyXSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tM
b29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2xvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS5u
c1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCByZXNwb25zZS5uc1VS
TFJlc3BvbnNlKCksIGRlbGVnYXRlLmdldCgpKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNr
TG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2xvYWRlci5v
cmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwg
bmlsLCBuc1VSTFJlc3BvbnNlLCBkZWxlZ2F0ZS5nZXQoKSkpOwogICAgIFtkZWxlZ2F0ZSBzZXRR
dWlja0xvb2tIYW5kbGU6cXVpY2tMb29rSGFuZGxlLmdldCgpXTsKICAgICBsb2FkZXIuZGlkQ3Jl
YXRlUXVpY2tMb29rSGFuZGxlKCpxdWlja0xvb2tIYW5kbGUpOwogICAgIHJldHVybiBxdWlja0xv
b2tIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5kZXggZDA2OGY5MTdlMmRkYzc3ZTEy
NGI5YTAwMDA0YjRiY2U2MjU3NWYyYS4uNDk3NTRmMjFmZTUyNDhiNTA3ZjcyNDkxODI0NTE3Y2Qy
Y2Q2MzhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtMjgsMjEgKzI4LDYgQEAKIAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKLSNp
bXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgotCi0jaW1wb3J0ICJRdWlja0xvb2suaCIKLSNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgi
Ci0jaW1wb3J0ICJTb2Z0TGlua2luZy5oIgotI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01v
YmlsZUNvcmVTZXJ2aWNlcy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKE1vYmlsZUNvcmVTZXJ2
aWNlcykKLQotU09GVF9MSU5LKE1vYmlsZUNvcmVTZXJ2aWNlcywgVVRUeXBlQ3JlYXRlUHJlZmVy
cmVkSWRlbnRpZmllckZvclRhZywgQ0ZTdHJpbmdSZWYsIChDRlN0cmluZ1JlZiBpblRhZ0NsYXNz
LCBDRlN0cmluZ1JlZiBpblRhZywgQ0ZTdHJpbmdSZWYgaW5Db25mb3JtaW5nVG9VVEkpLCAoaW5U
YWdDbGFzcywgaW5UYWcsIGluQ29uZm9ybWluZ1RvVVRJKSkKLQotU09GVF9MSU5LX0NPTlNUQU5U
KE1vYmlsZUNvcmVTZXJ2aWNlcywga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgQ0ZTdHJp
bmdSZWYpCi0KLSNkZWZpbmUga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiBnZXRrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Mywy
NyArMzgsNiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJl
ZiBjZlJlc3BvbnNlKQogICAgIGlmICghdXBkYXRlZE1JTUVUeXBlKQogICAgICAgICB1cGRhdGVk
TUlNRVR5cGUgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOwogCi0jaWYgVVNF
KFFVSUNLX0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlz
IGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBu
ZWVkZWQuCi0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2Ug
ZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25z
LgotICAgIGlmIChzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRh
dGVkTUlNRVR5cGUuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5h
bWUoY2ZSZXNwb25zZSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9v
a01JTUVUeXBlID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYpUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZv
ckZpbGVOYW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCks
IChOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7Ci0gICAgICAgIGlmICghcXVpY2tMb29rTUlN
RVR5cGUpIHsKLSAgICAgICAgICAgIGF1dG8gdXJsID0gQ0ZVUkxSZXNwb25zZUdldFVSTChjZlJl
c3BvbnNlKTsKLSAgICAgICAgICAgIGlmIChbKE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKLSAg
ICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0Yo
Q0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXh0ZW5z
aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0g
YWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
RmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbi5nZXQoKSwgbnVsbHB0cikpOwotICAgICAgICAg
ICAgICAgICAgICBxdWlja0xvb2tNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUodXRpLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRhdGVkTUlNRVR5cGUg
PSBxdWlja0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCiAg
ICAgaWYgKCFtaW1lVHlwZSB8fCBDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUuZ2V0KCksIHVwZGF0
ZWRNSU1FVHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFy
ZUVxdWFsVG8pCiAgICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCB1
cGRhdGVkTUlNRVR5cGUuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUubW0KaW5kZXggZGMzYmQ4YWI1ZGNhOTZlNzUzM2JiODA4NzhiMzM1Mjc0MThlNDNm
YS4uMGQzNzliM2YxZDA5ODAzMjQzYTdlMDhmYTM4ZGZhZGFhMmM2ODVlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0xNjIsOSArMTYyLDEwIEBAIC0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZl
UmVzcG9uc2U6KE5TVVJMUmVzcG9uCiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAg
IG1faGFuZGxlLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9o
YW5kbGUsIGNvbm5lY3Rpb24sIHIsIHNlbGYpKTsKLSAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9v
a0hhbmRsZSgpKQotICAgICAgICByID0gbV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5uc1Jl
c3BvbnNlKCk7CisgICAgaWYgKGF1dG8gcXVpY2tMb29rSGFuZGxlID0gUXVpY2tMb29rSGFuZGxl
OjpjcmVhdGVJZk5lY2Vzc2FyeShtX2hhbmRsZSwgY29ubmVjdGlvbiwgciwgc2VsZikpIHsKKyAg
ICAgICAgciA9IHF1aWNrTG9va0hhbmRsZS0+bnNSZXNwb25zZSgpOworICAgICAgICBtX2hhbmRs
ZS0+c2V0UXVpY2tMb29rSGFuZGxlKFdURk1vdmUocXVpY2tMb29rSGFuZGxlKSk7CisgICAgfQog
I2VuZGlmCiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKHIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZWIzMmFhMmZlMGZiOTg4NDE0NTFlOWViZjE0OGZmNzE4Y2FmZWVm
Zi4uOWQ1MGU1OThlMDZiMTRhNjJlZDYxMjVhOWY1ZTVhNWVlMzA5YjI4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIC8v
IFJlZnJhaW4gZnJvbSBjYWxsaW5nIGRpZFJlY2VpdmVSZXNwb25zZSBpZiBRdWlja0xvb2sgd2ls
bCBjb252ZXJ0IHRoaXMgcmVzcG9uc2UsIHNpbmNlIHRoZSBNSU1FIHR5cGUgb2YgdGhlCiAgICAg
Ly8gY29udmVydGVkIHJlc291cmNlIGlzbid0IHlldCBrbm93bi4gV2ViUmVzb3VyY2VMb2FkZXJR
dWlja0xvb2tEZWxlZ2F0ZSB3aWxsIGxhdGVyIGNhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlIHVwb24K
ICAgICAvLyByZWNlaXZpbmcgdGhlIGNvbnZlcnRlZCBkYXRhLgotICAgIGJvb2wgaXNNYWluTG9h
ZCA9IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCkg
PT0gbV9jb3JlTG9hZGVyOwotICAgIGlmIChpc01haW5Mb2FkICYmIFF1aWNrTG9va0hhbmRsZTo6
c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAg
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tM
b29rSGFuZGxlOjpjcmVhdGUoKm1fY29yZUxvYWRlciwgcmVzcG9uc2UpKTsKKyAgICBpZiAoYXV0
byBxdWlja0xvb2tIYW5kbGUgPSBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KCpt
X2NvcmVMb2FkZXIsIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkpIHsKKyAgICAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoV1RGTW92ZShxdWlj
a0xvb2tIYW5kbGUpKTsKICAgICAgICAgc2hvdWRDYWxsQ29yZUxvYWRlckRpZFJlY2VpdmVSZXNw
b25zZSA9IGZhbHNlOwogICAgIH0KICNlbmRpZgorCiAgICAgaWYgKHNob3VkQ2FsbENvcmVMb2Fk
ZXJEaWRSZWNlaXZlUmVzcG9uc2UpCiAgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276572</attachid>
            <date>2016-04-16 21:50:16 -0700</date>
            <delta_ts>2016-04-18 10:46:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156639-20160416215032.patch</filename>
            <type>text/plain</type>
            <size>20705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhhOWZlYTQ0MzY2M2Qz
MGQ4YjE1ZDYyZGQ2ZGY2Y2ZmZjM5ZGRkZC4uMTYwNzM0NTA3NTk1NmRhNzgxYTZhNmM4YTdkNjk3
ZTM3MjE3NWY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA0LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9TXSBEbyBub3Qg
ZGxvcGVuKCkgUXVpY2tMb29rIGluIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NjM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRG8gbm90IHVubmVjZXNzYXJpbHkgZGxvcGVu
KCkgUXVpY2tMb29rIGluIHRoZSBOZXR3b3JrUHJvY2VzcyBvbiBpT1MsIGFzCisgICAgICAgIHdl
IGFscmVhZHkgZGxvcGVuKCkgdGhpcyBsaWJyYXJ5IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mu
IFRoaXMgcGF0Y2gKKyAgICAgICAgbW92ZXMgdGhlIHJlc291cmNlIHJlc3BvbnNlIE1JTUUgdHlw
ZSBhZGp1c3RpbmcgY29kZSBmb3IgUXVpY2tMb29rIGZyb20KKyAgICAgICAgYWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeSgpIHRvIGEgbmV3IGFkanVzdE1JTUVUeXBlRm9yUXVpY2tMb29rKCkgZnVu
Y3Rpb24uCisgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoKSBpcyBjYWxsZWQgaW4g
ZGlkUmVjZWl2ZVJlc3BvbnNlKCkgaW4gdGhlIE5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBzaWRl
LCBmb3IgKmV2ZXJ5KiByZXNvdXJjZSByZXNwb25zZSwgZXZlbiB0aG91Z2ggUXVpY2tMb29rIGNh
biBvbmx5CisgICAgICAgIGJlIHVzZWQgdG8gcHJldmlldyBtYWluIHJlc291cmNlcy4gVGhlIG5l
dyBhZGp1c3RNSU1FVHlwZUZvclF1aWNrTG9vaygpCisgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBpbiB0aGUgUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgpIGZhY3RvcnkKKyAg
ICAgICAgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSBjaGVja2luZyB0aGUgTUlNRSB0eXBlIHRvIGRl
dGVybWluZSBpZiB3ZSBuZWVkIHRvCisgICAgICAgIHVzZSBRdWlja0xvb2ssIGFuZCBhZnRlciBj
aGVja2luZyB0aGF0IHRoZSBsb2FkIGlzIGZvciBhIG1haW4gcmVzb3VyY2UuCisgICAgICAgIElu
IHRoZSBXZWJLaXQyIGNhc2UsIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tCisg
ICAgICAgIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKSwgb24gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBzaWRlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BlZWRzIHVwIHRo
ZSBmaXJzdCBwYWdlIGxvYWQgZHVyaW5nIFBMVCBieSB+MjIlLCBiZWNhdXNlIHRoZQorICAgICAg
ICBmaXJzdCBsb2FkIG5vIGxvbmdlciB0cmlnZ2VycyBhIGRsb3BlbigpIHRvIFF1aWNrTG9vayBp
biB0aGUgTmV0d29ya1Byb2Nlc3MuCisgICAgICAgIFRoZSBvdmVyYWxsIFBMVCBzY29yZSBzZWVt
cyB0byBiZSBwcm9ncmVzc2VkIGJ5IDAuOS0xJSBhcyB3ZWxsLiBUaGUgY2hhbmdlCisgICAgICAg
IHNob3VsZCBhbHNvIGJlIG1lbW9yeS1wb3NpdGl2ZSBhcyB3ZSBubyBsb25nZXIgbmVlZCB0byBk
bG9wZW4oKSB0aGUKKyAgICAgICAgUXVpY2tMb29rIGxpYnJhcnkgaW4gdGhlIE5ldHdvcmtQcm9j
ZXNzIGF0IGFsbCAoYW5kIHdlIHdvdWxkIGFscmVhZHkgZGxvcGVuKCkKKyAgICAgICAgaXQgb24g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIGFueXdheSkuIFNhZGx5LCBQTFVNIGJlbmNobWFy
ayBkb2VzIG5vdAorICAgICAgICBzaG93IHRoZSBtZW1vcnkgYmVuZWZpdCBiZWNhdXNlIGl0IGRv
ZXMgbm90IG1lYXN1cmUgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIFJlZmFjdG9yIHRoZSBjb2RlIGEgYml0IGZvciBjbGFyaXR5
LCBzbyB0aGF0IHdlIG9ubHkKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9va0hh
bmRsZSgpIHdoZW4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgpCisgICAgICAg
IHJldHVybnMgYSBub24tbnVsbCBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgIC0gUmVuYW1lIHRoZSBmYWN0b3JpZXMgZnJvbSBj
cmVhdGUoKSB0byBjcmVhdGVJZk5lY2Vzc2FyeSgpIGdpdmVuIHRoYXQgdGhleQorICAgICAgICAg
IHJldHVybiBudWxscHRyIHdoZW4gaXQgaXMgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIHN1Y2ggaGFu
ZGxlIChpLmUuIHRoaXMgaXMgbm90CisgICAgICAgICAgYSBtYWluIHJlc291cmNlIGxvYWRlciwg
b3IgaXQgaXMgdW5lY2Vzc2FyeSBnaXZlbiB0aGUgcmVzcG9uc2UncyBNSU1FIHR5cGUuCisgICAg
ICAgIC0gTWFrZSBzaG91bGRDcmVhdGVGb3JNSU1FVHlwZSgpIHByaXZhdGUgbm93IHRoYXQgdGhp
cyBpcyBhbHdheXMgY2FsbGVkIGluc2lkZQorICAgICAgICAgIHRoZSBmYWN0b3J5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbToKKyAgICAg
ICAgKGFkanVzdE1JTUVUeXBlRm9yUXVpY2tMb29rKToKKyAgICAgICAgRXh0cmFjdGVkIGNvZGUg
Zm9yIGFkanVzdGluZyB0aGUgTUlNRSB0eXBlIGZvciBRdWlja0xvb2sgZnJvbSB0aGUgZ2VuZXJp
YworICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KCkgaW4gV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tIHRvIGl0cyBvd24gZnVuY3Rpb24KKyAgICAgICAgaGVyZS4KKworICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIENh
bGwgYWRqdXN0TUlNRVR5cGVGb3JRdWlja0xvb2soKSBiZWZvcmUgY2hlY2tpbmcgdGhlIE1JTUUg
dHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25z
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgor
ICAgICAgICBFeHRyYWN0ZWQgUXVpY2tMb29rLXNwZWNpZmljIGNvZGUgdG8gUXVpY2tMb29rLm1t
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgUmVmYWN0b3IgdGhl
IGNvZGUgYSBiaXQgZm9yIGNsYXJpdHksIHNvIHRoYXQgd2Ugb25seQorICAgICAgICBSZXNvdXJj
ZUhhbmRsZTo6c2V0UXVpY2tMb29rSGFuZGxlKCkgd2hlbiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0
ZUlmTmVjZXNzYXJ5KCkKKyAgICAgICAgcmV0dXJucyBhIG5vbi1udWxsIHBvaW50ZXIuCisKIDIw
MTYtMDQtMTUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENT
UDogSWdub3JlIHBhdGhzIGluIENTUCBtYXRjaGluZyBhZnRlciByZWRpcmVjdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBiNDM1YTkzZjAwMDkwNzBkYjNhOTY4ODliMmRiNzBiOWJkOWYwOGE2Li44NDNkNGI1Mzdm
NzYyYjlmNjcxMWMxYjliNmVlMDYzN2QwZmY4ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTYtMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbV0syXVtpT1NdIERvIG5vdCBkbG9wZW4oKSBRdWlja0xvb2sgaW4gdGhlIE5ldHdvcmtQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICBNb3ZlIGNoZWNr
cyBmb3IgbWFpbiByZXNvdXJjZSBsb2FkIGFuZCBmb3IgTUlNRSB0eXBlIGluc2lkZSBvZgorICAg
ICAgICBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KCksIGZvciBjb25zaXN0ZW5j
eSB3aXRoIHRoZQorICAgICAgICBvdGhlciBRdWlja0xvb2tIYW5kbGUgZmFjdG9yeSBmdW5jdGlv
bnMuCisKIDIwMTYtMDQtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYXJrIE5ldHdvcmtMb2FkIGFzIEZhc3RBbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cAppbmRleCA5MjY0M2Q5N2M5Nzg0M2M3ZTI2YzQ5ZmFkOTBiMmNlNDcyMGE3YTA4Li5lOTRmMmRl
ZDhjZTgzMDdhOTMzYjZhYjQxMWQ1Yjk4MjJiNjI0ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
CkBAIC0xNjYsOSArMTY2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDCiAjZW5kaWYKIAog
I2lmIFVTRShRVUlDS19MT09LKQotICAgIG1faGFuZGxlLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVp
Y2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRoaXMsIGNmUmVzcG9uc2UpKTsKLSAgICBp
ZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQotICAgICAgICBjZlJlc3BvbnNlID0gbV9o
YW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5jZlJlc3BvbnNlKCk7CisgICAgaWYgKGF1dG8gcXVp
Y2tMb29rSGFuZGxlID0gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGVJZk5lY2Vzc2FyeSgqbV9oYW5k
bGUsIHRoaXMsIGNmUmVzcG9uc2UpKSB7CisgICAgICAgIGNmUmVzcG9uc2UgPSBxdWlja0xvb2tI
YW5kbGUtPmNmUmVzcG9uc2UoKTsKKyAgICAgICAgbV9oYW5kbGUtPnNldFF1aWNrTG9va0hhbmRs
ZShXVEZNb3ZlKHF1aWNrTG9va0hhbmRsZSkpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDQ4MjRkYTAy
NThkY2MxNzRiZGU5YmU3NTc2YTVmY2YyMTZjMDU5Ni4uN2FkZjQ1MDVmNTIxOTgwYzM0MTU5YWI5
M2YwOWM0NjJlMWVhODhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUXVpY2tMb29rLmgKQEAgLTc4LDE0ICs3OCwxMyBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUp
OwogY2xhc3MgUXVpY2tMb29rSGFuZGxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWlj
a0xvb2tIYW5kbGUpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNo
b3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJM
Q29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlSWZOZWNlc3NhcnkoUmVzb3Vy
Y2VIYW5kbGUmLCBOU1VSTENvbm5lY3Rpb24gKiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0
ZSk7CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNr
TG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZUlmTmVjZXNzYXJ5KFJl
c291cmNlSGFuZGxlJiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBVc2Ug
b2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRl
KFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGVJZk5l
Y2Vzc2FyeShSZXNvdXJjZUxvYWRlciYsIE5TVVJMUmVzcG9uc2UgKik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB+UXVpY2tMb29rSGFuZGxlKCk7CiAKQEAgLTEwOCw2ICsxMDcsNyBAQCBwdWJsaWM6
CiAgICAgUUxQcmV2aWV3Q29udmVydGVyICpjb252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnZlcnRlci5nZXQoKTsgfQogCiBwcml2YXRlOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUmLCBOU1VSTENvbm5lY3Rpb24g
KiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7CiAgICAgUXVpY2tMb29rSGFuZGxlKE5T
VVJMICosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsK
IAogICAgIFJldGFpblB0cjxOU1VSTD4gbV9maXJzdFJlcXVlc3RVUkw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KaW5kZXggMTNkMWRkYzNj
YWU5ZWYyMzY3ZjY0MWY0OTA3ZTZlMmE4MWRhNDFhMS4uZDdiMmY0NTRiMDU3ZmViYzM0NDZhMDVm
OTQ5NTJlNTc0MzNiNzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtMzYsMTAgKzM2LDE0IEBACiAjaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgorI2ltcG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBv
cnQgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgor
I2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CkBAIC00OCw2ICs1MiwxNCBAQAogCiAjaW1w
b3J0ICJRdWlja0xvb2tTb2Z0TGluay5oIgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKE1vYmlsZUNv
cmVTZXJ2aWNlcykKKworU09GVF9MSU5LKE1vYmlsZUNvcmVTZXJ2aWNlcywgVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZywgQ0ZTdHJpbmdSZWYsIChDRlN0cmluZ1JlZiBpblRh
Z0NsYXNzLCBDRlN0cmluZ1JlZiBpblRhZywgQ0ZTdHJpbmdSZWYgaW5Db25mb3JtaW5nVG9VVEkp
LCAoaW5UYWdDbGFzcywgaW5UYWcsIGluQ29uZm9ybWluZ1RvVVRJKSkKKworU09GVF9MSU5LX0NP
TlNUQU5UKE1vYmlsZUNvcmVTZXJ2aWNlcywga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwg
Q0ZTdHJpbmdSZWYpCisKKyNkZWZpbmUga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiBnZXRr
VVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKCkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIE5TU2V0ICpXZWJDb3JlOjpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKQpA
QCAtOTYsNiArMTA4LDQzIEBAIHN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTENvbnRlbnRE
aWN0aW9uYXJ5KCkKICAgICByZXR1cm4gY29udGVudERpY3Rpb25hcnk7CiB9CiAKKy8vIFdlIG11
c3QgZW5zdXJlIHRoYXQgdGhlIE1JTUUgdHlwZSBpcyBjb3JyZWN0LCBzbyB0aGF0IFF1aWNrTG9v
aydzIHdlYiBwbHVnaW4gaXMgY2FsbGVkIHdoZW4gbmVlZGVkLgorLy8gV2UgZmlsdGVyIHRoZSBi
YXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBz
dGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25zLgorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYWRqdXN0TUlNRVR5cGVGb3JRdWlja0xvb2soQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
KQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBDRlVSTFJlc3BvbnNl
R2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7CisgICAgaWYgKCFzaG91bGRVc2VRdWlja0xvb2tGb3JN
SU1FVHlwZShtaW1lVHlwZS5nZXQoKSkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZTsKKworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJM
UmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUoY2ZSZXNwb25zZSkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcXVpY2tMb29rTUlNRVR5cGUgPSBhZG9wdENGKChDRlN0cmluZ1JlZilR
TFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yRmlsZU5hbWVBbmRNaW1lVHlwZSgoTlNTdHJpbmcgKilz
dWdnZXN0ZWRGaWxlbmFtZS5nZXQoKSwgKE5TU3RyaW5nICopbWltZVR5cGUuZ2V0KCkpKTsKKyAg
ICBpZiAoIXF1aWNrTG9va01JTUVUeXBlKSB7CisgICAgICAgIGF1dG8gdXJsID0gQ0ZVUkxSZXNw
b25zZUdldFVSTChjZlJlc3BvbnNlKTsKKyAgICAgICAgaWYgKCFbKE5TVVJMICopdXJsIGlzRmls
ZVVSTF0pCisgICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHVy
bCkpOworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIHJldHVybiBtaW1lVHlw
ZTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lv
biwgZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7CisgICAgICAgIHF1aWNrTG9va01JTUVUeXBl
ID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOworICAgICAgICBpZiAoIXF1aWNrTG9v
a01JTUVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgIH0KKworICAgIGlm
ICghbWltZVR5cGUgfHwgQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLmdldCgpLCBxdWlja0xvb2tN
SU1FVHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFyZUVx
dWFsVG8pIHsKKyAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHF1
aWNrTG9va01JTUVUeXBlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHF1aWNrTG9va01JTUVUeXBl
OworICAgIH0KKworICAgIHJldHVybiBtaW1lVHlwZTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxk
Q3JlYXRlRm9yUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQoreworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZGp1c3RNSU1FVHlwZUZvclF1aWNrTG9v
ayhjZlJlc3BvbnNlKTsKKyAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBl
c1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpXTsKK30KKwog
dm9pZCBXZWJDb3JlOjphZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChOU1VSTCAq
dXJsLCBpZCBjb252ZXJ0ZXIsIE5TU3RyaW5nICpmaWxlTmFtZSkKIHsKICAgICBBU1NFUlQodXJs
KTsKQEAgLTM5NiwyOSArNDQ1LDM1IEBAIFF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFuZGxl
KE5TVVJMICpmaXJzdFJlcXVlc3RVUkwsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjCiAgICAgTE9H
KE5ldHdvcmssICJRdWlja0xvb2tIYW5kbGU6OlF1aWNrTG9va0hhbmRsZSgpIC0gcHJldmlld0Zp
bGVOYW1lOiAlcyIsIFttX2NvbnZlcnRlciBwcmV2aWV3RmlsZU5hbWVdKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOU1VSTFJlc3Bv
bnNlICpuc1Jlc3BvbnNlLCBpZCBkZWxlZ2F0ZSkKK3N0YXRpYyBib29sIHNob3VsZENyZWF0ZShS
ZXNvdXJjZUhhbmRsZSYgaGFuZGxlLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewotICAg
IEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFb
UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6W25zUmVz
cG9uc2UgTUlNRVR5cGVdXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGhh
bmRsZS5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVl
c3Rlcjo6TWFpbiAmJiBzaG91bGRDcmVhdGVGb3JSZXNwb25zZShyZXNwb25zZSk7Cit9CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1
aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSkgVVJMXSwgY29ubmVjdGlvbiwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsK
LSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9v
a0hhbmRsZSk7CitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5k
bGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSYgaGFuZGxlLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5l
Y3Rpb24sIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBpZCBkZWxlZ2F0ZSkKK3sKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9v
a0hhbmRsZShbaGFuZGxlLmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhU
VFBCb2R5KSBVUkxdLCBjb25uZWN0aW9uLCByZXNwb25zZSwgZGVsZWdhdGUpKTsKKyAgICBoYW5k
bGUuY2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsK
ICAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KFJlc291cmNlSGFu
ZGxlJiBoYW5kbGUsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIGlkIGRlbGVnYXRlKQoreworICAgIGlmICghc2hvdWxkQ3JlYXRlKGhhbmRsZSwg
cmVzcG9uc2UuX0NGVVJMUmVzcG9uc2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBjcmVhdGUoaGFuZGxlLCBjb25uZWN0aW9uLCByZXNwb25zZSwgZGVsZWdhdGUpOwor
fQorCiAjaWYgVVNFKENGTkVUV09SSykKLXN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+
IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVn
YXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KFJlc291cmNlSGFu
ZGxlJiBoYW5kbGUsIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZSogY29ubmVjdGlvbkRlbGVnYXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiB7
Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkucmVxdWVzdGVyKCkgIT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4g
fHwgIVtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDoo
TlNTdHJpbmcgKilDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKQorICAgIGlm
ICghc2hvdWxkQ3JlYXRlKGhhbmRsZSwgY2ZSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9y
ZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOworICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZS
ZXNwb25zZV07CiAgICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBb
W1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb25E
ZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRs
ZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1
cm4gcXVpY2tMb29rSGFuZGxlOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLCBuaWwsIHJlc3Bv
bnNlLCBkZWxlZ2F0ZSk7CiB9CiAKIENGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxlOjpj
ZlJlc3BvbnNlKCkKQEAgLTQyNywxNyArNDgyLDE3IEBAIENGVVJMUmVzcG9uc2VSZWYgUXVpY2tM
b29rSGFuZGxlOjpjZlJlc3BvbnNlKCkKIH0KICNlbmRpZgogCi1ib29sIFF1aWNrTG9va0hhbmRs
ZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlSWZOZWNl
c3NhcnkoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiB7
Ci0gICAgcmV0dXJuIFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWlu
c09iamVjdDptaW1lVHlwZV07Ci19CisgICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQgPSBsb2Fk
ZXIuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCkgPT0gJmxvYWRlcjsKKyAg
ICBpZiAoIWlzTWFpblJlc291cmNlTG9hZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLXN0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ewotICAgIEFTU0VSVChzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgp
KSk7CisgICAgaWYgKCFzaG91bGRDcmVhdGVGb3JSZXNwb25zZShyZXNwb25zZS5fQ0ZVUkxSZXNw
b25zZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPFdlYlJlc291
cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1dlYlJlc291
cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
JmxvYWRlcl0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9v
a0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtsb2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgcmVzcG9uc2UubnNVUkxS
ZXNwb25zZSgpLCBkZWxlZ2F0ZS5nZXQoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtsb2FkZXIub3Jp
Z2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5p
bCwgcmVzcG9uc2UsIGRlbGVnYXRlLmdldCgpKSk7CiAgICAgW2RlbGVnYXRlIHNldFF1aWNrTG9v
a0hhbmRsZTpxdWlja0xvb2tIYW5kbGUuZ2V0KCldOwogICAgIGxvYWRlci5kaWRDcmVhdGVRdWlj
a0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7CiAgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCBkMDY4ZjkxN2UyZGRjNzdlMTI0YjlhMDAw
MDRiNGJjZTYyNTc1ZjJhLi40OTc1NGYyMWZlNTI0OGI1MDdmNzI0OTE4MjQ1MTdjZDJjZDYzOGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3Jl
VVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0yOCwyMSArMjgsNiBAQAogCiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgotI2ltcG9ydCAi
VVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0KLSNp
bXBvcnQgIlF1aWNrTG9vay5oIgotI2ltcG9ydCAiUXVpY2tMb29rU29mdExpbmsuaCIKLSNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29y
ZVNlcnZpY2VzLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoTW9iaWxlQ29yZVNlcnZpY2VzKQot
Ci1TT0ZUX0xJTksoTW9iaWxlQ29yZVNlcnZpY2VzLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnLCBDRlN0cmluZ1JlZiwgKENGU3RyaW5nUmVmIGluVGFnQ2xhc3MsIENGU3Ry
aW5nUmVmIGluVGFnLCBDRlN0cmluZ1JlZiBpbkNvbmZvcm1pbmdUb1VUSSksIChpblRhZ0NsYXNz
LCBpblRhZywgaW5Db25mb3JtaW5nVG9VVEkpKQotCi1TT0ZUX0xJTktfQ09OU1RBTlQoTW9iaWxl
Q29yZVNlcnZpY2VzLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBDRlN0cmluZ1JlZikK
LQotI2RlZmluZSBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uIGdldGtVVFRhZ0NsYXNzRmls
ZW5hbWVFeHRlbnNpb24oKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDI3ICszOCw2
IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UpCiAgICAgaWYgKCF1cGRhdGVkTUlNRVR5cGUpCiAgICAgICAgIHVwZGF0ZWRNSU1FVHlw
ZSA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKLSNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBNSU1FIHR5cGUgaXMgY29ycmVj
dCwgc28gdGhhdCBRdWlja0xvb2sncyB3ZWIgcGx1Z2luIGlzIGNhbGxlZCB3aGVuIG5lZWRlZC4K
LSAgICAvLyBXZSBmaWx0ZXIgdGhlIGJhc2ljIE1JTUUgdHlwZXMgc28gdGhhdCB3ZSBkb24ndCBk
byB1bm5lY2Vzc2FyeSB3b3JrIGluIHN0YW5kYXJkIGJyb3dzaW5nIHNpdHVhdGlvbnMuCi0gICAg
aWYgKHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKChOU1N0cmluZyAqKXVwZGF0ZWRNSU1F
VHlwZS5nZXQoKSkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdWdnZXN0ZWRG
aWxlbmFtZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShjZlJl
c3BvbnNlKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcXVpY2tMb29rTUlNRVR5
cGUgPSBhZG9wdENGKChDRlN0cmluZ1JlZilRTFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yRmlsZU5h
bWVBbmRNaW1lVHlwZSgoTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKSwgKE5TU3Ry
aW5nICopbWltZVR5cGUuZ2V0KCkpKTsKLSAgICAgICAgaWYgKCFxdWlja0xvb2tNSU1FVHlwZSkg
ewotICAgICAgICAgICAgYXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2Up
OwotICAgICAgICAgICAgaWYgKFsoTlNVUkwgKil1cmwgaXNGaWxlVVJMXSkgewotICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENv
cHlQYXRoRXh0ZW5zaW9uKHVybCkpOwotICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsK
LSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENG
KFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFt
ZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHF1aWNrTG9va01JTUVUeXBlID0gbWltZVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChxdWlja0xvb2tNSU1FVHlwZSkKLSAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9IHF1aWNr
TG9va01JTUVUeXBlOwotICAgIH0KLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAo
IW1pbWVUeXBlIHx8IENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZS5nZXQoKSwgdXBkYXRlZE1JTUVU
eXBlLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxU
bykKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHVwZGF0ZWRN
SU1FVHlwZS5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQppbmRleCBkYzNiZDhhYjVkY2E5NmU3NTMzYmI4MDg3OGIzMzUyNzQxOGU0M2ZhLi45NWNm
OTBjOTI5MjQ3ZDI0NTc1NDRjN2NiOTY2YzdiZmVmNDFkNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KQEAgLTE2Miw5ICsxNjIsMTAgQEAgLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNwb25z
ZTooTlNVUkxSZXNwb24KICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgbV9oYW5k
bGUtPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwg
Y29ubmVjdGlvbiwgciwgc2VsZikpOwotICAgIGlmIChtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxl
KCkpCi0gICAgICAgIHIgPSBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPm5zUmVzcG9uc2Uo
KTsKKyAgICBpZiAoYXV0byBxdWlja0xvb2tIYW5kbGUgPSBRdWlja0xvb2tIYW5kbGU6OmNyZWF0
ZUlmTmVjZXNzYXJ5KCptX2hhbmRsZSwgY29ubmVjdGlvbiwgciwgc2VsZikpIHsKKyAgICAgICAg
ciA9IHF1aWNrTG9va0hhbmRsZS0+bnNSZXNwb25zZSgpOworICAgICAgICBtX2hhbmRsZS0+c2V0
UXVpY2tMb29rSGFuZGxlKFdURk1vdmUocXVpY2tMb29rSGFuZGxlKSk7CisgICAgfQogI2VuZGlm
CiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggZWIzMmFhMmZlMGZiOTg4NDE0NTFlOWViZjE0OGZmNzE4Y2FmZWVmZi4uOWQ1
MGU1OThlMDZiMTRhNjJlZDYxMjVhOWY1ZTVhNWVlMzA5YjI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMTQsMTIgKzExNCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIC8vIFJlZnJh
aW4gZnJvbSBjYWxsaW5nIGRpZFJlY2VpdmVSZXNwb25zZSBpZiBRdWlja0xvb2sgd2lsbCBjb252
ZXJ0IHRoaXMgcmVzcG9uc2UsIHNpbmNlIHRoZSBNSU1FIHR5cGUgb2YgdGhlCiAgICAgLy8gY29u
dmVydGVkIHJlc291cmNlIGlzbid0IHlldCBrbm93bi4gV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xv
b2tEZWxlZ2F0ZSB3aWxsIGxhdGVyIGNhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlIHVwb24KICAgICAv
LyByZWNlaXZpbmcgdGhlIGNvbnZlcnRlZCBkYXRhLgotICAgIGJvb2wgaXNNYWluTG9hZCA9IG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCkgPT0gbV9j
b3JlTG9hZGVyOwotICAgIGlmIChpc01haW5Mb2FkICYmIFF1aWNrTG9va0hhbmRsZTo6c2hvdWxk
Q3JlYXRlRm9yTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFu
ZGxlOjpjcmVhdGUoKm1fY29yZUxvYWRlciwgcmVzcG9uc2UpKTsKKyAgICBpZiAoYXV0byBxdWlj
a0xvb2tIYW5kbGUgPSBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZUlmTmVjZXNzYXJ5KCptX2NvcmVM
b2FkZXIsIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkpIHsKKyAgICAgICAgbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoV1RGTW92ZShxdWlja0xvb2tI
YW5kbGUpKTsKICAgICAgICAgc2hvdWRDYWxsQ29yZUxvYWRlckRpZFJlY2VpdmVSZXNwb25zZSA9
IGZhbHNlOwogICAgIH0KICNlbmRpZgorCiAgICAgaWYgKHNob3VkQ2FsbENvcmVMb2FkZXJEaWRS
ZWNlaXZlUmVzcG9uc2UpCiAgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276646</attachid>
            <date>2016-04-18 10:46:40 -0700</date>
            <delta_ts>2016-04-18 11:49:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156639-20160418104657.patch</filename>
            <type>text/plain</type>
            <size>13071</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRmYTNhNTE2ZWI0N2Rj
NGE3NWMzNjEwMmQ5ZWMxOThkODkwMzk0NS4uZDY0MzNmNDRhMDgwMDkyYWY2MzNiMDhjYTA3YzU4
NzYxYjhkZTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE2LTA0LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1baU9TXSBPbmx5IGFk
anVzdCBuZXR3b3JrIHJlc3BvbnNlcycgTUlNRSB0eXBlIGZvciBRdWlja0xvb2sgaW4gdGhlIGNv
bnRleHQgb2YgYSBtYWluIHJlc291cmNlIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjYzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU3
NjU4NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T25seSBhZGp1c3QgbmV0d29yayByZXNwb25zZXMnIE1JTUUgdHlwZSBmb3IgUXVpY2tMb29rIGlu
IHRoZSBjb250ZXh0IG9mIGEgbWFpbgorICAgICAgICByZXNvdXJjZSBsb2FkIHNpbmNlIHdlIGNh
biBvbmx5IHByZXZpZXcgbWFpbiByZXNvdXJjZXMgd2l0aCBRdWlja0xvb2suIFRoaXMKKyAgICAg
ICAgYXZvaWRzIGRvaW5nIHVubmVjZXNzYXJ5IHdvcmsgZHVyaW5nIHBhZ2UgbG9hZC4gQWxzbywg
dGhpcyBtYWtlcyBpdCBhIGxvdCBsZXNzCisgICAgICAgIGxpa2VseSB0byBkbG9wZW4oKSB0aGUg
UXVpY2tMb29rIGxpYnJhcnkgZHVyaW5nIHBhZ2UgbG9hZCBzaW5jZSB3ZSBub3cgb25seQorICAg
ICAgICBhZGp1c3QgTUlNRSB0eXBlIGZvciBRdWlja0xvb2sgZm9yIG1haW4gcmVzb3VyY2VzLCBh
bmQgbWFpbiByZXNvdXJjZXMgdXN1YWxseQorICAgICAgICBoYXZlIHRoZSB3ZWxsLWtub3duICd0
ZXh0L2h0bWwnIE1JTUUgdHlwZSBmb3Igd2hpY2ggd2Uga25vdyB3ZSB3aWxsIG5vdCB1c2UKKyAg
ICAgICAgUXVpY2tMb29rLgorCisgICAgICAgIEFmdGVyIHRoaXMgY2hhbmdlLCB3ZSBubyBsb25n
ZXIgbmVlZCB0byBkbG9wZW4oKSB0aGUgUXVpY2tMb29rIGxpYnJhcnkgaW4gdGhlCisgICAgICAg
IE5ldHdvcmtQcm9jZXNzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBQTFQuIFdlIHdvdWxkIHByZXZp
b3VzbHkgZGxvcGVuKCkgdGhlCisgICAgICAgIGxpYnJhcnkgZHVyaW5nIHRoZSBmaXJzdCBwYWdl
IGxvYWQsIHRodXMgc2lnbmlmaWNhbnRseSBzbG93aW5nIGl0IGRvd24uIEFzIGEKKyAgICAgICAg
cmVzdWx0LCB3ZSBzZWUgYSB+MjIlIHNwZWVkIHVwIGluIHRoZSBQTFQncyBmaXJzdCBwYWdlIGxv
YWQgYW5kIGEgMC45LTElIG92ZXJhbGwKKyAgICAgICAgUExUIHByb2dyZXNzaW9uLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIFBhc3MgZmxhZyB0byBhZGp1c3RNSU1FVHlwZUlmTmVjZXNz
YXJ5KCkgaW5kaWNhdGVkIGlmIHRoaXMgaXMgYSBtYWluIHJlc291cmNlIGxvYWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgT25seSBh
ZGp1c3QgdGhlIE1JTUUgdHlwZSBmb3IgUXVpY2tMb29rIGlmIHRoZSBpc01haW5SZXNvdXJjZUxv
YWQgcGFyYW1ldGVyIGlzIHRydWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0p
OgorICAgICAgICBPbmx5IGFkanVzdCB0aGUgTUlNRSB0eXBlIGZvciBRdWlja0xvb2sgaWYgdGhl
IGlzTWFpblJlc291cmNlTG9hZCBwYXJhbWV0ZXIgaXMgdHJ1ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorCisyMDE2LTA0LTE4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTY0
NC4KIAogICAgICAgICBTZWVtcyB0byBoYXZlIGNhdXNlZCBhIDEtMiUgcmVncmVzc2lvbiBvbiB3
YXJtIFBMVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGMxNmNhMzhkZGQ3ZDRkOTY5Njc4NGU1Yjc3YjZlMThmOGI3
MzNkNTMuLjA0MDY2N2YwYjBmMjdmMTA0NjU1YTVjZTFhMTc2NzY3YjA0NjYwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyMSBAQAogMjAxNi0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIFtXSzJdW2lPU10gT25seSBhZGp1c3QgbmV0d29yayByZXNwb25z
ZXMnIE1JTUUgdHlwZSBmb3IgUXVpY2tMb29rIGluIHRoZSBjb250ZXh0IG9mIGEgbWFpbiByZXNv
dXJjZSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NzY1ODQ4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6Zmlyc3RS
ZXF1ZXN0KToKKyAgICAgICAgQWRkIGdldHRlciB0byByZXR1cm4gdGhlIGZpcnN0IHJlcXVlc3Qu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFz
azpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIFBhc3Mg
ZmxhZyB0byBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KCkgaW5kaWNhdGVkIGlmIHRoaXMgaXMg
YSBtYWluIHJlc291cmNlIGxvYWQuCisKKzIwMTYtMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk5NjQ0Lgog
CiAgICAgICAgIFNlZW1zIHRvIGhhdmUgY2F1c2VkIGEgMS0yJSByZWdyZXNzaW9uIG9uIHdhcm0g
UExUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBiMmJlMWVhNDAzOTIx
ZGJiN2NiZWFiMzU4MDMyM2Y4MjU4Yzc2Y2QxLi45NGQ1ZTk1NDcyY2M0NzVmMmVjZDdiMzM3NWIx
MWQzN2E3ZTY1ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE0
NCw4ICsxNDQsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgYXV0byBtc2cg
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwogICAgICAgICBpbnQg
c3RhdHVzQ29kZSA9IG1zZyA/IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUobXNn
KSA6IDA7CiAKLSAgICAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQotICAgICAgICAgICAgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlKTsKKyAgICAgICAgaWYgKHN0YXR1c0Nv
ZGUgIT0gMzA0KSB7CisgICAgICAgICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVl
c3Rlcjo6TWFpbjsKKyAgICAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNw
b25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKKyAgICAgICAgfQogCiAjaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleSht
X2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkp
LCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5k
ZXggZDA2OGY5MTdlMmRkYzc3ZTEyNGI5YTAwMDA0YjRiY2U2MjU3NWYyYS4uMTRhN2YxOTM0MmU3
ZDlmZDI4YmQ5MGUzYmQ0ZTcwNWRlYzI3OTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpA
QCAtNDYsNyArNDYsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoTW9iaWxlQ29yZVNlcnZpY2VzLCBr
VVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBDRlN0cmluZ1JlZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UpCit2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVz
cG9uc2UpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXBkYXRlZE1JTUVUeXBlID0gbWlt
ZVR5cGU7CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShD
RlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8g
V2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNvcnJlY3QsIHNvIHRoYXQgUXVp
Y2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBuZWVkZWQuCiAgICAgLy8gV2UgZmls
dGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkg
d29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25zLgotICAgIGlmIChzaG91bGRVc2VR
dWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKSB7
CisgICAgaWYgKGlzTWFpblJlc291cmNlTG9hZCAmJiBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1F
VHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKSB7CiAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9u
c2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUoY2ZSZXNwb25zZSkpOwogICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHF1aWNrTG9va01JTUVUeXBlID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYpUUxU
eXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVOYW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICopc3Vn
Z2VzdGVkRmlsZW5hbWUuZ2V0KCksIChOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7CiAgICAg
ICAgIGlmICghcXVpY2tMb29rTUlNRVR5cGUpIHsKQEAgLTczLDYgKzczLDggQEAgdm9pZCBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICAg
ICAgaWYgKHF1aWNrTG9va01JTUVUeXBlKQogICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0g
cXVpY2tMb29rTUlNRVR5cGU7CiAgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNNYWlu
UmVzb3VyY2VMb2FkKTsKICNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoIW1pbWVU
eXBlIHx8IENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZS5nZXQoKSwgdXBkYXRlZE1JTUVUeXBlLmdl
dCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKICAg
ICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHVwZGF0ZWRNSU1FVHlw
ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQppbmRl
eCBkYzNiZDhhYjVkY2E5NmU3NTMzYmI4MDg3OGIzMzUyNzQxOGU0M2ZhLi4yMzdlYTliNGUyNGQy
MmI5OTZmZjRkZTMwYWRhY2YyMDhlYzU5MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW0KQEAgLTE1Myw4ICsxNTMsMTAgQEAgLSAodm9pZCljb25uZWN0aW9u
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxS
ZXNwb24KIAogICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2Ug
Y29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgogICAgIGludCBzdGF0dXNDb2RlID0gW3Ig
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVz
Q29kZV0gOiAwOwotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkKLSAgICAgICAgYWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeShbciBfQ0ZVUkxSZXNwb25zZV0pOworICAgIGlmIChzdGF0dXNDb2Rl
ICE9IDMwNCkgeworICAgICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6
TWFpbjsKKyAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShbciBfQ0ZVUkxSZXNwb25z
ZV0sIGlzTWFpblJlc291cmNlTG9hZCk7CisgICAgfQogCiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICBpZiAoW21faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVI
VFRQQm9keSkgX3Byb3BlcnR5Rm9yS2V5OkAiRm9yY2VIVE1MTUlNRVR5cGUiXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQppbmRleCAzNmQ0NzBiMzkxYjY0ZWVmN2VjOWNkZTUyZjAwMWNlOWViODk3YjA2Li44M2Fk
NTg2ZmQzMTliZmE2NGY1MDg0NDY3NzRjMDUzODBiYmJhODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBA
IC0yMDMsOCArMjAzLDEwIEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uCiAKICAgICAgICAgLy8g
QXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMw
NCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIGludCBzdGF0dXNDb2RlID0gW3IgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAwOwot
ICAgICAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCi0gICAgICAgICAgICBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KFtyIF9DRlVSTFJlc3BvbnNlXSk7CisgICAgICAgIGlmIChzdGF0dXNDb2Rl
ICE9IDMwNCkgeworICAgICAgICAgICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQgPSBtX2hhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0
ZXI6Ok1haW47CisgICAgICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KFtyIF9DRlVS
TFJlc3BvbnNlXSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlm
IChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBC
b2R5KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlwZSJdKQogICAgICAgICAgICAg
W3IgX3NldE1JTUVUeXBlOkAidGV4dC9odG1sIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCmluZGV4IGEzMjJl
ZDRhODFjNDQ4N2U0YTg4Yjg2MGNhMDA1MjE2ZDY0OTk3ZWMuLmM5MzFhMmJkMDVjYzI0Yjk0ODNh
MTM3ZGE1YjAzYWZlMGNkNGY3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCkBAIC00Myw1ICs0Myw1IEBA
IFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNl
SWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0CiAjZW5kaWYgLy8gX19PQkpDX18KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KENGVVJMUmVzcG9uc2VSZWYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVV
UkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVVUkxSZXNwb25zZS5tbQppbmRleCA1ZTNkYjcwMzJkYzc5ZWRiNTFkOTZlYmFjMzQ1OGQyMmE2
MDNmMzMyLi40YzY0OTFlNTNmZjA1MGI4MGM5ZGE0NTk0ZmRiYTZhMjU0ZTQ3MTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tCkBAIC0yODYsOCArMjg2LDkgQEAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBj
cmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lk
KiopJnZhbHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwog
fQogCi12b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJl
c3BvbnNlKQordm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGlzTWFpblJlc291cmNlTG9hZCk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQg
PSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBvcmlnaW5hbFJlc3VsdCA9IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCA2ODk2ZWZmZmJhMzZjYzFj
YjYxODhlNTExMTk1ZjhkNDIxOWIzOWYwLi4wYTc4YWRhNmZiOWQ4YzkzMDk1N2I3ZmFjOGNiYzBj
NmFiZTM0YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaApAQCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYpOwogICAgIGNvbnN0IFN0cmluZyYgcGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oKSB7IHJldHVybiBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOyB9CiAKKyAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RSZXF1ZXN0OyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRS
ZXF1ZXN0KCk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZTU1ZGExODRjNWU1NWU1ZGYzYTZiMmI3YzU1YzhjMTA0
ZDBlMzE4MC4uMGZkZWUwMThkMTZlMzQyMWJhNjFmMWViNmUzNTQ0OTkwMmU2N2U5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCkBAIC0yMDYsOSArMjA2LDExIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilk
YXRhCiAgICAgICAgIAogICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhl
IHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0
YXR1c0NvZGUgPSBbcmVzcG9uc2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXND
b2RlKV0gPyBbKGlkKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKLSAgICAgICAgaWYgKHN0YXR1
c0NvZGUgIT0gMzA0KQotICAgICAgICAgICAgV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeShyZXNwb25zZS5fQ0ZVUkxSZXNwb25zZSk7Ci0gICAgICAgIAorICAgICAgICBpZiAoc3Rh
dHVzQ29kZSAhPSAzMDQpIHsKKyAgICAgICAgICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0g
bmV0d29ya0RhdGFUYXNrLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICAgICAgICAgIFdlYkNvcmU6OmFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkocmVzcG9uc2UuX0NGVVJMUmVzcG9uc2UsIGlzTWFpblJl
c291cmNlTG9hZCk7CisgICAgICAgIH0KKwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgICAgICBjb3B5VGltaW5nRGF0YShb
ZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNv
bXBsZXRpb25IYW5kbGVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>