<?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>21242</bug_id>
          
          <creation_ts>2008-09-30 08:19:16 -0700</creation_ts>
          <short_desc>[CURL] Should handle redirects in WebCore</short_desc>
          <delta_ts>2017-10-02 12:01:00 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://software.hixie.ch/utilities/cgi/data/data</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Curl, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175148</dependson>
          <blocked>117300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex.christensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>davidsz</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>galpeter</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93374</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-09-30 08:19:16 -0700</bug_when>
    <thetext>CURL&apos;s ResourceHandleManager currently sets:

curl_easy_setopt(d-&gt;m_handle, CURLOPT_FOLLOWLOCATION, 1);

This means that HTTP redirects are handled behind the scenes by CURL. This incorrectly bypasses WebCore functionality and makes it difficult to fire the right signals and policy events at the right time. Moreover, it also bypasses WebCore&apos;s resources and data URL parsing capabilities.

http://software.hixie.ch/utilities/cgi/data/data is an example of a page that redirects to a data URL that&apos;s currently not working.

Patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111601</commentid>
    <comment_count>1</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-27 20:04:19 -0800</bug_when>
    <thetext>Removing the Gtk keyword, since GTK+ doesn&apos;t use curl anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928391</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-12 11:05:54 -0700</bug_when>
    <thetext>Too bad that patch never got added!  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928743</commentid>
    <comment_count>3</comment_count>
    <who name="Szabolcs David">davidsz</who>
    <bug_when>2013-09-13 03:26:00 -0700</bug_when>
    <thetext>We are currently working on it. : ) I already have a working implementation, so patch is coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928749</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-13 03:38:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; We are currently working on it. : ) I already have a working implementation, so patch is coming soon.

Great, this bug should be assigned to you in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971557</commentid>
    <comment_count>5</comment_count>
      <attachid>222089</attachid>
    <who name="Szabolcs David">davidsz</who>
    <bug_when>2014-01-24 02:21:38 -0800</bug_when>
    <thetext>Created attachment 222089
First draft

Sorry for the delay. I have worked on this, but I have been moved to another project and I won&apos;t have time work on this anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973786</commentid>
    <comment_count>6</comment_count>
      <attachid>222089</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 10:05:11 -0800</bug_when>
    <thetext>Comment on attachment 222089
First draft

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

This seems fine to me, but someone using the Curl backend more frequently should confirm it doesn&apos;t cause any problems.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:404
&gt; +    String location = d-&gt;m_response.httpHeaderField(&quot;location&quot;);

This could probably be a const String&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973787</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 10:05:33 -0800</bug_when>
    <thetext>+peavo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973950</commentid>
    <comment_count>8</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-01-30 13:16:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; +peavo

Will give it a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974323</commentid>
    <comment_count>9</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-01-31 09:25:42 -0800</bug_when>
    <thetext>On Windows, I seem to be having some problems logging into hotmail with this patch.
There seems to be a redirect, but after that nothing happens, and the displayed page is empty, not sure why, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974335</commentid>
    <comment_count>10</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-01-31 09:51:30 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; On Windows, I seem to be having some problems logging into hotmail with this patch.
&gt; There seems to be a redirect, but after that nothing happens, and the displayed page is empty, not sure why, though.

I&apos;m sorry, disregard my last comment. This behavior is exactly the same without the patch, so it must be caused by other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058213</commentid>
    <comment_count>11</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-12-30 14:44:15 -0800</bug_when>
    <thetext>Should we commit this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059062</commentid>
    <comment_count>12</comment_count>
    <who name="">peavo</who>
    <bug_when>2015-01-06 11:03:40 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Should we commit this one?

I&apos;ve been running with this patch, and have had some crashes in the network backend because the ResourceHandleClient has been used after deletion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330455</commentid>
    <comment_count>13</comment_count>
      <attachid>222089</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-07-19 11:54:04 -0700</bug_when>
    <thetext>Comment on attachment 222089
First draft

It contains different patchs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330456</commentid>
    <comment_count>14</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-07-19 11:55:40 -0700</bug_when>
    <thetext>We&apos;ve start working on this issue again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354732</commentid>
    <comment_count>15</comment_count>
      <attachid>322244</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-29 15:17:17 -0700</bug_when>
    <thetext>Created attachment 322244
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354735</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-29 15:19:37 -0700</bug_when>
    <thetext>Attachment 322244 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354741</commentid>
    <comment_count>17</comment_count>
      <attachid>322246</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-29 15:34:08 -0700</bug_when>
    <thetext>Created attachment 322246
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354758</commentid>
    <comment_count>18</comment_count>
      <attachid>322246</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-29 16:07:11 -0700</bug_when>
    <thetext>Comment on attachment 322246
patch

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

&gt; Source/WebCore/platform/network/ResourceHandle.cpp:173
&gt; +#if !PLATFORM(COCOA) &amp;&amp; !USE(CFURLCONNECTION) &amp;&amp; !USE(SOUP) &amp;&amp; !USE(CURL)

That&apos;s everyone.  Let&apos;s just get rid of this.

&gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp:281
&gt; +    if ((request.httpMethod() == &quot;GET&quot;) || (request.httpMethod() == &quot;HEAD&quot;))

unnecessary parentheses.

&gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp:371
&gt; +    if (protocolHostAndPortAreEqual(m_currentRequest.url(), response().url())) {
&gt; +        auto credential = getCredential(m_currentRequest, true);

This is probably ok, but will likely need to be refined.  It ignores the realm of basic authentication credentials, for example.

&gt; Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp:154
&gt; +    return (httpStatusCode() == 301);

parentheses unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354771</commentid>
    <comment_count>19</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-29 16:44:47 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp:371
&gt; &gt; +    if (protocolHostAndPortAreEqual(m_currentRequest.url(), response().url())) {
&gt; &gt; +        auto credential = getCredential(m_currentRequest, true);
&gt; 
&gt; This is probably ok, but will likely need to be refined.  It ignores the
&gt; realm of basic authentication credentials, for example.

Oh, okay. To think about realm, this place is too late for that check. Also actually the comparison of (protocol, host, port) sets was made in willSendRequest already.

We&apos;ll discuss this one again. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355310</commentid>
    <comment_count>20</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-10-02 10:52:28 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #18)
&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp:371
&gt; &gt; +    if (protocolHostAndPortAreEqual(m_currentRequest.url(), response().url())) {
&gt; &gt; +        auto credential = getCredential(m_currentRequest, true);
&gt; 
&gt; This is probably ok, but will likely need to be refined.  It ignores the
&gt; realm of basic authentication credentials, for example.

Alex, I lost the point you mentioned. What is your point? We cannot compare to any realm at this point because we&apos;re about to send a new request. Authentication info will be added  only if getCredential() returns valid information and that&apos;s when the url matches previous url who resulted with credential.

Of course, getCredential() can be more clear if it returns std::optional&lt;std::pair&lt;String, String&gt;&gt;. Is that what you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355314</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-02 10:54:49 -0700</bug_when>
    <thetext>Ah, I think you&apos;re right.  returning an optional would be a little more clear, but I guess that&apos;s not critical to have in this same patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355322</commentid>
    <comment_count>22</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-10-02 11:00:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #21)
&gt; Ah, I think you&apos;re right.  returning an optional would be a little more
&gt; clear, but I guess that&apos;s not critical to have in this same patch.

Okay. Can you give cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355360</commentid>
    <comment_count>23</comment_count>
      <attachid>322246</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-02 11:43:18 -0700</bug_when>
    <thetext>Comment on attachment 322246
patch

Sure, remove extra parentheses soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355372</commentid>
    <comment_count>24</comment_count>
      <attachid>322246</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 12:00:20 -0700</bug_when>
    <thetext>Comment on attachment 322246
patch

Clearing flags on attachment: 322246

Committed r222728: &lt;http://trac.webkit.org/changeset/222728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355373</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 12:00:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355374</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-02 12:01:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/34772610&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222089</attachid>
            <date>2014-01-24 02:21:38 -0800</date>
            <delta_ts>2017-07-19 11:54:04 -0700</delta_ts>
            <desc>First draft</desc>
            <filename>redir.diff</filename>
            <type>text/plain</type>
            <size>7992</size>
            <attacher name="Szabolcs David">davidsz</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZGRiZDc4Zi4uMTc4YzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE0LTAxLTI0ICBTemFib2xjcyBEYXZpZCAgPGRhdmlkc3pAaW5mLnUtc3plZ2VkLmh1
PgorCisgICAgICAgIFtjdXJsXSBIYW5kbGluZyBIVFRQIHJlZGlyZWN0aW9ucyBpbiBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBIVFRQ
IHJlZGlyZWN0cyBhcmUgaGFuZGxlZCBiZWhpbmQgdGhlIHNjZW5lcyBieSBDVVJMLiBUaGlzIGlu
Y29ycmVjdGx5CisgICAgICAgIGJ5cGFzc2VzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgbWFr
ZXMgaXQgZGlmZmljdWx0IHRvIGZpcmUgdGhlIHJpZ2h0CisgICAgICAgIHNpZ25hbHMgYW5kIHBv
bGljeSBldmVudHMgYXQgdGhlIHJpZ2h0IHRpbWUuIE1vcmVvdmVyLCBpdCBhbHNvIGJ5cGFzc2Vz
CisgICAgICAgIFdlYkNvcmUncyByZXNvdXJjZXMgYW5kIGRhdGEgVVJMIHBhcnNpbmcgY2FwYWJp
bGl0aWVzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJj
ZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFJlZGlyZWN0QXNH
RVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9SZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpo
ZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUpOgorCiAyMDE0LTAxLTI0ICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3ZlIEhpc3RvcnlJdGVtIHRvIHN0
ZDo6dW5pcXVlX3B0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA3ZGM0M2UyLi5hYTZlNDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaApAQCAtMTAwLDggKzEwMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAsIG1faGFuZGxlKDApCiAgICAgICAgICAgICAsIG1fdXJsKDApCiAgICAgICAg
ICAgICAsIG1fY3VzdG9tSGVhZGVycygwKQorICAgICAgICAgICAgLCBtX3Nob3VsZFJlZGlyZWN0
KGZhbHNlKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwg
bV9hdXRoRmFpbHVyZUNvdW50KDApCisgICAgICAgICAgICAsIG1fcmVkaXJlY3RDb3VudCgwKQog
ICAgICAgICAgICAgLCBtX2Zvcm1EYXRhU3RyZWFtKGxvYWRlcikKICAgICAgICAgICAgICwgbV9z
c2xFcnJvcnMoMCkKICNlbmRpZgpAQCAtMTc4LDggKzE4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGNoYXIqIG1fdXJsOwogICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogbV9j
dXN0b21IZWFkZXJzOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CisgICAg
ICAgIGJvb2wgbV9zaG91bGRSZWRpcmVjdDsKICAgICAgICAgYm9vbCBtX2NhbmNlbGxlZDsKICAg
ICAgICAgdW5zaWduZWQgc2hvcnQgbV9hdXRoRmFpbHVyZUNvdW50OworICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBtX3JlZGlyZWN0Q291bnQ7CiAKICAgICAgICAgRm9ybURhdGFTdHJlYW0gbV9mb3Jt
RGF0YVN0cmVhbTsKICAgICAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuY3BwCmluZGV4IDEzMjZkZGYuLjAxMzJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCkBAIC03Miw2ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGlu
dCBzZWxlY3RUaW1lb3V0TVMgPSA1OwogY29uc3QgZG91YmxlIHBvbGxUaW1lU2Vjb25kcyA9IDAu
MDU7CiBjb25zdCBpbnQgbWF4UnVubmluZ0pvYnMgPSA1OworY29uc3QgaW50IG1heFJlZGlyZWN0
cyA9IDEwOwogCiBzdGF0aWMgY29uc3QgYm9vbCBpZ25vcmVTU0xFcnJvcnMgPSBnZXRlbnYoIldF
QktJVF9JR05PUkVfU1NMX0VSUk9SUyIpOwogCkBAIC0zNzQsNiArMzc1LDc3IEBAIHN0YXRpYyBi
b29sIGdldFByb3RlY3Rpb25TcGFjZShDVVJMKiBoLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUHJvdGVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIHNob3Vs
ZFJlZGlyZWN0QXNHRVQoY29uc3QgU3RyaW5nJiBtZXRob2QsIGludCBodHRwQ29kZSwgYm9vbCBj
cm9zc09yaWdpbikKK3sKKyAgICBpZiAobWV0aG9kID09ICJHRVQiIHx8IG1ldGhvZCA9PSAiSEVB
RCIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoaHR0cENvZGUpIHsKKyAg
ICBjYXNlIDMwMzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSAzMDI6CisgICAgY2Fz
ZSAzMDE6CisgICAgICAgIGlmIChtZXRob2QgPT0gIlBPU1QiKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChjcm9zc09yaWdpbiAmJiBt
ZXRob2QgPT0gIkRFTEVURSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBqb2IpCit7
CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAg
ICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gZC0+Y2xpZW50KCk7CisKKyAgICBTdHJp
bmcgbG9jYXRpb24gPSBkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgibG9jYXRpb24iKTsK
KyAgICBpZiAobG9jYXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXNv
dXJjZVJlcXVlc3QgcmVkaXJlY3RlZFJlcXVlc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpOworCisg
ICAgVVJMIG5ld1VSTCA9IFVSTChyZWRpcmVjdGVkUmVxdWVzdC51cmwoKSwgbG9jYXRpb24pOwor
ICAgIHJlZGlyZWN0ZWRSZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgIHJlZGlyZWN0ZWRSZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1VSTCk7CisKKyAgICBpZiAoZC0+bV9yZWRp
cmVjdENvdW50ID49IG1heFJlZGlyZWN0cykgeworICAgICAgICBjbGllbnQtPmRpZEZhaWwoam9i
LCBSZXNvdXJjZUVycm9yKG5ld1VSTCwgQ1VSTEVfVE9PX01BTllfUkVESVJFQ1RTLCBuZXdVUkws
IFN0cmluZygiVG9vIG1hbnkgcmVkaXJlY3RzIikpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxvbmcgaHR0cENvZGUgPSAwOworICAgIGN1cmxfZWFzeV9nZXRpbmZvKGQtPm1faGFu
ZGxlLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmaHR0cENvZGUpOworICAgIGJvb2wgY3Jvc3NP
cmlnaW4gPSAhcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCksIG5ld1VSTCk7CisgICAgU3RyaW5nIG1ldGhvZCA9IHJlZGlyZWN0ZWRSZXF1ZXN0Lmh0
dHBNZXRob2QoKTsKKworICAgIGlmIChzaG91bGRSZWRpcmVjdEFzR0VUKG1ldGhvZCwgaHR0cENv
ZGUsIGNyb3NzT3JpZ2luKSkgeworICAgICAgICByZWRpcmVjdGVkUmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiKTsKKyAgICAgICAgcmVkaXJlY3RlZFJlcXVlc3Quc2V0SFRUUEJvZHkoMCk7Cisg
ICAgICAgIHJlZGlyZWN0ZWRSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CisgICAgfQor
CisgICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZyb20gYSBz
ZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCisgICAgaWYgKCFuZXdVUkwucHJvdG9j
b2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKHJlZGlyZWN0ZWRSZXF1ZXN0Lmh0dHBSZWZlcnJl
cigpLCAiaHR0cHMiKSAmJiBqb2ItPmNvbnRleHQoKS0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCgpKQorICAgICAgICByZWRpcmVjdGVkUmVxdWVzdC5jbGVhckhUVFBS
ZWZlcnJlcigpOworICAgIGVsc2UKKyAgICAgICAgcmVkaXJlY3RlZFJlcXVlc3Quc2V0SFRUUFJl
ZmVycmVyKGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CisgICAgaWYgKGNyb3NzT3JpZ2luKSB7CisgICAgICAgIC8vIElmIHRoZSBuZXR3b3JrIGxheWVy
IGNhcnJpZXMgb3ZlciBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIGZyb20gdGhlIG9yaWdpbmFsIHJl
cXVlc3QKKyAgICAgICAgLy8gaW4gYSBjcm9zcy1vcmlnaW4gcmVkaXJlY3QsIHdlIHdhbnQgdG8g
Y2xlYXIgdGhvc2UgaGVhZGVycyBoZXJlLgorICAgICAgICByZWRpcmVjdGVkUmVxdWVzdC5jbGVh
ckhUVFBBdXRob3JpemF0aW9uKCk7CisgICAgfQorCisgICAgaWYgKGNsaWVudCkgeworICAgICAg
ICBjbGllbnQtPndpbGxTZW5kUmVxdWVzdChqb2IsIHJlZGlyZWN0ZWRSZXF1ZXN0LCBkLT5tX3Jl
c3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBuZXdKb2IgPSBSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlKGQtPm1fY29udGV4dC5nZXQoKSwgcmVkaXJlY3RlZFJlcXVlc3QsIGNs
aWVudCwgZC0+bV9kZWZlcnNMb2FkaW5nLCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZik7CisgICAg
ICAgIG5ld0pvYi0+Z2V0SW50ZXJuYWwoKS0+bV9yZWRpcmVjdENvdW50ID0gZC0+bV9yZWRpcmVj
dENvdW50ICsgMTsKKyAgICB9Cit9CisKIC8qCiAgKiBUaGlzIGlzIGJlaW5nIGNhbGxlZCBmb3Ig
ZWFjaCBIVFRQIGhlYWRlciBpbiB0aGUgcmVzcG9uc2UuIFRoaXMgaW5jbHVkZXMgJ1xyXG4nCiAg
KiBmb3IgdGhlIGxhc3QgbGluZSBvZiB0aGUgaGVhZGVyLgpAQCAtNDM5LDE5ICs1MTEsOSBAQCBz
dGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNoYXIqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVf
dCBubWVtYiwgdm9pZCogZGF0YSkKIAogICAgICAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAgICAg
ICAgIGlmIChpc0h0dHBSZWRpcmVjdChodHRwQ29kZSkpIHsKLSAgICAgICAgICAgIFN0cmluZyBs
b2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOwotICAg
ICAgICAgICAgaWYgKCFsb2NhdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwg
bmV3VVJMID0gVVJMKGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIGxvY2F0aW9uKTsKLQotICAg
ICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZWRpcmVjdGVkUmVxdWVzdCA9IGpvYi0+Zmly
c3RSZXF1ZXN0KCk7Ci0gICAgICAgICAgICAgICAgcmVkaXJlY3RlZFJlcXVlc3Quc2V0VVJMKG5l
d1VSTCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgICAgICAgICAgICAg
Y2xpZW50LT53aWxsU2VuZFJlcXVlc3Qoam9iLCByZWRpcmVjdGVkUmVxdWVzdCwgZC0+bV9yZXNw
b25zZSk7Ci0KLSAgICAgICAgICAgICAgICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwobmV3VVJM
KTsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemU7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkLT5tX3Nob3VsZFJlZGlyZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGQtPm1f
cmVzcG9uc2Uuc2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiB0b3Rh
bFNpemU7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNIdHRwQXV0aGVudGljYXRpb24oaHR0cENvZGUp
KSB7CiAgICAgICAgICAgICBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlOwogICAgICAg
ICAgICAgaWYgKGdldFByb3RlY3Rpb25TcGFjZShkLT5tX2hhbmRsZSwgZC0+bV9yZXNwb25zZSwg
cHJvdGVjdGlvblNwYWNlKSkgewpAQCAtNjEyLDcgKzY3NCw5IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2soVGltZXI8UmVzb3VyY2VIYW5kbGVNYW5h
Z2VyPioKICAgICAgICAgICAgIGlmIChkLT5tX211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAg
ICAgICBkLT5tX211bHRpcGFydEhhbmRsZS0+Y29udGVudEVuZGVkKCk7CiAKLSAgICAgICAgICAg
IGlmIChkLT5jbGllbnQoKSkgeworICAgICAgICAgICAgaWYgKGQtPm1fc2hvdWxkUmVkaXJlY3Qp
CisgICAgICAgICAgICAgICAgZG9SZWRpcmVjdChqb2IpOworICAgICAgICAgICAgZWxzZSBpZiAo
ZC0+Y2xpZW50KCkpIHsKICAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9h
ZGluZyhqb2IsIDApOwogICAgICAgICAgICAgICAgIEN1cmxDYWNoZU1hbmFnZXI6OmdldEluc3Rh
bmNlKCkuZGlkRmluaXNoTG9hZGluZyhqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
KTsKICAgICAgICAgICAgIH0KQEAgLTk1NCwxNCArMTAxOCwxMCBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSogam9iKQogICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBqb2IpOwogICAg
IGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhl
YWRlckNhbGxiYWNrKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1dSSVRFSEVBREVSLCBqb2IpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfQVVUT1JFRkVSRVIsIDEpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfTUFYUkVESVJTLCAxMCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5t
X2hhbmRsZSwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKICAgICBjdXJsX2Vhc3lf
c2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NIQVJFLCBtX2N1cmxTaGFyZUhhbmRsZSk7CiAg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9V
VCwgNjAgKiA1KTsgLy8gNSBtaW51dGVzCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRs
ZSwgQ1VSTE9QVF9QUk9UT0NPTFMsIGFsbG93ZWRQcm90b2NvbHMpOwotICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLCBhbGxvd2VkUHJvdG9j
b2xzKTsKICAgICBzZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShqb2IpOwogCiAgICAgaWYgKGlnbm9y
ZVNTTEVycm9ycykK
</data>
<flag name="review"
          id="246065"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322244</attachid>
            <date>2017-09-29 15:17:17 -0700</date>
            <delta_ts>2017-09-29 15:34:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>21242-1.diff</filename>
            <type>text/plain</type>
            <size>15364</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjN2QwMDM5YjVjYi4uYjA5NzViODdmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MSBAQAogMjAxNy0wOS0yOSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CiAKKyAgICAgICAgW0NVUkxdIFNob3VsZCBoYW5kbGUgcmVkaXJlY3RzIGluIFdlYkNv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6ZW5hYmxlQXV0b1JlZmVyZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUN1cmxEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2hvdWxkUmVkaXJlY3RBc0dFVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZTo6Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aXNNb3ZlZFBlcm1hbmVudGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmlzRm91bmQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aXNTZWVPdGhlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjppc1JlZGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KworMjAxNy0wOS0yOSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisK
ICAgICAgICAgW0N1cmxdIEV4dHJhY3QgYSBmZWF0dXJlcyB0byBtYW5hZ2UgSFRUUCBjb21tdW5p
Y2F0aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTE0OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGJiNzFlMWRmNmVkLi40NWRhODgx
ODc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogICAgIH0KIH0KIAot
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09V
UCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNF
KFNPVVApICYmICFVU0UoQ1VSTCkKIC8vIFJlc291cmNlSGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMg
Y2xpZW50IGNhbGxzIG9uIHRoZXNlIHBsYXRmb3JtcyB5ZXQuCiB2b2lkIFJlc291cmNlSGFuZGxl
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmlu
ZGV4IGVmNWM5ZGU4MGMzLi5iZmFlNWE4MjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjUsMTEgKzQyNSw2
IEBAIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlRm9sbG93TG9jYXRpb24oKQogICAgIGN1cmxfZWFz
eV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfTUFYUkVESVJTLCBtYXhOdW1iZXJPZlJlZGlyZWN0
Q291bnQpOwogfQogCi12b2lkIEN1cmxIYW5kbGU6OmVuYWJsZUF1dG9SZWZlcmVyKCkKLXsKLSAg
ICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0FVVE9SRUZFUkVSLCAxTCk7Ci19
Ci0KIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9uKGxvbmcgb3B0aW9u
KQogewogICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfSFRUUEFVVEgsIG9w
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5oCmluZGV4IGM3Y2Y3YzA1YzA5Li4xNTNmMmYzM2M2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI0OCw3
ICsyNDgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVBbGxvd2VkUHJvdG9jb2xzKCk7CiAK
ICAgICB2b2lkIGVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7Ci0gICAgdm9pZCBlbmFibGVBdXRvUmVm
ZXJlcigpOwogCiAgICAgdm9pZCBlbmFibGVIdHRwQXV0aGVudGljYXRpb24obG9uZyk7CiAgICAg
dm9pZCBzZXRIdHRwQXV0aFVzZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggYWQ0MjVmMGIxYzMuLjRmYTI3MjM1YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE2OSw4
ICsxNjksNiBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgbV9jdXJs
SGFuZGxlLT5lbmFibGVBY2NlcHRFbmNvZGluZygpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxl
VGltZW91dCgpOwogCi0gICAgbV9jdXJsSGFuZGxlLT5lbmFibGVBdXRvUmVmZXJlcigpOwotICAg
IG1fY3VybEhhbmRsZS0+ZW5hYmxlRm9sbG93TG9jYXRpb24oKTsKICAgICBtX2N1cmxIYW5kbGUt
PmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUNvb2tpZUph
cklmRXhpc3RzKCk7CiAKQEAgLTI3NSwxMSArMjczLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKICAgICAgICAgcmV0dXJuIHJlY2VpdmVC
eXRlczsKICAgICB9CiAKLSAgICAvLyBJZiB0aGUgRk9MTE9XTE9DQVRJT04gb3B0aW9uIGlzIGVu
YWJsZWQgZm9yIHRoZSBjdXJsIGhhbmRsZSB0aGVuCi0gICAgLy8gY3VybCB3aWxsIGZvbGxvdyB0
aGUgcmVkaXJlY3Rpb25zIGludGVybmFsbHkuIFRodXMgdGhpcyBoZWFkZXIgY2FsbGJhY2sKLSAg
ICAvLyB3aWxsIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25lIHRpbWUgd2l0aCB0aGUgbGluZSBzdGFy
dGluZyAiSFRUUCIgZm9yIG9uZSBqb2IuCi0KLSAgICBtX3Jlc3BvbnNlLnVybCA9IG1fY3VybEhh
bmRsZS0+Z2V0RWZmZWN0aXZlVVJMKCk7CisgICAgbV9yZXNwb25zZS51cmwgPSBtX3JlcXVlc3Qu
dXJsKCk7CiAgICAgbV9yZXNwb25zZS5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKIAogICAgIGlm
IChhdXRvIGxlbmd0aCA9IG1fY3VybEhhbmRsZS0+Z2V0Q29udGVudExlbmd0aCgpKQpAQCAtMzA4
LDEzICszMDIsNiBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogCiAgICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNp
emUoKTsKIAotICAgIC8vIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgYXBwYXJlbnRs
eSBpcy4gQ1VSTCB3cml0ZXMgdGhlIGRhdGEKLSAgICAvLyBvZiBodG1sIHBhZ2UgZXZlbiBpZiBp
dCBpcyBhIHJlZGlyZWN0IHRoYXQgd2FzIGhhbmRsZWQgaW50ZXJuYWxseQotICAgIC8vIGNhbiBi
ZSBvYnNlcnZlZCBlLmcuIG9uIGdtYWlsLmNvbQotICAgIGF1dG8gc3RhdHVzQ29kZSA9IG1fY3Vy
bEhhbmRsZS0+Z2V0UmVzcG9uc2VDb2RlKCk7Ci0gICAgaWYgKHN0YXR1c0NvZGUgJiYgKDMwMCA8
PSAqc3RhdHVzQ29kZSkgJiYgKCpzdGF0dXNDb2RlIDwgNDAwKSkKLSAgICAgICAgcmV0dXJuIHJl
Y2VpdmVCeXRlczsKLQogICAgIGlmIChyZWNlaXZlQnl0ZXMpIHsKICAgICAgICAgY2FsbERlbGVn
YXRlKFt0aGlzLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKEN1cmxSZXF1ZXN0RGVsZWdhdGUq
IGRlbGVnYXRlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChkZWxlZ2F0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKaW5kZXggNzgyNTY0NmU1ZDkuLjJlN2YwY2ZlYWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQo
KQogICAgIGlmIChkLT5tX2NvbnRleHQgJiYgIWQtPm1fY29udGV4dC0+aXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBPbmx5IGFsbG93IHRoZSBQT1NUIGFuZCBHRVQg
bWV0aG9kcyBmb3Igbm9uLUhUVFAgcmVxdWVzdHMuCisgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7CisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIiAmJiBy
ZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiUE9TVCIpIHsKKyAgICAgICAgc2NoZWR1bGVGYWlsdXJl
KEludmFsaWRVUkxGYWlsdXJlKTsgLy8gRXJyb3IgbXVzdCBub3QgYmUgcmVwb3J0ZWQgaW1tZWRp
YXRlbHkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgZC0+bV9kZWxlZ2F0ZSA9
IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZSh0aGlzKSk7CiAgICAgcmV0
dXJuIGQtPm1fZGVsZWdhdGUtPnN0YXJ0KCk7CiB9CkBAIC0yNTAsNiArMjU3LDIwIEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4CiAgICAgcmVzcG9uc2UgPSBjbGllbnQucmVzcG9uc2UoKTsKIH0K
IAordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51c2Vz
QXN5bmNDYWxsYmFja3MoKSk7CisKKyAgICBpZiAoZC0+bV9kZWxlZ2F0ZSkKKyAgICAgICAgZC0+
bV9kZWxlZ2F0ZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlLmNwcAppbmRleCAyMGI2ZDRiNWMyMy4uZmZmMGZlZmM0ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcApAQCAtMjAxLDIyICsyMDEsOSBAQCB2b2lk
IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IEN1cmxSZXNwb25zZSYgcmVjZQogICAgICAgICAgICAgbV9tdWx0aXBhcnRIYW5kbGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPE11bHRpcGFydEhhbmRsZT4obV9oYW5kbGUsIGJvdW5kYXJ5KTsKICAgICB9
CiAKLSAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCi0gICAgaWYgKHJlc3BvbnNlKCkuaXNSZWRpcmVj
dGlvbigpKSB7Ci0gICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IHJlc3BvbnNlKCkuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbik7Ci0gICAgICAgIGlmICghbG9jYXRpb24u
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBVUkwgbmV3VVJMID0gVVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpLCBsb2NhdGlvbik7Ci0KLSAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZWRpcmVj
dGVkUmVxdWVzdCA9IG1fZmlyc3RSZXF1ZXN0OwotICAgICAgICAgICAgcmVkaXJlY3RlZFJlcXVl
c3Quc2V0VVJMKG5ld1VSTCk7Ci0gICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGxvY2FsUmVz
cG9uc2UgPSByZXNwb25zZSgpOwotICAgICAgICAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSkK
LSAgICAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdChtX2hh
bmRsZSwgV1RGTW92ZShyZWRpcmVjdGVkUmVxdWVzdCksIFdURk1vdmUobG9jYWxSZXNwb25zZSkp
OwotCi0gICAgICAgICAgICBtX2ZpcnN0UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKLQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKHJlc3BvbnNlKCkuc2hvdWxkUmVkaXJl
Y3QoKSkgeworICAgICAgICB3aWxsU2VuZFJlcXVlc3QoKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChyZXNwb25zZSgpLmlzVW5hdXRob3JpemVkKCkpIHsKQEAgLTI4OSw2ICsy
NzYsMTA1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmN1cmxEaWRGYWlsV2l0
aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291CiAgICAgbV9oYW5kbGUtPmNsaWVudCgp
LT5kaWRGYWlsKG1faGFuZGxlLCByZXNvdXJjZUVycm9yKTsKIH0KIAorYm9vbCBSZXNvdXJjZUhh
bmRsZUN1cmxEZWxlZ2F0ZTo6c2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY3Jvc3NPcmlnaW4pCit7CisgICAgaWYgKChyZXF1ZXN0Lmh0dHBN
ZXRob2QoKSA9PSAiR0VUIikgfHwgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJIRUFEIikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHJlc3BvbnNl
KCkuaXNTZWVPdGhlcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICgocmVzcG9u
c2UoKS5pc01vdmVkUGVybWFuZW50bHkoKSB8fCByZXNwb25zZSgpLmlzRm91bmQoKSkgJiYgKHJl
cXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKGNyb3NzT3JpZ2luICYmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiREVMRVRFIikp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IG1heFJlZGlyZWN0cyA9
IDIwOworCisgICAgaWYgKG1fcmVkaXJlY3RDb3VudCsrID4gbWF4UmVkaXJlY3RzKSB7CisgICAg
ICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbChtX2hhbmRsZSwgUmVzb3VyY2VFcnJvcjo6
aHR0cEVycm9yKENVUkxFX1RPT19NQU5ZX1JFRElSRUNUUywgcmVzcG9uc2UoKS51cmwoKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGxvY2F0aW9uID0gcmVzcG9uc2Uo
KS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKTsKKyAgICBVUkwgbmV3
VVJMID0gVVJMKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBsb2NhdGlvbik7CisgICAgYm9vbCBjcm9z
c09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobV9maXJzdFJlcXVlc3QudXJs
KCksIG5ld1VSTCk7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IG1fZmlyc3RS
ZXF1ZXN0OworICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CisKKyAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKKyAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9k
eShudWxscHRyKTsKKyAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwor
ICAgIH0KKworICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBm
cm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgorICAgIGlmICghbmV3VVJM
LnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhuZXdSZXF1ZXN0Lmh0dHBSZWZlcnJl
cigpLCAiaHR0cHMiKSAmJiBtX2hhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVm
ZXJyZXIoKTsKKworICAgIG1fdXNlciA9IG5ld1VSTC51c2VyKCk7CisgICAgbV9wYXNzID0gbmV3
VVJMLnBhc3MoKTsKKyAgICBuZXdSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisKKyAgICBp
ZiAoY3Jvc3NPcmlnaW4pIHsKKyAgICAgICAgLy8gSWYgdGhlIG5ldHdvcmsgbGF5ZXIgY2Fycmll
cyBvdmVyIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgZnJvbSB0aGUgb3JpZ2luYWwgcmVxdWVzdAor
ICAgICAgICAvLyBpbiBhIGNyb3NzLW9yaWdpbiByZWRpcmVjdCwgd2Ugd2FudCB0byBjbGVhciB0
aG9zZSBoZWFkZXJzIGhlcmUuIAorICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUEF1dGhvcml6
YXRpb24oKTsKKyAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBPcmlnaW4oKTsKKyAgICB9CisK
KyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlQ29weSA9IHJlc3BvbnNlKCk7CisgICAgaWYg
KG1faGFuZGxlLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCisgICAgICAgIG1faGFu
ZGxlLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmMobV9oYW5kbGUsIFdURk1vdmUobmV3
UmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1
dG8gcmVxdWVzdCA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KG1faGFuZGxl
LCBXVEZNb3ZlKG5ld1JlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlQ29weSkpOworICAgICAgICBj
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOworICAgIH0KK30K
Kwordm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3Qp
KTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Y29udGludWVBZnRlcldp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICAvLyB3aWxsU2VuZFJlcXVlc3QgbWlnaHQgY2FuY2VsIHRo
ZSBsb2FkLgorICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSB8fCAhbV9jdXJsUmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCk7CisKKyAgICBib29sIGlzU3luY1JlcXVlc3QgPSBtX2N1cmxSZXF1ZXN0LT5pc1N5bmNS
ZXF1ZXN0KCk7CisgICAgbV9jdXJsUmVxdWVzdC0+Y2FuY2VsKCk7CisgICAgbV9jdXJsUmVxdWVz
dC0+c2V0RGVsZWdhdGUobnVsbHB0cik7CisKKyAgICBtX2N1cmxSZXF1ZXN0ID0gY3JlYXRlQ3Vy
bFJlcXVlc3QobV9jdXJyZW50UmVxdWVzdCk7CisKKyAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9y
dEFyZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3BvbnNlKCkudXJsKCkpKSB7Cisg
ICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGdldENyZWRlbnRpYWwobV9jdXJyZW50UmVxdWVzdCwg
dHJ1ZSk7CisgICAgICAgIG1fY3VybFJlcXVlc3QtPnNldFVzZXJQYXNzKGNyZWRlbnRpYWwuZmly
c3QsIGNyZWRlbnRpYWwuc2Vjb25kKTsKKyAgICB9CisKKyAgICBtX2N1cmxSZXF1ZXN0LT5zdGFy
dChpc1N5bmNSZXF1ZXN0KTsKK30KKwogUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OnJlc3BvbnNlKCkKIHsKICAgICByZXR1cm4gbV9oYW5kbGUtPmdldEludGVy
bmFsKCktPm1fcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oCmluZGV4
IGMyNTI1OTA3MWVkLi43MzY0YTU0YjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFN5bmNo
cm9ub3VzSm9iKCk7CiAKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmKTsKKwogcHJpdmF0ZToKICAgICAvLyBDYWxsZWQgZnJvbSBtYWluIHRocmVhZC4K
ICAgICBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpOwpAQCAtNjksMTMgKzcxLDE4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAorICAg
IGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNy
b3NzT3JpZ2luKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCgpOworICAgIHZvaWQgY29udGlu
dWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CisKICAgICB2b2lkIGhh
bmRsZURhdGFVUkwoKTsKIAogICAgIC8vIFVzZWQgYnkgbWFpbiB0aHJlYWQuCiAgICAgUmVzb3Vy
Y2VIYW5kbGUqIG1faGFuZGxlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdWx0aXBhcnRIYW5kbGU+
IG1fbXVsdGlwYXJ0SGFuZGxlOwogICAgIHVuc2lnbmVkIG1fYXV0aEZhaWx1cmVDb3VudCB7IDAg
fTsKLSAgICAvLyBVc2VkIGJ5IHdvcmtlciB0aHJlYWQuCisgICAgaW50IG1fcmVkaXJlY3RDb3Vu
dCB7IDAgfTsKKwogICAgIFJlc291cmNlUmVxdWVzdCBtX2ZpcnN0UmVxdWVzdDsKICAgICBSZXNv
dXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICBib29sIG1fc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAzYWI3MDgwMWU2YS4uZTI1NjhjMDcyYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlUmVzcG9uc2UuaApAQCAtNTIsNyArNTIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKSB7IG1fbmV0d29ya0xvYWRNZXRyaWNzID0gbmV0d29ya0xvYWRN
ZXRyaWNzOyB9CiAKLSAgICBib29sIGlzUmVkaXJlY3Rpb24oKSBjb25zdDsKKyAgICBib29sIHNo
b3VsZFJlZGlyZWN0KCk7CisgICAgYm9vbCBpc01vdmVkUGVybWFuZW50bHkoKSBjb25zdDsKKyAg
ICBib29sIGlzRm91bmQoKSBjb25zdDsKKyAgICBib29sIGlzU2VlT3RoZXIoKSBjb25zdDsKICAg
ICBib29sIGlzTm90TW9kaWZpZWQoKSBjb25zdDsKICAgICBib29sIGlzVW5hdXRob3JpemVkKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDliYjNjZmY1MmUxLi44OWI3
NmQ0M2E1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCkBAIC0xMzMsMTAgKzEzMywzNSBA
QCBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKIH0KIAotYm9v
bCBSZXNvdXJjZVJlc3BvbnNlOjppc1JlZGlyZWN0aW9uKCkgY29uc3QKK2Jvb2wgUmVzb3VyY2VS
ZXNwb25zZTo6c2hvdWxkUmVkaXJlY3QoKQogewogICAgIGF1dG8gc3RhdHVzQ29kZSA9IGh0dHBT
dGF0dXNDb2RlKCk7Ci0gICAgcmV0dXJuICgzMDAgPD0gc3RhdHVzQ29kZSkgJiYgKHN0YXR1c0Nv
ZGUgPCA0MDApICYmIChzdGF0dXNDb2RlICE9IDMwNCk7CisgICAgaWYgKChzdGF0dXNDb2RlIDwg
MzAwKSB8fCAoNDAwIDw9IHN0YXR1c0NvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBTb21lIDN4eCBzdGF0dXMgY29kZXMgYXJlbid0IGFjdHVhbGx5IHJlZGlyZWN0cy4KKyAg
ICBpZiAoc3RhdHVzQ29kZSA9PSAzMDAgfHwgc3RhdHVzQ29kZSA9PSAzMDQgfHwgc3RhdHVzQ29k
ZSA9PSAzMDUgfHwgc3RhdHVzQ29kZSA9PSAzMDYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFJlc291cmNlUmVzcG9uc2U6OmlzTW92ZWRQZXJtYW5lbnRseSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDMwMSk7Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXNwb25z
ZTo6aXNGb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDMw
Mik7Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNTZWVPdGhlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDMwMyk7CiB9CiAKIGJvb2wgUmVzb3VyY2VS
ZXNwb25zZTo6aXNOb3RNb2RpZmllZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322246</attachid>
            <date>2017-09-29 15:34:08 -0700</date>
            <delta_ts>2017-10-02 12:00:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>21242-1.diff</filename>
            <type>text/plain</type>
            <size>15331</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjN2QwMDM5YjVjYi4uNWZmNTM1N2ZkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOSBAQAogMjAxNy0wOS0yOSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CiAKKyAgICAgICAgW0NVUkxdIFNob3VsZCBoYW5kbGUgcmVkaXJlY3RzIGluIFdlYkNv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6
ZW5hYmxlQXV0b1JlZmVyZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6
c2hvdWxkUmVkaXJlY3RBc0dFVCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ3VybERlbGVnYXRlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6Y29udGludWVBZnRlcldpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2hvdWxk
UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aXNNb3ZlZFBl
cm1hbmVudGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6Omlz
Rm91bmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aXNTZWVP
dGhlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjppc1JlZGly
ZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKworMjAxNy0wOS0yOSAgQmFzdWtlIFN1enVraSAgPEJh
c3VrZS5TdXp1a2lAc29ueS5jb20+CisKICAgICAgICAgW0N1cmxdIEV4dHJhY3QgYSBmZWF0dXJl
cyB0byBtYW5hZ2UgSFRUUCBjb21tdW5pY2F0aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0OAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmlu
ZGV4IGJiNzFlMWRmNmVkLi40NWRhODgxODc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlKQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVS
TENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNPVVApICYmICFVU0UoQ1VSTCkKIC8vIFJlc291cmNl
SGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIHRoZXNlIHBsYXRmb3JtcyB5
ZXQuCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IGVmNWM5ZGU4MGMzLi5iZmFlNWE4MjNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCkBAIC00MjUsMTEgKzQyNSw2IEBAIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlRm9sbG93
TG9jYXRpb24oKQogICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfTUFYUkVE
SVJTLCBtYXhOdW1iZXJPZlJlZGlyZWN0Q291bnQpOwogfQogCi12b2lkIEN1cmxIYW5kbGU6OmVu
YWJsZUF1dG9SZWZlcmVyKCkKLXsKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJM
T1BUX0FVVE9SRUZFUkVSLCAxTCk7Ci19Ci0KIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlSHR0cEF1
dGhlbnRpY2F0aW9uKGxvbmcgb3B0aW9uKQogewogICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5k
bGUsIENVUkxPUFRfSFRUUEFVVEgsIG9wdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IGM3Y2Y3YzA1YzA5Li4xNTNm
MmYzM2M2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKQEAgLTI0OCw3ICsyNDgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFi
bGVBbGxvd2VkUHJvdG9jb2xzKCk7CiAKICAgICB2b2lkIGVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7
Ci0gICAgdm9pZCBlbmFibGVBdXRvUmVmZXJlcigpOwogCiAgICAgdm9pZCBlbmFibGVIdHRwQXV0
aGVudGljYXRpb24obG9uZyk7CiAgICAgdm9pZCBzZXRIdHRwQXV0aFVzZXJQYXNzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWQ0MjVmMGIxYzMuLjRmYTI3MjM1
YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKQEAgLTE2OSw4ICsxNjksNiBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0
dXBUcmFuc2ZlcigpCiAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVBY2NlcHRFbmNvZGluZygpOwog
ICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlVGltZW91dCgpOwogCi0gICAgbV9jdXJsSGFuZGxlLT5l
bmFibGVBdXRvUmVmZXJlcigpOwotICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlRm9sbG93TG9jYXRp
b24oKTsKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKICAgICBtX2N1
cmxIYW5kbGUtPmVuYWJsZUNvb2tpZUphcklmRXhpc3RzKCk7CiAKQEAgLTI3NSwxMSArMjczLDcg
QEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikK
ICAgICAgICAgcmV0dXJuIHJlY2VpdmVCeXRlczsKICAgICB9CiAKLSAgICAvLyBJZiB0aGUgRk9M
TE9XTE9DQVRJT04gb3B0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBjdXJsIGhhbmRsZSB0aGVuCi0g
ICAgLy8gY3VybCB3aWxsIGZvbGxvdyB0aGUgcmVkaXJlY3Rpb25zIGludGVybmFsbHkuIFRodXMg
dGhpcyBoZWFkZXIgY2FsbGJhY2sKLSAgICAvLyB3aWxsIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25l
IHRpbWUgd2l0aCB0aGUgbGluZSBzdGFydGluZyAiSFRUUCIgZm9yIG9uZSBqb2IuCi0KLSAgICBt
X3Jlc3BvbnNlLnVybCA9IG1fY3VybEhhbmRsZS0+Z2V0RWZmZWN0aXZlVVJMKCk7CisgICAgbV9y
ZXNwb25zZS51cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgbV9yZXNwb25zZS5zdGF0dXNDb2Rl
ID0gc3RhdHVzQ29kZTsKIAogICAgIGlmIChhdXRvIGxlbmd0aCA9IG1fY3VybEhhbmRsZS0+Z2V0
Q29udGVudExlbmd0aCgpKQpAQCAtMzA4LDEzICszMDIsNiBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogCiAgICAgYXV0byBy
ZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKIAotICAgIC8vIHRoaXMgc2hvdWxkbid0IGJl
IG5lY2Vzc2FyeSBidXQgYXBwYXJlbnRseSBpcy4gQ1VSTCB3cml0ZXMgdGhlIGRhdGEKLSAgICAv
LyBvZiBodG1sIHBhZ2UgZXZlbiBpZiBpdCBpcyBhIHJlZGlyZWN0IHRoYXQgd2FzIGhhbmRsZWQg
aW50ZXJuYWxseQotICAgIC8vIGNhbiBiZSBvYnNlcnZlZCBlLmcuIG9uIGdtYWlsLmNvbQotICAg
IGF1dG8gc3RhdHVzQ29kZSA9IG1fY3VybEhhbmRsZS0+Z2V0UmVzcG9uc2VDb2RlKCk7Ci0gICAg
aWYgKHN0YXR1c0NvZGUgJiYgKDMwMCA8PSAqc3RhdHVzQ29kZSkgJiYgKCpzdGF0dXNDb2RlIDwg
NDAwKSkKLSAgICAgICAgcmV0dXJuIHJlY2VpdmVCeXRlczsKLQogICAgIGlmIChyZWNlaXZlQnl0
ZXMpIHsKICAgICAgICAgY2FsbERlbGVnYXRlKFt0aGlzLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cildKEN1cmxSZXF1ZXN0RGVsZWdhdGUqIGRlbGVnYXRlKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChkZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggNzgyNTY0NmU1ZDkuLjJl
N2YwY2ZlYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgYm9v
bCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGlmIChkLT5tX2NvbnRleHQgJiYgIWQtPm1f
Y29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBPbmx5
IGFsbG93IHRoZSBQT1NUIGFuZCBHRVQgbWV0aG9kcyBmb3Igbm9uLUhUVFAgcmVxdWVzdHMuCisg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7CisgICAg
aWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiByZXF1ZXN0Lmh0
dHBNZXRob2QoKSAhPSAiR0VUIiAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiUE9TVCIpIHsK
KyAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsgLy8gRXJyb3IgbXVz
dCBub3QgYmUgcmVwb3J0ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCiAgICAgZC0+bV9kZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUN1cmxE
ZWxlZ2F0ZSh0aGlzKSk7CiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUtPnN0YXJ0KCk7CiB9CkBA
IC0yNTAsNiArMjU3LDIwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgcmVzcG9uc2Ug
PSBjbGllbnQucmVzcG9uc2UoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWNs
aWVudCgpIHx8IGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CisKKyAgICBpZiAoZC0+
bV9kZWxlZ2F0ZSkKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZS0+Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcAppbmRleCAyMGI2ZDRiNWMy
My4uZmZmMGZlZmM0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcApA
QCAtMjAxLDIyICsyMDEsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVjZQogICAgICAgICAgICAg
bV9tdWx0aXBhcnRIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpcGFydEhhbmRsZT4obV9o
YW5kbGUsIGJvdW5kYXJ5KTsKICAgICB9CiAKLSAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCi0gICAg
aWYgKHJlc3BvbnNlKCkuaXNSZWRpcmVjdGlvbigpKSB7Ci0gICAgICAgIFN0cmluZyBsb2NhdGlv
biA9IHJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbik7
Ci0gICAgICAgIGlmICghbG9jYXRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBVUkwgbmV3
VVJMID0gVVJMKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBsb2NhdGlvbik7Ci0KLSAgICAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZWRpcmVjdGVkUmVxdWVzdCA9IG1fZmlyc3RSZXF1ZXN0OwotICAg
ICAgICAgICAgcmVkaXJlY3RlZFJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7Ci0gICAgICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIGxvY2FsUmVzcG9uc2UgPSByZXNwb25zZSgpOwotICAgICAgICAgICAg
aWYgKG1faGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xpZW50
KCktPndpbGxTZW5kUmVxdWVzdChtX2hhbmRsZSwgV1RGTW92ZShyZWRpcmVjdGVkUmVxdWVzdCks
IFdURk1vdmUobG9jYWxSZXNwb25zZSkpOwotCi0gICAgICAgICAgICBtX2ZpcnN0UmVxdWVzdC5z
ZXRVUkwobmV3VVJMKTsKLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYg
KHJlc3BvbnNlKCkuc2hvdWxkUmVkaXJlY3QoKSkgeworICAgICAgICB3aWxsU2VuZFJlcXVlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNwb25zZSgpLmlzVW5hdXRo
b3JpemVkKCkpIHsKQEAgLTI4OSw2ICsyNzYsMTA1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OmN1cmxEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291
CiAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKG1faGFuZGxlLCByZXNvdXJjZUVycm9y
KTsKIH0KIAorYm9vbCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2hvdWxkUmVkaXJlY3RB
c0dFVChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY3Jvc3NPcmlnaW4pCit7
CisgICAgaWYgKChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIikgfHwgKHJlcXVlc3QuaHR0
cE1ldGhvZCgpID09ICJIRUFEIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKHJlc3BvbnNlKCkuaXNTZWVPdGhlcigpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGlmICgocmVzcG9uc2UoKS5pc01vdmVkUGVybWFuZW50bHkoKSB8fCByZXNw
b25zZSgpLmlzRm91bmQoKSkgJiYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGNyb3NzT3JpZ2luICYmIChyZXF1ZXN0Lmh0
dHBNZXRob2QoKSA9PSAiREVMRVRFIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjp3aWxsU2Vu
ZFJlcXVlc3QoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMg
Y29uc3QgaW50IG1heFJlZGlyZWN0cyA9IDIwOworCisgICAgaWYgKG1fcmVkaXJlY3RDb3VudCsr
ID4gbWF4UmVkaXJlY3RzKSB7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbCht
X2hhbmRsZSwgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKENVUkxFX1RPT19NQU5ZX1JFRElSRUNU
UywgcmVzcG9uc2UoKS51cmwoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3Ry
aW5nIGxvY2F0aW9uID0gcmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkxvY2F0aW9uKTsKKyAgICBVUkwgbmV3VVJMID0gVVJMKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBs
b2NhdGlvbik7CisgICAgYm9vbCBjcm9zc09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwobV9maXJzdFJlcXVlc3QudXJsKCksIG5ld1VSTCk7CisKKyAgICBSZXNvdXJjZVJlcXVl
c3QgbmV3UmVxdWVzdCA9IG1fZmlyc3RSZXF1ZXN0OworICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5l
d1VSTCk7CisKKyAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09y
aWdpbikpIHsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKKyAgICAgICAgbmV3UmVxdWVzdC5j
bGVhckhUVFBDb250ZW50VHlwZSgpOworICAgIH0KKworICAgIC8vIFNob3VsZCBub3Qgc2V0IFJl
ZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1
cmUgb25lLgorICAgIGlmICghbmV3VVJMLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJ
cyhuZXdSZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBtX2hhbmRsZS0+Y29udGV4
dCgpLT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAg
IG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKKworICAgIG1fdXNlciA9IG5ld1VSTC51
c2VyKCk7CisgICAgbV9wYXNzID0gbmV3VVJMLnBhc3MoKTsKKyAgICBuZXdSZXF1ZXN0LnJlbW92
ZUNyZWRlbnRpYWxzKCk7CisKKyAgICBpZiAoY3Jvc3NPcmlnaW4pIHsKKyAgICAgICAgLy8gSWYg
dGhlIG5ldHdvcmsgbGF5ZXIgY2FycmllcyBvdmVyIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgZnJv
bSB0aGUgb3JpZ2luYWwgcmVxdWVzdAorICAgICAgICAvLyBpbiBhIGNyb3NzLW9yaWdpbiByZWRp
cmVjdCwgd2Ugd2FudCB0byBjbGVhciB0aG9zZSBoZWFkZXJzIGhlcmUuIAorICAgICAgICBuZXdS
ZXF1ZXN0LmNsZWFySFRUUEF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgbmV3UmVxdWVzdC5jbGVh
ckhUVFBPcmlnaW4oKTsKKyAgICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlQ29w
eSA9IHJlc3BvbnNlKCk7CisgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2Fs
bGJhY2tzKCkpCisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5
bmMobV9oYW5kbGUsIFdURk1vdmUobmV3UmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7
CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1faGFuZGxlLT5jbGllbnQoKS0+
d2lsbFNlbmRSZXF1ZXN0KG1faGFuZGxlLCBXVEZNb3ZlKG5ld1JlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlQ29weSkpOworICAgICAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFdURk1v
dmUocmVxdWVzdCkpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0
ZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgY29udGludWVBZnRlcldpbGxTZW5k
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxE
ZWxlZ2F0ZTo6Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyB3aWxsU2Vu
ZFJlcXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgorICAgIGlmIChjYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSB8fCAhbV9jdXJsUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXJy
ZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBib29sIGlzU3luY1JlcXVlc3Qg
PSBtX2N1cmxSZXF1ZXN0LT5pc1N5bmNSZXF1ZXN0KCk7CisgICAgbV9jdXJsUmVxdWVzdC0+Y2Fu
Y2VsKCk7CisgICAgbV9jdXJsUmVxdWVzdC0+c2V0RGVsZWdhdGUobnVsbHB0cik7CisKKyAgICBt
X2N1cmxSZXF1ZXN0ID0gY3JlYXRlQ3VybFJlcXVlc3QobV9jdXJyZW50UmVxdWVzdCk7CisKKyAg
ICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCks
IHJlc3BvbnNlKCkudXJsKCkpKSB7CisgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGdldENyZWRl
bnRpYWwobV9jdXJyZW50UmVxdWVzdCwgdHJ1ZSk7CisgICAgICAgIG1fY3VybFJlcXVlc3QtPnNl
dFVzZXJQYXNzKGNyZWRlbnRpYWwuZmlyc3QsIGNyZWRlbnRpYWwuc2Vjb25kKTsKKyAgICB9CisK
KyAgICBtX2N1cmxSZXF1ZXN0LT5zdGFydChpc1N5bmNSZXF1ZXN0KTsKK30KKwogUmVzb3VyY2VS
ZXNwb25zZSYgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnJlc3BvbnNlKCkKIHsKICAgICBy
ZXR1cm4gbV9oYW5kbGUtPmdldEludGVybmFsKCktPm1fcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmxEZWxlZ2F0ZS5oCmluZGV4IGMyNTI1OTA3MWVkLi43MzY0YTU0YjA3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNocm9ub3VzSm9iKCk7CiAKKyAgICB2b2lkIGNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmKTsKKwogcHJpdmF0ZToKICAgICAvLyBD
YWxsZWQgZnJvbSBtYWluIHRocmVhZC4KICAgICBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgp
OwpAQCAtNjksMTMgKzcxLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAorICAgIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIGNyb3NzT3JpZ2luKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdCgpOworICAgIHZvaWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJik7CisKICAgICB2b2lkIGhhbmRsZURhdGFVUkwoKTsKIAogICAgIC8vIFVzZWQgYnkg
bWFpbiB0aHJlYWQuCiAgICAgUmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNdWx0aXBhcnRIYW5kbGU+IG1fbXVsdGlwYXJ0SGFuZGxlOwogICAgIHVuc2lnbmVk
IG1fYXV0aEZhaWx1cmVDb3VudCB7IDAgfTsKLSAgICAvLyBVc2VkIGJ5IHdvcmtlciB0aHJlYWQu
CisgICAgaW50IG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKKwogICAgIFJlc291cmNlUmVxdWVzdCBt
X2ZpcnN0UmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAg
ICBib29sIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAz
YWI3MDgwMWU2YS4uZTI1NjhjMDcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTIsNyArNTIsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKSB7IG1fbmV0d29ya0xv
YWRNZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzOyB9CiAKLSAgICBib29sIGlzUmVkaXJlY3Rp
b24oKSBjb25zdDsKKyAgICBib29sIHNob3VsZFJlZGlyZWN0KCk7CisgICAgYm9vbCBpc01vdmVk
UGVybWFuZW50bHkoKSBjb25zdDsKKyAgICBib29sIGlzRm91bmQoKSBjb25zdDsKKyAgICBib29s
IGlzU2VlT3RoZXIoKSBjb25zdDsKICAgICBib29sIGlzTm90TW9kaWZpZWQoKSBjb25zdDsKICAg
ICBib29sIGlzVW5hdXRob3JpemVkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3Bw
CmluZGV4IDliYjNjZmY1MmUxLi44OWI3NmQ0M2E1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwu
Y3BwCkBAIC0xMzMsMTAgKzEzMywzNSBAQCBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZv
cm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBD
b250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50
RGlzcG9zaXRpb24pKTsKIH0KIAotYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc1JlZGlyZWN0aW9u
KCkgY29uc3QKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6c2hvdWxkUmVkaXJlY3QoKQogewogICAg
IGF1dG8gc3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgcmV0dXJuICgzMDAgPD0g
c3RhdHVzQ29kZSkgJiYgKHN0YXR1c0NvZGUgPCA0MDApICYmIChzdGF0dXNDb2RlICE9IDMwNCk7
CisgICAgaWYgKChzdGF0dXNDb2RlIDwgMzAwKSB8fCAoNDAwIDw9IHN0YXR1c0NvZGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBTb21lIDN4eCBzdGF0dXMgY29kZXMgYXJlbid0
IGFjdHVhbGx5IHJlZGlyZWN0cy4KKyAgICBpZiAoc3RhdHVzQ29kZSA9PSAzMDAgfHwgc3RhdHVz
Q29kZSA9PSAzMDQgfHwgc3RhdHVzQ29kZSA9PSAzMDUgfHwgc3RhdHVzQ29kZSA9PSAzMDYpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkxvY2F0aW9uKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFJlc291cmNlUmVzcG9uc2U6OmlzTW92ZWRQZXJtYW5l
bnRseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDMwMSk7Cit9
CisKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNGb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IChodHRwU3RhdHVzQ29kZSgpID09IDMwMik7Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6
aXNTZWVPdGhlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIChodHRwU3RhdHVzQ29kZSgpID09IDMw
Myk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNOb3RNb2RpZmllZCgpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>