<?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>182979</bug_id>
          
          <creation_ts>2018-02-20 11:15:23 -0800</creation_ts>
          <short_desc>[Curl] Split DNS cache expiration and connection timeout setting.</short_desc>
          <delta_ts>2018-03-01 12:40:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>pvollan</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400846</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-20 11:15:23 -0800</bug_when>
    <thetext>It was mis-implemented and was named ambiguous name &apos;enableTimeout&apos;. Implement each feature correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401473</commentid>
    <comment_count>1</comment_count>
      <attachid>334458</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-22 10:59:16 -0800</bug_when>
    <thetext>Created attachment 334458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401494</commentid>
    <comment_count>2</comment_count>
      <attachid>334458</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-02-22 11:53:06 -0800</bug_when>
    <thetext>Comment on attachment 334458
Patch

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:69
&gt; +}

Fix alignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401543</commentid>
    <comment_count>3</comment_count>
      <attachid>334475</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-22 13:57:38 -0800</bug_when>
    <thetext>Created attachment 334475
style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401544</commentid>
    <comment_count>4</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-22 13:57:52 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #2)
&gt; Comment on attachment 334458 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334458&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:69
&gt; &gt; +}
&gt; 
&gt; Fix alignment

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401870</commentid>
    <comment_count>5</comment_count>
      <attachid>334475</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-02-24 09:00:01 -0800</bug_when>
    <thetext>Comment on attachment 334475
style fix

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:70
&gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_DNS_CACHE_TIMEOUT&quot;)) {
&gt; +        unsigned seconds = 0;
&gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; +
&gt; +        m_dnsCacheTimeoutSeconds = seconds;
&gt; +    }
&gt; +
&gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_CONNECT_TIMEOUT&quot;)) {
&gt; +        unsigned seconds = 0;
&gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; +
&gt; +        m_connectTimeoutSeconds = seconds;
&gt; +    }
&gt; +

Perhaps we can do without this, since the default values should be appropriate in most cases?

&gt; Source/WebCore/platform/network/curl/CurlContext.h:141
&gt; +    unsigned m_dnsCacheTimeoutSeconds { 5 * 60 };
&gt; +    unsigned m_connectTimeoutSeconds { 30 };

Would it make sense to use the Seconds class here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402362</commentid>
    <comment_count>6</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-27 10:34:24 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #5)
&gt; Comment on attachment 334475 [details]
&gt; style fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334475&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:70
&gt; &gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_DNS_CACHE_TIMEOUT&quot;)) {
&gt; &gt; +        unsigned seconds = 0;
&gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; &gt; +
&gt; &gt; +        m_dnsCacheTimeoutSeconds = seconds;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_CONNECT_TIMEOUT&quot;)) {
&gt; &gt; +        unsigned seconds = 0;
&gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; &gt; +
&gt; &gt; +        m_connectTimeoutSeconds = seconds;
&gt; &gt; +    }
&gt; &gt; +
&gt; 
&gt; Perhaps we can do without this, since the default values should be
&gt; appropriate in most cases?

We want these values configurable because our platform sometimes has slightly different requirements.

By the way, are there any default definition for these values? We refer Mozilla&apos;s documentation for these, but if WebKit has specific values, we wanna use them.

&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.h:141
&gt; &gt; +    unsigned m_dnsCacheTimeoutSeconds { 5 * 60 };
&gt; &gt; +    unsigned m_connectTimeoutSeconds { 30 };
&gt; 
&gt; Would it make sense to use the Seconds class here?

Oh, great. Another chance to adopt WebKit classes. I will use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402388</commentid>
    <comment_count>7</comment_count>
      <attachid>334699</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-27 12:25:28 -0800</bug_when>
    <thetext>Created attachment 334699
Fix to use Seconds class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402410</commentid>
    <comment_count>8</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-02-27 13:43:14 -0800</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #6)
&gt; (In reply to Per Arne Vollan from comment #5)
&gt; &gt; Comment on attachment 334475 [details]
&gt; &gt; style fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=334475&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:70
&gt; &gt; &gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_DNS_CACHE_TIMEOUT&quot;)) {
&gt; &gt; &gt; +        unsigned seconds = 0;
&gt; &gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; &gt; &gt; +
&gt; &gt; &gt; +        m_dnsCacheTimeoutSeconds = seconds;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    if (const char* str = getenv(&quot;WEBKIT_CURL_CONNECT_TIMEOUT&quot;)) {
&gt; &gt; &gt; +        unsigned seconds = 0;
&gt; &gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;seconds);
&gt; &gt; &gt; +
&gt; &gt; &gt; +        m_connectTimeoutSeconds = seconds;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Perhaps we can do without this, since the default values should be
&gt; &gt; appropriate in most cases?
&gt; 
&gt; We want these values configurable because our platform sometimes has
&gt; slightly different requirements.
&gt; 

Are there other ways we could make this configurable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402420</commentid>
    <comment_count>9</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-27 14:29:06 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #8)
&gt; Are there other ways we could make this configurable?

Using some kind of CreationParameter is our plan when our WebKit2 implementation goes to wincairo. Until then we wanna keep using the old way to stay away from unneeded effort if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402421</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-27 14:29:57 -0800</bug_when>
    <thetext>(environment variable was used in wincairo before we&apos;ve start maintaining the port).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402439</commentid>
    <comment_count>11</comment_count>
      <attachid>334699</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-02-27 15:03:25 -0800</bug_when>
    <thetext>Comment on attachment 334699
Fix to use Seconds class

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:59
&gt; +        sscanf(str, &quot;%lud&quot;, &amp;timeout);

Should we check the return value before assigning?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402633</commentid>
    <comment_count>12</comment_count>
      <attachid>334699</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-02-28 09:34:52 -0800</bug_when>
    <thetext>Comment on attachment 334699
Fix to use Seconds class

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

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:66
&gt; +        sscanf(str, &quot;%lud&quot;, &amp;timeout);

Is &apos;sscanf(str, &quot;%u&quot;, &amp;timeout);&apos; sufficient here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402655</commentid>
    <comment_count>13</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-28 10:42:55 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #11)
&gt; Comment on attachment 334699 [details]
&gt; Fix to use Seconds class
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334699&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:59
&gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;timeout);
&gt; 
&gt; Should we check the return value before assigning?

That&apos;s safer. I&apos;ll add them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402671</commentid>
    <comment_count>14</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-28 11:20:44 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #12)
&gt; Comment on attachment 334699 [details]
&gt; Fix to use Seconds class
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334699&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:66
&gt; &gt; +        sscanf(str, &quot;%lud&quot;, &amp;timeout);
&gt; 
&gt; Is &apos;sscanf(str, &quot;%u&quot;, &amp;timeout);&apos; sufficient here?


Right. Actually &quot;l&quot; is a bug. I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402722</commentid>
    <comment_count>15</comment_count>
      <attachid>334768</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-28 14:07:51 -0800</bug_when>
    <thetext>Created attachment 334768
FIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402783</commentid>
    <comment_count>16</comment_count>
      <attachid>334768</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-02-28 16:55:47 -0800</bug_when>
    <thetext>Comment on attachment 334768
FIX

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

R=me.

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:67
&gt; +class EnvironmentVariableReader {
&gt; +public:
&gt; +    template&lt;typename T&gt; std::optional&lt;T&gt; readAs(const char* name)
&gt; +    {
&gt; +        if (const char* valueStr = ::getenv(name)) {
&gt; +            T value;
&gt; +            if (sscanf(valueStr, sscanTemplate&lt;T&gt;(), &amp;value) == 1)
&gt; +                return value;
&gt; +        }
&gt; +
&gt; +        return std::nullopt;
&gt; +    }
&gt; +
&gt; +private:
&gt; +    template&lt;typename T&gt; const char* sscanTemplate()
&gt; +    {
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return nullptr;
&gt; +    }
&gt; +
&gt; +    template&lt;&gt; const char* sscanTemplate&lt;unsigned&gt;() { return &quot;%u&quot;; }
&gt; +};
&gt; +

This class could also be put in a header file for reuse. Perhaps we also could consider using a namespace instead?

&gt; Source/WebCore/platform/network/curl/CurlContext.cpp:483
&gt; +    unsigned value = time &gt;= 0.0 ? static_cast&lt;unsigned&gt;(time) : 0;

For the sake of clarity, I think we should use parentheses here: (time &gt;= 0.0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402834</commentid>
    <comment_count>17</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-02-28 23:24:17 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #16)
&gt; Comment on attachment 334768 [details]
&gt; FIX
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334768&amp;action=review
&gt; 
&gt; R=me.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:67
&gt; &gt; +class EnvironmentVariableReader {
&gt; &gt; +public:
&gt; &gt; +    template&lt;typename T&gt; std::optional&lt;T&gt; readAs(const char* name)
&gt; &gt; +    {
&gt; &gt; +        if (const char* valueStr = ::getenv(name)) {
&gt; &gt; +            T value;
&gt; &gt; +            if (sscanf(valueStr, sscanTemplate&lt;T&gt;(), &amp;value) == 1)
&gt; &gt; +                return value;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        return std::nullopt;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    template&lt;typename T&gt; const char* sscanTemplate()
&gt; &gt; +    {
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return nullptr;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    template&lt;&gt; const char* sscanTemplate&lt;unsigned&gt;() { return &quot;%u&quot;; }
&gt; &gt; +};
&gt; &gt; +
&gt; 
&gt; This class could also be put in a header file for reuse. Perhaps we also
&gt; could consider using a namespace instead?

I put this code here in implementation because I shame on using environment variables. Are there any case we gonna use this pattern? We will remove this once we switched to WK2.


&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:483
&gt; &gt; +    unsigned value = time &gt;= 0.0 ? static_cast&lt;unsigned&gt;(time) : 0;
&gt; 
&gt; For the sake of clarity, I think we should use parentheses here: (time &gt;=
&gt; 0.0)

Or move entire conditional statement inside statice_cast:

unsigned value = static_cast&lt;unsigned&gt;(time &gt;= 0.0 ? time : 0);

Much easier to read. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402928</commentid>
    <comment_count>18</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-01 10:17:59 -0800</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #17)
&gt; (In reply to Per Arne Vollan from comment #16)
&gt; &gt; Comment on attachment 334768 [details]
&gt; &gt; FIX
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=334768&amp;action=review
&gt; &gt; 
&gt; &gt; R=me.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:67
&gt; &gt; &gt; +class EnvironmentVariableReader {
&gt; &gt; &gt; +public:
&gt; &gt; &gt; +    template&lt;typename T&gt; std::optional&lt;T&gt; readAs(const char* name)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        if (const char* valueStr = ::getenv(name)) {
&gt; &gt; &gt; +            T value;
&gt; &gt; &gt; +            if (sscanf(valueStr, sscanTemplate&lt;T&gt;(), &amp;value) == 1)
&gt; &gt; &gt; +                return value;
&gt; &gt; &gt; +        }
&gt; &gt; &gt; +
&gt; &gt; &gt; +        return std::nullopt;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +private:
&gt; &gt; &gt; +    template&lt;typename T&gt; const char* sscanTemplate()
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; &gt; +        return nullptr;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    template&lt;&gt; const char* sscanTemplate&lt;unsigned&gt;() { return &quot;%u&quot;; }
&gt; &gt; &gt; +};
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; This class could also be put in a header file for reuse. Perhaps we also
&gt; &gt; could consider using a namespace instead?
&gt; 
&gt; I put this code here in implementation because I shame on using environment
&gt; variables. Are there any case we gonna use this pattern? We will remove this
&gt; once we switched to WK2.

I think there are several places where &apos;getenv&apos; is used, but this could potentially be a follow-up patch.

&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/curl/CurlContext.cpp:483
&gt; &gt; &gt; +    unsigned value = time &gt;= 0.0 ? static_cast&lt;unsigned&gt;(time) : 0;
&gt; &gt; 
&gt; &gt; For the sake of clarity, I think we should use parentheses here: (time &gt;=
&gt; &gt; 0.0)
&gt; 
&gt; Or move entire conditional statement inside statice_cast:
&gt; 
&gt; unsigned value = static_cast&lt;unsigned&gt;(time &gt;= 0.0 ? time : 0);
&gt; 
&gt; Much easier to read. What do you think?

Yes, I think this looks good. You could also use &apos;auto&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402975</commentid>
    <comment_count>19</comment_count>
      <attachid>334833</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 12:00:26 -0800</bug_when>
    <thetext>Created attachment 334833
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402993</commentid>
    <comment_count>20</comment_count>
      <attachid>334833</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-01 12:39:05 -0800</bug_when>
    <thetext>Comment on attachment 334833
PATCH

Clearing flags on attachment: 334833

Committed r229138: &lt;https://trac.webkit.org/changeset/229138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402994</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-01 12:39:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402995</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-01 12:40:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/38036900&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334458</attachid>
            <date>2018-02-22 10:59:16 -0800</date>
            <delta_ts>2018-02-22 13:57:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>182979.diff</filename>
            <type>text/plain</type>
            <size>5564</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTBjYWE0MTIzZi4uOWJiMTAyZjNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMi0yMiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFNwbGl0IEROUyBjYWNoZSBleHBpcmF0aW9uIGFuZCBj
b25uZWN0aW9uIHRpbWVvdXQgc2V0dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3OQorCisgICAgICAgIEl0IHdhcyBtaXMtaW1wbGVtZW50
ZWQgYW5kIHdhcyBuYW1lZCBhbWJpZ3VvdXMgbmFtZSAnZW5hYmxlVGltZW91dCcuCisgICAgICAg
IEltcGxlbWVudCBlYWNoIGZlYXR1cmUgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpzZXREbnNDYWNoZVRpbWVvdXRTZWNvbmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OnNldENvbm5lY3RUaW1lb3V0U2Vjb25k
cyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpzZXRUaW1lb3V0TWlsbGlzZWNvbmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmVuYWJsZVRpbWVvdXQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6c2V0VGltZW91dCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsQ29udGV4dDo6ZG5zQ2FjaGVUaW1lb3V0U2Vjb25kcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6Y29ubmVjdFRpbWVvdXRTZWNvbmRzIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorCiAyMDE4LTAyLTIyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcmVsZWFzZSBh
c3NlcnRzIGZvciBzZXJ2aWNlIHdvcmtlciBmZXRjaCBhbmQgcG9zdE1lc3NhZ2UgZXZlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAppbmRleCA1YTQyOWE5ZjgxNC4uZTEyMTgzNzAzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtNTQsNiAr
NTQsMjAgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKIHsKICAgICBpbml0U2hhcmVIYW5k
bGUoKTsKIAorICAgIGlmIChjb25zdCBjaGFyKiBzdHIgPSBnZXRlbnYoIldFQktJVF9DVVJMX0RO
U19DQUNIRV9USU1FT1VUIikpIHsKKyAgICAgICAgdW5zaWduZWQgc2Vjb25kcyA9IDA7CisgICAg
ICAgIHNzY2FuZihzdHIsICIlbHVkIiwgJnNlY29uZHMpOworCisgICAgICAgIG1fZG5zQ2FjaGVU
aW1lb3V0U2Vjb25kcyA9IHNlY29uZHM7CisgICAgfQorCisgICAgaWYgKGNvbnN0IGNoYXIqIHN0
ciA9IGdldGVudigiV0VCS0lUX0NVUkxfQ09OTkVDVF9USU1FT1VUIikpIHsKKyAgICAgICAgdW5z
aWduZWQgc2Vjb25kcyA9IDA7CisgICAgICAgIHNzY2FuZihzdHIsICIlbHVkIiwgJnNlY29uZHMp
OworCisgICAgICAgIG1fY29ubmVjdFRpbWVvdXRTZWNvbmRzID0gc2Vjb25kczsKK30KKwogI2lm
bmRlZiBOREVCVUcKICAgICBtX3ZlcmJvc2UgPSBnZXRlbnYoIkRFQlVHX0NVUkwiKTsKIApAQCAt
NDQ3LDE2ICs0NjEsMTkgQEAgdm9pZCBDdXJsSGFuZGxlOjplbmFibGVQcm94eUlmRXhpc3RzKCkK
ICAgICB9CiB9CiAKLXZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlVGltZW91dCgpCit2b2lkIEN1cmxI
YW5kbGU6OnNldERuc0NhY2hlVGltZW91dFNlY29uZHModW5zaWduZWQgc2Vjb25kcykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgbG9uZyBkbnNDYWNoZVRpbWVvdXQgPSA1ICogNjA7IC8vIFtzZWMuXQor
ICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQs
IHN0YXRpY19jYXN0PENVUkxvcHRpb24+KHNlY29uZHMpKTsKK30KIAotICAgIGN1cmxfZWFzeV9z
ZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQsIGRuc0NhY2hlVGltZW91
dCk7Cit2b2lkIEN1cmxIYW5kbGU6OnNldENvbm5lY3RUaW1lb3V0U2Vjb25kcyh1bnNpZ25lZCBz
ZWNvbmRzKQoreworICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfQ09OTkVD
VFRJTUVPVVQsIHN0YXRpY19jYXN0PENVUkxvcHRpb24+KHNlY29uZHMpKTsKIH0KIAotdm9pZCBD
dXJsSGFuZGxlOjpzZXRUaW1lb3V0KGxvbmcgdGltZW91dE1pbGxpc2Vjb25kcykKK3ZvaWQgQ3Vy
bEhhbmRsZTo6c2V0VGltZW91dE1pbGxpc2Vjb25kcyh1bnNpZ25lZCBtaWxsaXNlY29uZHMpCiB7
Ci0gICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VSTE9QVF9USU1FT1VUX01TLCB0aW1l
b3V0TWlsbGlzZWNvbmRzKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BU
X1RJTUVPVVRfTVMsIHN0YXRpY19jYXN0PENVUkxvcHRpb24+KG1pbGxpc2Vjb25kcykpOwogfQog
CiB2b2lkIEN1cmxIYW5kbGU6OnNldEhlYWRlckNhbGxiYWNrRnVuY3Rpb24oY3VybF93cml0ZV9j
YWxsYmFjayBjYWxsYmFja0Z1bmMsIHZvaWQqIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAppbmRleCBmNTJiZDU1YjU2
OS4uMjI2MDIwODkwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xMjAsMTggKzEyMCwyNSBAQCBwdWJsaWM6CiAgICAg
Ly8gSFRUUC8yCiAgICAgYm9vbCBpc0h0dHAyRW5hYmxlZCgpIGNvbnN0OwogCisgICAgLy8gVGlt
ZW91dAorICAgIHVuc2lnbmVkIGRuc0NhY2hlVGltZW91dFNlY29uZHMoKSBjb25zdCB7IHJldHVy
biBtX2Ruc0NhY2hlVGltZW91dFNlY29uZHM7IH0KKyAgICB1bnNpZ25lZCBjb25uZWN0VGltZW91
dFNlY29uZHMoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3RUaW1lb3V0U2Vjb25kczsgfQorCiAj
aWZuZGVmIE5ERUJVRwogICAgIEZJTEUqIGdldExvZ0ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2xv
Z0ZpbGU7IH0KICAgICBib29sIGlzVmVyYm9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyYm9zZTsg
fQogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgQ3VybENvbnRleHQoKTsKKyAgICB2b2lkIGluaXRT
aGFyZUhhbmRsZSgpOworCiAgICAgUHJveHlJbmZvIG1fcHJveHk7CiAgICAgQ3VybFNoYXJlSGFu
ZGxlIG1fc2hhcmVIYW5kbGU7CiAgICAgQ3VybFNTTEhhbmRsZSBtX3NzbEhhbmRsZTsKIAotICAg
IEN1cmxDb250ZXh0KCk7Ci0gICAgdm9pZCBpbml0U2hhcmVIYW5kbGUoKTsKKyAgICB1bnNpZ25l
ZCBtX2Ruc0NhY2hlVGltZW91dFNlY29uZHMgeyA1ICogNjAgfTsKKyAgICB1bnNpZ25lZCBtX2Nv
bm5lY3RUaW1lb3V0U2Vjb25kcyB7IDMwIH07CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgRklMRSog
bV9sb2dGaWxlIHsgbnVsbHB0ciB9OwpAQCAtMjUwLDggKzI1Nyw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZW5hYmxlUHJveHlJZkV4aXN0cygpOwogCi0gICAgdm9pZCBlbmFibGVUaW1lb3V0KCk7
Ci0gICAgdm9pZCBzZXRUaW1lb3V0KGxvbmcgdGltZW91dE1pbGxpc2Vjb25kcyk7CisgICAgdm9p
ZCBzZXREbnNDYWNoZVRpbWVvdXRTZWNvbmRzKHVuc2lnbmVkKTsKKyAgICB2b2lkIHNldENvbm5l
Y3RUaW1lb3V0U2Vjb25kcyh1bnNpZ25lZCk7CisgICAgdm9pZCBzZXRUaW1lb3V0TWlsbGlzZWNv
bmRzKHVuc2lnbmVkKTsKIAogICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uCiAgICAgdm9pZCBzZXRI
ZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGN1cmxfd3JpdGVfY2FsbGJhY2ssIHZvaWQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CmluZGV4IDAzNjUzN2Y4YTUzLi5kN2ZkNGRlNTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xOTQsMTAgKzE5
NCwxMSBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgbV9jdXJsSGFu
ZGxlLT5lbmFibGVTaGFyZUhhbmRsZSgpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWxsb3dl
ZFByb3RvY29scygpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWNjZXB0RW5jb2RpbmcoKTsK
LSAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZVRpbWVvdXQoKTsKIAotICAgIGxvbmcgdGltZW91dE1p
bGxpc2Vjb25kcyA9IChtX3JlcXVlc3QudGltZW91dEludGVydmFsKCkgPiAwLjApID8gc3RhdGlj
X2Nhc3Q8bG9uZz4obV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpICogMTAwMC4wKSA6IDA7Ci0g
ICAgbV9jdXJsSGFuZGxlLT5zZXRUaW1lb3V0KHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAgIHVu
c2lnbmVkIHRpbWVvdXRNaWxsaXNlY29uZHMgPSAobV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgp
ID4gMC4wKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3JlcXVlc3QudGltZW91dEludGVydmFs
KCkgKiAxMDAwLjApIDogMDsKKyAgICBtX2N1cmxIYW5kbGUtPnNldFRpbWVvdXRNaWxsaXNlY29u
ZHModGltZW91dE1pbGxpc2Vjb25kcyk7CisgICAgbV9jdXJsSGFuZGxlLT5zZXREbnNDYWNoZVRp
bWVvdXRTZWNvbmRzKEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5kbnNDYWNoZVRpbWVvdXRTZWNv
bmRzKCkpOworICAgIG1fY3VybEhhbmRsZS0+c2V0Q29ubmVjdFRpbWVvdXRTZWNvbmRzKEN1cmxD
b250ZXh0OjpzaW5nbGV0b24oKS5jb25uZWN0VGltZW91dFNlY29uZHMoKSk7CiAKICAgICBtX2N1
cmxIYW5kbGUtPmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334475</attachid>
            <date>2018-02-22 13:57:38 -0800</date>
            <delta_ts>2018-02-27 12:25:28 -0800</delta_ts>
            <desc>style fix</desc>
            <filename>182979.diff</filename>
            <type>text/plain</type>
            <size>5568</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTBjYWE0MTIzZi4uOWJiMTAyZjNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMi0yMiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFNwbGl0IEROUyBjYWNoZSBleHBpcmF0aW9uIGFuZCBj
b25uZWN0aW9uIHRpbWVvdXQgc2V0dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3OQorCisgICAgICAgIEl0IHdhcyBtaXMtaW1wbGVtZW50
ZWQgYW5kIHdhcyBuYW1lZCBhbWJpZ3VvdXMgbmFtZSAnZW5hYmxlVGltZW91dCcuCisgICAgICAg
IEltcGxlbWVudCBlYWNoIGZlYXR1cmUgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpzZXREbnNDYWNoZVRpbWVvdXRTZWNvbmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OnNldENvbm5lY3RUaW1lb3V0U2Vjb25k
cyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpzZXRUaW1lb3V0TWlsbGlzZWNvbmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmVuYWJsZVRpbWVvdXQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6c2V0VGltZW91dCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsQ29udGV4dDo6ZG5zQ2FjaGVUaW1lb3V0U2Vjb25kcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6Y29ubmVjdFRpbWVvdXRTZWNvbmRzIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorCiAyMDE4LTAyLTIyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcmVsZWFzZSBh
c3NlcnRzIGZvciBzZXJ2aWNlIHdvcmtlciBmZXRjaCBhbmQgcG9zdE1lc3NhZ2UgZXZlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAppbmRleCA1YTQyOWE5ZjgxNC4uYWU3NjFhNGEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtNTQsNiAr
NTQsMjAgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKIHsKICAgICBpbml0U2hhcmVIYW5k
bGUoKTsKIAorICAgIGlmIChjb25zdCBjaGFyKiBzdHIgPSBnZXRlbnYoIldFQktJVF9DVVJMX0RO
U19DQUNIRV9USU1FT1VUIikpIHsKKyAgICAgICAgdW5zaWduZWQgc2Vjb25kcyA9IDA7CisgICAg
ICAgIHNzY2FuZihzdHIsICIlbHVkIiwgJnNlY29uZHMpOworCisgICAgICAgIG1fZG5zQ2FjaGVU
aW1lb3V0U2Vjb25kcyA9IHNlY29uZHM7CisgICAgfQorCisgICAgaWYgKGNvbnN0IGNoYXIqIHN0
ciA9IGdldGVudigiV0VCS0lUX0NVUkxfQ09OTkVDVF9USU1FT1VUIikpIHsKKyAgICAgICAgdW5z
aWduZWQgc2Vjb25kcyA9IDA7CisgICAgICAgIHNzY2FuZihzdHIsICIlbHVkIiwgJnNlY29uZHMp
OworCisgICAgICAgIG1fY29ubmVjdFRpbWVvdXRTZWNvbmRzID0gc2Vjb25kczsKKyAgICB9CisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZ2V0ZW52KCJERUJVR19DVVJMIik7CiAK
QEAgLTQ0NywxNiArNDYxLDE5IEBAIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlUHJveHlJZkV4aXN0
cygpCiAgICAgfQogfQogCi12b2lkIEN1cmxIYW5kbGU6OmVuYWJsZVRpbWVvdXQoKQordm9pZCBD
dXJsSGFuZGxlOjpzZXREbnNDYWNoZVRpbWVvdXRTZWNvbmRzKHVuc2lnbmVkIHNlY29uZHMpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGxvbmcgZG5zQ2FjaGVUaW1lb3V0ID0gNSAqIDYwOyAvLyBbc2Vj
Ll0KKyAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0ROU19DQUNIRV9USU1F
T1VULCBzdGF0aWNfY2FzdDxDVVJMb3B0aW9uPihzZWNvbmRzKSk7Cit9CiAKLSAgICBjdXJsX2Vh
c3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCBkbnNDYWNoZVRp
bWVvdXQpOwordm9pZCBDdXJsSGFuZGxlOjpzZXRDb25uZWN0VGltZW91dFNlY29uZHModW5zaWdu
ZWQgc2Vjb25kcykKK3sKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0NP
Tk5FQ1RUSU1FT1VULCBzdGF0aWNfY2FzdDxDVVJMb3B0aW9uPihzZWNvbmRzKSk7CiB9CiAKLXZv
aWQgQ3VybEhhbmRsZTo6c2V0VGltZW91dChsb25nIHRpbWVvdXRNaWxsaXNlY29uZHMpCit2b2lk
IEN1cmxIYW5kbGU6OnNldFRpbWVvdXRNaWxsaXNlY29uZHModW5zaWduZWQgbWlsbGlzZWNvbmRz
KQogewotICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfVElNRU9VVF9NUywg
dGltZW91dE1pbGxpc2Vjb25kcyk7CisgICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VS
TE9QVF9USU1FT1VUX01TLCBzdGF0aWNfY2FzdDxDVVJMb3B0aW9uPihtaWxsaXNlY29uZHMpKTsK
IH0KIAogdm9pZCBDdXJsSGFuZGxlOjpzZXRIZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGN1cmxfd3Jp
dGVfY2FsbGJhY2sgY2FsbGJhY2tGdW5jLCB2b2lkKiB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggZjUyYmQ1
NWI1NjkuLjIyNjAyMDg5MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApAQCAtMTIwLDE4ICsxMjAsMjUgQEAgcHVibGljOgog
ICAgIC8vIEhUVFAvMgogICAgIGJvb2wgaXNIdHRwMkVuYWJsZWQoKSBjb25zdDsKIAorICAgIC8v
IFRpbWVvdXQKKyAgICB1bnNpZ25lZCBkbnNDYWNoZVRpbWVvdXRTZWNvbmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kbnNDYWNoZVRpbWVvdXRTZWNvbmRzOyB9CisgICAgdW5zaWduZWQgY29ubmVjdFRp
bWVvdXRTZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0VGltZW91dFNlY29uZHM7IH0K
KwogI2lmbmRlZiBOREVCVUcKICAgICBGSUxFKiBnZXRMb2dGaWxlKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dGaWxlOyB9CiAgICAgYm9vbCBpc1ZlcmJvc2UoKSBjb25zdCB7IHJldHVybiBtX3ZlcmJv
c2U7IH0KICNlbmRpZgogCiBwcml2YXRlOgorICAgIEN1cmxDb250ZXh0KCk7CisgICAgdm9pZCBp
bml0U2hhcmVIYW5kbGUoKTsKKwogICAgIFByb3h5SW5mbyBtX3Byb3h5OwogICAgIEN1cmxTaGFy
ZUhhbmRsZSBtX3NoYXJlSGFuZGxlOwogICAgIEN1cmxTU0xIYW5kbGUgbV9zc2xIYW5kbGU7CiAK
LSAgICBDdXJsQ29udGV4dCgpOwotICAgIHZvaWQgaW5pdFNoYXJlSGFuZGxlKCk7CisgICAgdW5z
aWduZWQgbV9kbnNDYWNoZVRpbWVvdXRTZWNvbmRzIHsgNSAqIDYwIH07CisgICAgdW5zaWduZWQg
bV9jb25uZWN0VGltZW91dFNlY29uZHMgeyAzMCB9OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIEZJ
TEUqIG1fbG9nRmlsZSB7IG51bGxwdHIgfTsKQEAgLTI1MCw4ICsyNTcsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAotICAgIHZvaWQgZW5hYmxlVGltZW91
dCgpOwotICAgIHZvaWQgc2V0VGltZW91dChsb25nIHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAg
IHZvaWQgc2V0RG5zQ2FjaGVUaW1lb3V0U2Vjb25kcyh1bnNpZ25lZCk7CisgICAgdm9pZCBzZXRD
b25uZWN0VGltZW91dFNlY29uZHModW5zaWduZWQpOworICAgIHZvaWQgc2V0VGltZW91dE1pbGxp
c2Vjb25kcyh1bnNpZ25lZCk7CiAKICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbgogICAgIHZvaWQg
c2V0SGVhZGVyQ2FsbGJhY2tGdW5jdGlvbihjdXJsX3dyaXRlX2NhbGxiYWNrLCB2b2lkKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAppbmRleCAwMzY1MzdmOGE1My4uZDdmZDRkZTU4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTk0LDEw
ICsxOTQsMTEgQEAgQ1VSTCogQ3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIoKQogICAgIG1fY3Vy
bEhhbmRsZS0+ZW5hYmxlU2hhcmVIYW5kbGUoKTsKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUFs
bG93ZWRQcm90b2NvbHMoKTsKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUFjY2VwdEVuY29kaW5n
KCk7Ci0gICAgbV9jdXJsSGFuZGxlLT5lbmFibGVUaW1lb3V0KCk7CiAKLSAgICBsb25nIHRpbWVv
dXRNaWxsaXNlY29uZHMgPSAobV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpID4gMC4wKSA/IHN0
YXRpY19jYXN0PGxvbmc+KG1fcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSAqIDEwMDAuMCkgOiAw
OwotICAgIG1fY3VybEhhbmRsZS0+c2V0VGltZW91dCh0aW1lb3V0TWlsbGlzZWNvbmRzKTsKKyAg
ICB1bnNpZ25lZCB0aW1lb3V0TWlsbGlzZWNvbmRzID0gKG1fcmVxdWVzdC50aW1lb3V0SW50ZXJ2
YWwoKSA+IDAuMCkgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9yZXF1ZXN0LnRpbWVvdXRJbnRl
cnZhbCgpICogMTAwMC4wKSA6IDA7CisgICAgbV9jdXJsSGFuZGxlLT5zZXRUaW1lb3V0TWlsbGlz
ZWNvbmRzKHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAgIG1fY3VybEhhbmRsZS0+c2V0RG5zQ2Fj
aGVUaW1lb3V0U2Vjb25kcyhDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuZG5zQ2FjaGVUaW1lb3V0
U2Vjb25kcygpKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldENvbm5lY3RUaW1lb3V0U2Vjb25kcyhD
dXJsQ29udGV4dDo6c2luZ2xldG9uKCkuY29ubmVjdFRpbWVvdXRTZWNvbmRzKCkpOwogCiAgICAg
bV9jdXJsSGFuZGxlLT5lbmFibGVQcm94eUlmRXhpc3RzKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334699</attachid>
            <date>2018-02-27 12:25:28 -0800</date>
            <delta_ts>2018-02-28 14:07:51 -0800</delta_ts>
            <desc>Fix to use Seconds class</desc>
            <filename>182979.diff</filename>
            <type>text/plain</type>
            <size>5606</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTBjYWE0MTIzZi4uYjM1ZDU0YTAyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMi0yNyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFNwbGl0IEROUyBjYWNoZSBleHBpcmF0aW9uIGFuZCBj
b25uZWN0aW9uIHRpbWVvdXQgc2V0dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3OQorCisgICAgICAgIEl0IHdhcyBtaXMtaW1wbGVtZW50
ZWQgYW5kIHdhcyBuYW1lZCBhbWJpZ3VvdXMgbmFtZSAnZW5hYmxlVGltZW91dCcuCisgICAgICAg
IEltcGxlbWVudCBlYWNoIGZlYXR1cmUgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpzYWZlVGltZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxIYW5kbGU6OnNldERuc0NhY2hlVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFu
ZGxlOjpzZXRDb25uZWN0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpz
ZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmVuYWJsZVRpbWVvdXQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OmRuc0NhY2hlVGltZW91dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6Y29ubmVjdFRpbWVvdXQgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisKIDIwMTgtMDItMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCByZWxlYXNlIGFz
c2VydHMgZm9yIHNlcnZpY2Ugd29ya2VyIGZldGNoIGFuZCBwb3N0TWVzc2FnZSBldmVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
Y3BwCmluZGV4IDVhNDI5YTlmODE0Li5lNGUzZTg3YjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC01NCw2ICs1
NCwyMCBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogewogICAgIGluaXRTaGFyZUhhbmRs
ZSgpOwogCisgICAgaWYgKGNvbnN0IGNoYXIqIHN0ciA9IGdldGVudigiV0VCS0lUX0NVUkxfRE5T
X0NBQ0hFX1RJTUVPVVQiKSkgeworICAgICAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICAg
ICAgc3NjYW5mKHN0ciwgIiVsdWQiLCAmdGltZW91dCk7CisKKyAgICAgICAgbV9kbnNDYWNoZVRp
bWVvdXQgPSBTZWNvbmRzKHRpbWVvdXQpOworICAgIH0KKworICAgIGlmIChjb25zdCBjaGFyKiBz
dHIgPSBnZXRlbnYoIldFQktJVF9DVVJMX0NPTk5FQ1RfVElNRU9VVCIpKSB7CisgICAgICAgIHVu
c2lnbmVkIHRpbWVvdXQgPSAwOworICAgICAgICBzc2NhbmYoc3RyLCAiJWx1ZCIsICZ0aW1lb3V0
KTsKKworICAgICAgICBtX2Nvbm5lY3RUaW1lb3V0ID0gU2Vjb25kcyh0aW1lb3V0KTsKKyAgICB9
CisKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZ2V0ZW52KCJERUJVR19DVVJMIik7
CiAKQEAgLTQ0NywxNiArNDYxLDI1IEBAIHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlUHJveHlJZkV4
aXN0cygpCiAgICAgfQogfQogCi12b2lkIEN1cmxIYW5kbGU6OmVuYWJsZVRpbWVvdXQoKQorc3Rh
dGljIENVUkxvcHRpb24gc2FmZVRpbWVWYWx1ZShkb3VibGUgdGltZSkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgbG9uZyBkbnNDYWNoZVRpbWVvdXQgPSA1ICogNjA7IC8vIFtzZWMuXQorICAgIHVuc2ln
bmVkIHZhbHVlID0gdGltZSA+PSAwLjAgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGltZSkgOiAw
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDVVJMb3B0aW9uPih2YWx1ZSk7Cit9CiAKLSAgICBj
dXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCBkbnND
YWNoZVRpbWVvdXQpOwordm9pZCBDdXJsSGFuZGxlOjpzZXREbnNDYWNoZVRpbWVvdXQoU2Vjb25k
cyB0aW1lb3V0KQoreworICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfRE5T
X0NBQ0hFX1RJTUVPVVQsIHNhZmVUaW1lVmFsdWUodGltZW91dC5zZWNvbmRzKCkpKTsKK30KKwor
dm9pZCBDdXJsSGFuZGxlOjpzZXRDb25uZWN0VGltZW91dChTZWNvbmRzIHRpbWVvdXQpCit7Cisg
ICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgc2Fm
ZVRpbWVWYWx1ZSh0aW1lb3V0LnNlY29uZHMoKSkpOwogfQogCi12b2lkIEN1cmxIYW5kbGU6OnNl
dFRpbWVvdXQobG9uZyB0aW1lb3V0TWlsbGlzZWNvbmRzKQordm9pZCBDdXJsSGFuZGxlOjpzZXRU
aW1lb3V0KFNlY29uZHMgdGltZW91dCkKIHsKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxl
LCBDVVJMT1BUX1RJTUVPVVRfTVMsIHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAgIGN1cmxfZWFz
eV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfVElNRU9VVF9NUywgc2FmZVRpbWVWYWx1ZSh0aW1l
b3V0Lm1pbGxpc2Vjb25kcygpKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6c2V0SGVhZGVyQ2Fs
bGJhY2tGdW5jdGlvbihjdXJsX3dyaXRlX2NhbGxiYWNrIGNhbGxiYWNrRnVuYywgdm9pZCogdXNl
ckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5oCmluZGV4IGY1MmJkNTViNTY5Li45YWZjMDEzNjAyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNv
bmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgT1MoV0lORE9XUykKQEAg
LTEyMCwxOCArMTIxLDI1IEBAIHB1YmxpYzoKICAgICAvLyBIVFRQLzIKICAgICBib29sIGlzSHR0
cDJFbmFibGVkKCkgY29uc3Q7CiAKKyAgICAvLyBUaW1lb3V0CisgICAgU2Vjb25kcyBkbnNDYWNo
ZVRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX2Ruc0NhY2hlVGltZW91dDsgfQorICAgIFNlY29u
ZHMgY29ubmVjdFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3RUaW1lb3V0OyB9CisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgRklMRSogZ2V0TG9nRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nRmlsZTsgfQogICAgIGJvb2wgaXNWZXJib3NlKCkgY29uc3QgeyByZXR1cm4gbV92ZXJib3Nl
OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBDdXJsQ29udGV4dCgpOworICAgIHZvaWQgaW5p
dFNoYXJlSGFuZGxlKCk7CisKICAgICBQcm94eUluZm8gbV9wcm94eTsKICAgICBDdXJsU2hhcmVI
YW5kbGUgbV9zaGFyZUhhbmRsZTsKICAgICBDdXJsU1NMSGFuZGxlIG1fc3NsSGFuZGxlOwogCi0g
ICAgQ3VybENvbnRleHQoKTsKLSAgICB2b2lkIGluaXRTaGFyZUhhbmRsZSgpOworICAgIFNlY29u
ZHMgbV9kbnNDYWNoZVRpbWVvdXQgeyBTZWNvbmRzOjpmcm9tTWludXRlcyg1KSB9OworICAgIFNl
Y29uZHMgbV9jb25uZWN0VGltZW91dCB7IDMwLjAgfTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBG
SUxFKiBtX2xvZ0ZpbGUgeyBudWxscHRyIH07CkBAIC0yNTAsOCArMjU4LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmFibGVQcm94eUlmRXhpc3RzKCk7CiAKLSAgICB2b2lkIGVuYWJsZVRpbWVv
dXQoKTsKLSAgICB2b2lkIHNldFRpbWVvdXQobG9uZyB0aW1lb3V0TWlsbGlzZWNvbmRzKTsKKyAg
ICB2b2lkIHNldERuc0NhY2hlVGltZW91dChTZWNvbmRzKTsKKyAgICB2b2lkIHNldENvbm5lY3RU
aW1lb3V0KFNlY29uZHMpOworICAgIHZvaWQgc2V0VGltZW91dChTZWNvbmRzKTsKIAogICAgIC8v
IENhbGxiYWNrIGZ1bmN0aW9uCiAgICAgdm9pZCBzZXRIZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGN1
cmxfd3JpdGVfY2FsbGJhY2ssIHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDAzNjUzN2Y4YTUzLi41YTc4
M2ZkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xOTQsMTAgKzE5NCwxMCBAQCBDVVJMKiBDdXJsUmVxdWVz
dDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVTaGFyZUhhbmRsZSgp
OwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWxsb3dlZFByb3RvY29scygpOwogICAgIG1fY3Vy
bEhhbmRsZS0+ZW5hYmxlQWNjZXB0RW5jb2RpbmcoKTsKLSAgICBtX2N1cmxIYW5kbGUtPmVuYWJs
ZVRpbWVvdXQoKTsKIAotICAgIGxvbmcgdGltZW91dE1pbGxpc2Vjb25kcyA9IChtX3JlcXVlc3Qu
dGltZW91dEludGVydmFsKCkgPiAwLjApID8gc3RhdGljX2Nhc3Q8bG9uZz4obV9yZXF1ZXN0LnRp
bWVvdXRJbnRlcnZhbCgpICogMTAwMC4wKSA6IDA7Ci0gICAgbV9jdXJsSGFuZGxlLT5zZXRUaW1l
b3V0KHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAgIG1fY3VybEhhbmRsZS0+c2V0VGltZW91dChT
ZWNvbmRzKG1fcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSkpOworICAgIG1fY3VybEhhbmRsZS0+
c2V0RG5zQ2FjaGVUaW1lb3V0KEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5kbnNDYWNoZVRpbWVv
dXQoKSk7CisgICAgbV9jdXJsSGFuZGxlLT5zZXRDb25uZWN0VGltZW91dChDdXJsQ29udGV4dDo6
c2luZ2xldG9uKCkuY29ubmVjdFRpbWVvdXQoKSk7CiAKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJs
ZVByb3h5SWZFeGlzdHMoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334768</attachid>
            <date>2018-02-28 14:07:51 -0800</date>
            <delta_ts>2018-03-01 12:00:26 -0800</delta_ts>
            <desc>FIX</desc>
            <filename>182979.diff</filename>
            <type>text/plain</type>
            <size>6422</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTBjYWE0MTIzZi4uZjQ3MjZjMTNhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOC0wMi0yOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFNwbGl0IEROUyBjYWNoZSBleHBpcmF0aW9uIGFuZCBj
b25uZWN0aW9uIHRpbWVvdXQgc2V0dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3OQorCisgICAgICAgIEl0IHdhcyBtaXMtaW1wbGVtZW50
ZWQgYW5kIHdhcyBuYW1lZCBhbWJpZ3VvdXMgbmFtZSAnZW5hYmxlVGltZW91dCcuCisgICAgICAg
IEltcGxlbWVudCBlYWNoIGZlYXR1cmUgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudmlyb25tZW50VmFyaWFibGVSZWFkZXI6
OnJlYWRBcyk6CisgICAgICAgIChXZWJDb3JlOjpFbnZpcm9ubWVudFZhcmlhYmxlUmVhZGVyOjpz
c2NhblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVudmlyb25tZW50VmFyaWFibGVSZWFk
ZXI6OnNzY2FuVGVtcGxhdGU8dW5zaWduZWQ+KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250
ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpzYWZlVGltZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OnNldERuc0NhY2hlVGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsSGFuZGxlOjpzZXRDb25uZWN0VGltZW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsSGFuZGxlOjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5k
bGU6OmVuYWJsZVRpbWVvdXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OmRuc0Nh
Y2hlVGltZW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6Y29ubmVj
dFRpbWVvdXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6
CisKIDIwMTgtMDItMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCByZWxlYXNlIGFzc2VydHMgZm9yIHNlcnZpY2Ugd29ya2VyIGZldGNoIGFuZCBwb3N0
TWVzc2FnZSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDVhNDI5YTlmODE0Li4zOGEyMTBiMjc3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCkBAIC00Miw2ICs0MiwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEVudmlyb25tZW50VmFyaWFibGVSZWFkZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0ZDo6b3B0aW9uYWw8VD4gcmVhZEFzKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgewor
ICAgICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVTdHIgPSA6OmdldGVudihuYW1lKSkgeworICAg
ICAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChzc2NhbmYodmFsdWVTdHIsIHNzY2Fu
VGVtcGxhdGU8VD4oKSwgJnZhbHVlKSA9PSAxKQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCitw
cml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IGNoYXIqIHNzY2FuVGVtcGxh
dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHRlbXBsYXRlPD4gY29uc3QgY2hhciogc3NjYW5UZW1w
bGF0ZTx1bnNpZ25lZD4oKSB7IHJldHVybiAiJXUiOyB9Cit9OworCiAvLyBDdXJsQ29udGV4dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIEN1cmxDb250ZXh0JiBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkKQEAgLTU0
LDYgKzc3LDE0IEBAIEN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCgpCiB7CiAgICAgaW5pdFNoYXJl
SGFuZGxlKCk7CiAKKyAgICBFbnZpcm9ubWVudFZhcmlhYmxlUmVhZGVyIGVudlZhcjsKKworICAg
IGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczx1bnNpZ25lZD4oIldFQktJVF9DVVJMX0RO
U19DQUNIRV9USU1FT1VUIikpCisgICAgICAgIG1fZG5zQ2FjaGVUaW1lb3V0ID0gU2Vjb25kcygq
dmFsdWUpOworCisgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHVuc2lnbmVkPigi
V0VCS0lUX0NVUkxfQ09OTkVDVF9USU1FT1VUIikpCisgICAgICAgIG1fY29ubmVjdFRpbWVvdXQg
PSBTZWNvbmRzKCp2YWx1ZSk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZ2V0
ZW52KCJERUJVR19DVVJMIik7CiAKQEAgLTQ0NywxNiArNDc4LDI1IEBAIHZvaWQgQ3VybEhhbmRs
ZTo6ZW5hYmxlUHJveHlJZkV4aXN0cygpCiAgICAgfQogfQogCi12b2lkIEN1cmxIYW5kbGU6OmVu
YWJsZVRpbWVvdXQoKQorc3RhdGljIENVUkxvcHRpb24gc2FmZVRpbWVWYWx1ZShkb3VibGUgdGlt
ZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgbG9uZyBkbnNDYWNoZVRpbWVvdXQgPSA1ICogNjA7IC8v
IFtzZWMuXQorICAgIHVuc2lnbmVkIHZhbHVlID0gdGltZSA+PSAwLjAgPyBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGltZSkgOiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDVVJMb3B0aW9uPih2
YWx1ZSk7Cit9CiAKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0ROU19D
QUNIRV9USU1FT1VULCBkbnNDYWNoZVRpbWVvdXQpOwordm9pZCBDdXJsSGFuZGxlOjpzZXREbnND
YWNoZVRpbWVvdXQoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIGN1cmxfZWFzeV9zZXRvcHQobV9o
YW5kbGUsIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQsIHNhZmVUaW1lVmFsdWUodGltZW91dC5z
ZWNvbmRzKCkpKTsKK30KKwordm9pZCBDdXJsSGFuZGxlOjpzZXRDb25uZWN0VGltZW91dChTZWNv
bmRzIHRpbWVvdXQpCit7CisgICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VSTE9QVF9D
T05ORUNUVElNRU9VVCwgc2FmZVRpbWVWYWx1ZSh0aW1lb3V0LnNlY29uZHMoKSkpOwogfQogCi12
b2lkIEN1cmxIYW5kbGU6OnNldFRpbWVvdXQobG9uZyB0aW1lb3V0TWlsbGlzZWNvbmRzKQordm9p
ZCBDdXJsSGFuZGxlOjpzZXRUaW1lb3V0KFNlY29uZHMgdGltZW91dCkKIHsKLSAgICBjdXJsX2Vh
c3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1RJTUVPVVRfTVMsIHRpbWVvdXRNaWxsaXNlY29u
ZHMpOworICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfVElNRU9VVF9NUywg
c2FmZVRpbWVWYWx1ZSh0aW1lb3V0Lm1pbGxpc2Vjb25kcygpKSk7CiB9CiAKIHZvaWQgQ3VybEhh
bmRsZTo6c2V0SGVhZGVyQ2FsbGJhY2tGdW5jdGlvbihjdXJsX3dyaXRlX2NhbGxiYWNrIGNhbGxi
YWNrRnVuYywgdm9pZCogdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IGY1MmJkNTViNTY5Li45YWZjMDEzNjAy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAj
aWYgT1MoV0lORE9XUykKQEAgLTEyMCwxOCArMTIxLDI1IEBAIHB1YmxpYzoKICAgICAvLyBIVFRQ
LzIKICAgICBib29sIGlzSHR0cDJFbmFibGVkKCkgY29uc3Q7CiAKKyAgICAvLyBUaW1lb3V0Cisg
ICAgU2Vjb25kcyBkbnNDYWNoZVRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX2Ruc0NhY2hlVGlt
ZW91dDsgfQorICAgIFNlY29uZHMgY29ubmVjdFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3RUaW1lb3V0OyB9CisKICNpZm5kZWYgTkRFQlVHCiAgICAgRklMRSogZ2V0TG9nRmlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nRmlsZTsgfQogICAgIGJvb2wgaXNWZXJib3NlKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJib3NlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBDdXJsQ29udGV4
dCgpOworICAgIHZvaWQgaW5pdFNoYXJlSGFuZGxlKCk7CisKICAgICBQcm94eUluZm8gbV9wcm94
eTsKICAgICBDdXJsU2hhcmVIYW5kbGUgbV9zaGFyZUhhbmRsZTsKICAgICBDdXJsU1NMSGFuZGxl
IG1fc3NsSGFuZGxlOwogCi0gICAgQ3VybENvbnRleHQoKTsKLSAgICB2b2lkIGluaXRTaGFyZUhh
bmRsZSgpOworICAgIFNlY29uZHMgbV9kbnNDYWNoZVRpbWVvdXQgeyBTZWNvbmRzOjpmcm9tTWlu
dXRlcyg1KSB9OworICAgIFNlY29uZHMgbV9jb25uZWN0VGltZW91dCB7IDMwLjAgfTsKIAogI2lm
bmRlZiBOREVCVUcKICAgICBGSUxFKiBtX2xvZ0ZpbGUgeyBudWxscHRyIH07CkBAIC0yNTAsOCAr
MjU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmFibGVQcm94eUlmRXhpc3RzKCk7CiAKLSAg
ICB2b2lkIGVuYWJsZVRpbWVvdXQoKTsKLSAgICB2b2lkIHNldFRpbWVvdXQobG9uZyB0aW1lb3V0
TWlsbGlzZWNvbmRzKTsKKyAgICB2b2lkIHNldERuc0NhY2hlVGltZW91dChTZWNvbmRzKTsKKyAg
ICB2b2lkIHNldENvbm5lY3RUaW1lb3V0KFNlY29uZHMpOworICAgIHZvaWQgc2V0VGltZW91dChT
ZWNvbmRzKTsKIAogICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uCiAgICAgdm9pZCBzZXRIZWFkZXJD
YWxsYmFja0Z1bmN0aW9uKGN1cmxfd3JpdGVfY2FsbGJhY2ssIHZvaWQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4
IDAzNjUzN2Y4YTUzLi41YTc4M2ZkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xOTQsMTAgKzE5NCwxMCBA
QCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgbV9jdXJsSGFuZGxlLT5l
bmFibGVTaGFyZUhhbmRsZSgpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWxsb3dlZFByb3Rv
Y29scygpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWNjZXB0RW5jb2RpbmcoKTsKLSAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZVRpbWVvdXQoKTsKIAotICAgIGxvbmcgdGltZW91dE1pbGxpc2Vj
b25kcyA9IChtX3JlcXVlc3QudGltZW91dEludGVydmFsKCkgPiAwLjApID8gc3RhdGljX2Nhc3Q8
bG9uZz4obV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpICogMTAwMC4wKSA6IDA7Ci0gICAgbV9j
dXJsSGFuZGxlLT5zZXRUaW1lb3V0KHRpbWVvdXRNaWxsaXNlY29uZHMpOworICAgIG1fY3VybEhh
bmRsZS0+c2V0VGltZW91dChTZWNvbmRzKG1fcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSkpOwor
ICAgIG1fY3VybEhhbmRsZS0+c2V0RG5zQ2FjaGVUaW1lb3V0KEN1cmxDb250ZXh0OjpzaW5nbGV0
b24oKS5kbnNDYWNoZVRpbWVvdXQoKSk7CisgICAgbV9jdXJsSGFuZGxlLT5zZXRDb25uZWN0VGlt
ZW91dChDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuY29ubmVjdFRpbWVvdXQoKSk7CiAKICAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAo=
</data>
<flag name="review"
          id="353485"
          type_id="1"
          status="+"
          setter="pvollan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334833</attachid>
            <date>2018-03-01 12:00:26 -0800</date>
            <delta_ts>2018-03-01 12:39:05 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>182979.diff</filename>
            <type>text/plain</type>
            <size>6947</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTBjYWE0MTIzZi4uNjg0MzExMjgzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOC0wMy0wMSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFNwbGl0IEROUyBjYWNoZSBleHBpcmF0aW9uIGFuZCBj
b25uZWN0aW9uIHRpbWVvdXQgc2V0dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3OQorCisgICAgICAgIEl0IHdhcyBtaXMtaW1wbGVtZW50
ZWQgYW5kIHdhcyBuYW1lZCBhbWJpZ3VvdXMgbmFtZSAnZW5hYmxlVGltZW91dCcuCisgICAgICAg
IEltcGxlbWVudCBlYWNoIGZlYXR1cmUgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IFBlciBBcm5lIFZvbGxhbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbnZpcm9ubWVudFZhcmlhYmxlUmVhZGVy
OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVudmlyb25tZW50VmFyaWFibGVSZWFkZXI6OmRl
ZmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6RW52aXJvbm1lbnRWYXJpYWJsZVJlYWRlcjo6cmVh
ZEFzKToKKyAgICAgICAgKFdlYkNvcmU6OkVudmlyb25tZW50VmFyaWFibGVSZWFkZXI6OnNzY2Fu
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RW52aXJvbm1lbnRWYXJpYWJsZVJlYWRlcjo6
c3NjYW5UZW1wbGF0ZTx1bnNpZ25lZD4pOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6
OkN1cmxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmVUaW1lVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6c2V0RG5zQ2FjaGVUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxIYW5kbGU6OnNldENvbm5lY3RUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxIYW5kbGU6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6
ZW5hYmxlVGltZW91dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6ZG5zQ2FjaGVU
aW1lb3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0Ojpjb25uZWN0VGlt
ZW91dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKToKKwog
MjAxOC0wMi0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJlbGVhc2UgYXNzZXJ0cyBmb3Igc2VydmljZSB3b3JrZXIgZmV0Y2ggYW5kIHBvc3RNZXNz
YWdlIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAKaW5kZXggNWE0MjlhOWY4MTQuLmJhYjEzOTc4YTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5j
cHAKQEAgLTQyLDYgKzQyLDMzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRW52
aXJvbm1lbnRWYXJpYWJsZVJlYWRlciB7CitwdWJsaWM6CisgICAgY29uc3QgY2hhciogcmVhZChj
b25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiA6OmdldGVudihuYW1lKTsgfQorICAgIGJvb2wgZGVm
aW5lZChjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiByZWFkKG5hbWUpICE9IG51bGxwdHI7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0ZDo6b3B0aW9uYWw8VD4gcmVhZEFzKGNvbnN0
IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVTdHIgPSBy
ZWFkKG5hbWUpKSB7CisgICAgICAgICAgICBUIHZhbHVlOworICAgICAgICAgICAgaWYgKHNzY2Fu
Zih2YWx1ZVN0ciwgc3NjYW5UZW1wbGF0ZTxUPigpLCAmdmFsdWUpID09IDEpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Qg
Y2hhciogc3NjYW5UZW1wbGF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gZGVmaW5lIHNwZWNp
YWxpemVkIG1lbWJlciBmdW5jdGlvbiBmb3Igc3BlY2lmaWMgdHlwZS4KKyAgICB0ZW1wbGF0ZTw+
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzc2NhblRlbXBsYXRlPHVuc2lnbmVkPigpIHsgcmV0dXJu
ICIldSI7IH0KK307CisKIC8vIEN1cmxDb250ZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQ3VybENvbnRleHQm
IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKQpAQCAtNTQsMTAgKzgxLDE4IEBAIEN1cmxDb250ZXh0
OjpDdXJsQ29udGV4dCgpCiB7CiAgICAgaW5pdFNoYXJlSGFuZGxlKCk7CiAKKyAgICBFbnZpcm9u
bWVudFZhcmlhYmxlUmVhZGVyIGVudlZhcjsKKworICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFy
LnJlYWRBczx1bnNpZ25lZD4oIldFQktJVF9DVVJMX0ROU19DQUNIRV9USU1FT1VUIikpCisgICAg
ICAgIG1fZG5zQ2FjaGVUaW1lb3V0ID0gU2Vjb25kcygqdmFsdWUpOworCisgICAgaWYgKGF1dG8g
dmFsdWUgPSBlbnZWYXIucmVhZEFzPHVuc2lnbmVkPigiV0VCS0lUX0NVUkxfQ09OTkVDVF9USU1F
T1VUIikpCisgICAgICAgIG1fY29ubmVjdFRpbWVvdXQgPSBTZWNvbmRzKCp2YWx1ZSk7CisKICNp
Zm5kZWYgTkRFQlVHCi0gICAgbV92ZXJib3NlID0gZ2V0ZW52KCJERUJVR19DVVJMIik7CisgICAg
bV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKIAotICAgIGNoYXIqIGxv
Z0ZpbGUgPSBnZXRlbnYoIkNVUkxfTE9HX0ZJTEUiKTsKKyAgICBhdXRvIGxvZ0ZpbGUgPSBlbnZW
YXIucmVhZCgiQ1VSTF9MT0dfRklMRSIpOwogICAgIGlmIChsb2dGaWxlKQogICAgICAgICBtX2xv
Z0ZpbGUgPSBmb3Blbihsb2dGaWxlLCAiYSIpOwogI2VuZGlmCkBAIC00NDcsMTYgKzQ4MiwyNSBA
QCB2b2lkIEN1cmxIYW5kbGU6OmVuYWJsZVByb3h5SWZFeGlzdHMoKQogICAgIH0KIH0KIAotdm9p
ZCBDdXJsSGFuZGxlOjplbmFibGVUaW1lb3V0KCkKK3N0YXRpYyBDVVJMb3B0aW9uIHNhZmVUaW1l
VmFsdWUoZG91YmxlIHRpbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGxvbmcgZG5zQ2FjaGVUaW1l
b3V0ID0gNSAqIDYwOyAvLyBbc2VjLl0KKyAgICBhdXRvIHZhbHVlID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRpbWUgPj0gMC4wID8gdGltZSA6IDApOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
VVJMb3B0aW9uPih2YWx1ZSk7Cit9CiAKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBD
VVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCBkbnNDYWNoZVRpbWVvdXQpOwordm9pZCBDdXJsSGFu
ZGxlOjpzZXREbnNDYWNoZVRpbWVvdXQoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIGN1cmxfZWFz
eV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQsIHNhZmVUaW1lVmFs
dWUodGltZW91dC5zZWNvbmRzKCkpKTsKK30KKwordm9pZCBDdXJsSGFuZGxlOjpzZXRDb25uZWN0
VGltZW91dChTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRs
ZSwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgc2FmZVRpbWVWYWx1ZSh0aW1lb3V0LnNlY29uZHMo
KSkpOwogfQogCi12b2lkIEN1cmxIYW5kbGU6OnNldFRpbWVvdXQobG9uZyB0aW1lb3V0TWlsbGlz
ZWNvbmRzKQordm9pZCBDdXJsSGFuZGxlOjpzZXRUaW1lb3V0KFNlY29uZHMgdGltZW91dCkKIHsK
LSAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1RJTUVPVVRfTVMsIHRpbWVv
dXRNaWxsaXNlY29uZHMpOworICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxPUFRf
VElNRU9VVF9NUywgc2FmZVRpbWVWYWx1ZSh0aW1lb3V0Lm1pbGxpc2Vjb25kcygpKSk7CiB9CiAK
IHZvaWQgQ3VybEhhbmRsZTo6c2V0SGVhZGVyQ2FsbGJhY2tGdW5jdGlvbihjdXJsX3dyaXRlX2Nh
bGxiYWNrIGNhbGxiYWNrRnVuYywgdm9pZCogdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IGY1MmJkNTViNTY5
Li45YWZjMDEzNjAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiAjaWYgT1MoV0lORE9XUykKQEAgLTEyMCwxOCArMTIxLDI1IEBAIHB1YmxpYzoK
ICAgICAvLyBIVFRQLzIKICAgICBib29sIGlzSHR0cDJFbmFibGVkKCkgY29uc3Q7CiAKKyAgICAv
LyBUaW1lb3V0CisgICAgU2Vjb25kcyBkbnNDYWNoZVRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBt
X2Ruc0NhY2hlVGltZW91dDsgfQorICAgIFNlY29uZHMgY29ubmVjdFRpbWVvdXQoKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3RUaW1lb3V0OyB9CisKICNpZm5kZWYgTkRFQlVHCiAgICAgRklMRSog
Z2V0TG9nRmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9nRmlsZTsgfQogICAgIGJvb2wgaXNWZXJi
b3NlKCkgY29uc3QgeyByZXR1cm4gbV92ZXJib3NlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAg
ICBDdXJsQ29udGV4dCgpOworICAgIHZvaWQgaW5pdFNoYXJlSGFuZGxlKCk7CisKICAgICBQcm94
eUluZm8gbV9wcm94eTsKICAgICBDdXJsU2hhcmVIYW5kbGUgbV9zaGFyZUhhbmRsZTsKICAgICBD
dXJsU1NMSGFuZGxlIG1fc3NsSGFuZGxlOwogCi0gICAgQ3VybENvbnRleHQoKTsKLSAgICB2b2lk
IGluaXRTaGFyZUhhbmRsZSgpOworICAgIFNlY29uZHMgbV9kbnNDYWNoZVRpbWVvdXQgeyBTZWNv
bmRzOjpmcm9tTWludXRlcyg1KSB9OworICAgIFNlY29uZHMgbV9jb25uZWN0VGltZW91dCB7IDMw
LjAgfTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBGSUxFKiBtX2xvZ0ZpbGUgeyBudWxscHRyIH07
CkBAIC0yNTAsOCArMjU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmFibGVQcm94eUlmRXhp
c3RzKCk7CiAKLSAgICB2b2lkIGVuYWJsZVRpbWVvdXQoKTsKLSAgICB2b2lkIHNldFRpbWVvdXQo
bG9uZyB0aW1lb3V0TWlsbGlzZWNvbmRzKTsKKyAgICB2b2lkIHNldERuc0NhY2hlVGltZW91dChT
ZWNvbmRzKTsKKyAgICB2b2lkIHNldENvbm5lY3RUaW1lb3V0KFNlY29uZHMpOworICAgIHZvaWQg
c2V0VGltZW91dChTZWNvbmRzKTsKIAogICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uCiAgICAgdm9p
ZCBzZXRIZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGN1cmxfd3JpdGVfY2FsbGJhY2ssIHZvaWQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCmluZGV4IDAzNjUzN2Y4YTUzLi41YTc4M2ZkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xOTQs
MTAgKzE5NCwxMCBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgbV9j
dXJsSGFuZGxlLT5lbmFibGVTaGFyZUhhbmRsZSgpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxl
QWxsb3dlZFByb3RvY29scygpOwogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlQWNjZXB0RW5jb2Rp
bmcoKTsKLSAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZVRpbWVvdXQoKTsKIAotICAgIGxvbmcgdGlt
ZW91dE1pbGxpc2Vjb25kcyA9IChtX3JlcXVlc3QudGltZW91dEludGVydmFsKCkgPiAwLjApID8g
c3RhdGljX2Nhc3Q8bG9uZz4obV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpICogMTAwMC4wKSA6
IDA7Ci0gICAgbV9jdXJsSGFuZGxlLT5zZXRUaW1lb3V0KHRpbWVvdXRNaWxsaXNlY29uZHMpOwor
ICAgIG1fY3VybEhhbmRsZS0+c2V0VGltZW91dChTZWNvbmRzKG1fcmVxdWVzdC50aW1lb3V0SW50
ZXJ2YWwoKSkpOworICAgIG1fY3VybEhhbmRsZS0+c2V0RG5zQ2FjaGVUaW1lb3V0KEN1cmxDb250
ZXh0OjpzaW5nbGV0b24oKS5kbnNDYWNoZVRpbWVvdXQoKSk7CisgICAgbV9jdXJsSGFuZGxlLT5z
ZXRDb25uZWN0VGltZW91dChDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuY29ubmVjdFRpbWVvdXQo
KSk7CiAKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>