<?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>207238</bug_id>
          
          <creation_ts>2020-02-04 16:36:34 -0800</creation_ts>
          <short_desc>[WebCrypto][CommonCrypto] Incorrect AES-CTR with counterLength longer than 64</short_desc>
          <delta_ts>2020-02-12 23:21:12 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207375</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>tomoki.imai</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614834</commentid>
    <comment_count>0</comment_count>
      <attachid>389739</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-04 16:36:34 -0800</bug_when>
    <thetext>Created attachment 389739
Patch (test only)

Add tests for AES-CTR counter overlap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615734</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-06 12:18:25 -0800</bug_when>
    <thetext>(In reply to Yoshiaki Jitsukawa from comment #0)
&gt; Created attachment 389739 [details]
&gt; Patch (test only)
&gt; 
&gt; Add tests for AES-CTR counter overlap.

Could you have a new test and then mark it fail for Apple ports? We don&apos;t support counter size longer than 64 bits at this moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615741</commentid>
    <comment_count>2</comment_count>
      <attachid>389739</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-06 12:29:17 -0800</bug_when>
    <thetext>Comment on attachment 389739
Patch (test only)

r- because of that. Also, if OpenSSL has no issues about all these test cases, you probably don&apos;t need them at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615928</commentid>
    <comment_count>3</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-06 16:41:30 -0800</bug_when>
    <thetext>Hi Jiewen,

As you know (thanks for the comment on bug 207176), we&apos;re adding AES support on OpenSSL and facing on a similar restriction of AES-CTR mode. I&apos;m trying to introduce a helper class to handle arbitrary counter length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615931</commentid>
    <comment_count>4</comment_count>
      <attachid>390027</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-06 16:45:26 -0800</bug_when>
    <thetext>Created attachment 390027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615937</commentid>
    <comment_count>5</comment_count>
      <attachid>390030</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-06 16:55:38 -0800</bug_when>
    <thetext>Created attachment 390030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615939</commentid>
    <comment_count>6</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-06 16:59:14 -0800</bug_when>
    <thetext>As bug 207176 is about to be resolved, I&apos;ll make another ticket for AES-CTR on OpenSSL with a separate test file. Thank you for your advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615964</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-06 17:50:57 -0800</bug_when>
    <thetext>(In reply to Yoshiaki Jitsukawa from comment #3)
&gt; Hi Jiewen,
&gt; 
&gt; As you know (thanks for the comment on bug 207176), we&apos;re adding AES support
&gt; on OpenSSL and facing on a similar restriction of AES-CTR mode. I&apos;m trying
&gt; to introduce a helper class to handle arbitrary counter length.

It&apos;s very kind for you to address the issue for Apple ports as well. I will take a look at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616742</commentid>
    <comment_count>8</comment_count>
      <attachid>390030</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-09 18:26:12 -0800</bug_when>
    <thetext>Comment on attachment 390030
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:848
&gt; +		2DDE1CE31F574AE500D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1CE41F574AE900D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1CF81F574C3900D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1CFA1F574C3E00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1CFC1F574CEE00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1CFE1F574CF300D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1D001F574CF700D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1D021F574D0000D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1D041F574D0500D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1D061F574D0A00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; +		2DDE1D081F574D0E00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt;  		2DE70023192FE82A00B0975C /* DisplayRefreshMonitorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE70022192FE82A00B0975C /* DisplayRefreshMonitorMac.h */; };

This is suspicious. Why did all these change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616756</commentid>
    <comment_count>9</comment_count>
      <attachid>390229</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-09 20:31:57 -0800</bug_when>
    <thetext>Created attachment 390229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616770</commentid>
    <comment_count>10</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-09 21:14:56 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 390030 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390030&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:848
&gt; &gt; +		2DDE1CE31F574AE500D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1CE41F574AE900D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1CF81F574C3900D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1CFA1F574C3E00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1CFC1F574CEE00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1CFE1F574CF300D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1D001F574CF700D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1D021F574D0000D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1D041F574D0500D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1D061F574D0A00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt; +		2DDE1D081F574D0E00D1A365 /* (null) in Headers */ = {isa = PBXBuildFile; };
&gt; &gt;  		2DE70023192FE82A00B0975C /* DisplayRefreshMonitorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE70022192FE82A00B0975C /* DisplayRefreshMonitorMac.h */; };
&gt; 
&gt; This is suspicious. Why did all these change?

Thank you for pointing out. Addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617599</commentid>
    <comment_count>11</comment_count>
      <attachid>390229</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-11 13:45:44 -0800</bug_when>
    <thetext>Comment on attachment 390229
Patch

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

Overall, the patch looks good to me. Please address some of my comments.

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:1
&gt; +/*

Why don&apos;t you have a .cpp file?

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:35
&gt; +template &lt;size_t BlockSize = 16&gt; // Counter block size in bytes.

Any reasons that the BlockSize is not fixed to 16 bytes?

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:36
&gt; +class CryptoAlgorithmCounterBlockHelper {

Could it be more specific about AES-CTR? I guess no other algorithms need this.

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:76
&gt; +        for (size_t i = 0; i &lt; sizeof(size_t); i++) {

It is unfortunate that there is no helpers in bitset to get value out.

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:101
&gt; +        for (int j = 0; j &lt; 8; j++) {

It looks like that you reverse the endian of the byte? You can use
    for (size_t j = 7; j &gt;= 0; j--)
to keep the endian same.

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:102
&gt; +            bits.set(i * 8 + j, byte &amp; 0x01); // Test the LSB and set it to the bit.

This is why I dislike bitset. It is very tedious to manipulate the value and it is not efficient to do that as well. I guess there are no better options if you have dealt with counter size larger then size of size_t. The efficiency is probably no issues here comparing to the bundled decryption/encryption operations.

&gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:110
&gt; +        for (int j = 0; j &lt; 8; j++) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617883</commentid>
    <comment_count>12</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-11 23:31:50 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #11)
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:1
&gt; &gt; +/*
&gt; 
&gt; Why don&apos;t you have a .cpp file?
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:35
&gt; &gt; +template &lt;size_t BlockSize = 16&gt; // Counter block size in bytes.
&gt; 
&gt; Any reasons that the BlockSize is not fixed to 16 bytes?
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:36
&gt; &gt; +class CryptoAlgorithmCounterBlockHelper {
&gt; 
&gt; Could it be more specific about AES-CTR? I guess no other algorithms need
&gt; this.

I guess so, too. So how about having CryptoAlgorithmAES_CTRCounterBlockHelper class in CyptoAlgorithmAES_CTR.h/.cpp
with fixed block size 16?

I&apos;m not sure which is better, an internal class like
 class CryptoAlgorithmAES_CTR::CounterBlockHelper
or an external class out of CryptoAlgorithmAES_CTR.

&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:76
&gt; &gt; +        for (size_t i = 0; i &lt; sizeof(size_t); i++) {
&gt; 
&gt; It is unfortunate that there is no helpers in bitset to get value out.
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:101
&gt; &gt; +        for (int j = 0; j &lt; 8; j++) {
&gt; 
&gt; It looks like that you reverse the endian of the byte? You can use
&gt;     for (size_t j = 7; j &gt;= 0; j--)
&gt; to keep the endian same.
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:102
&gt; &gt; +            bits.set(i * 8 + j, byte &amp; 0x01); // Test the LSB and set it to the bit.
&gt; 
&gt; This is why I dislike bitset. It is very tedious to manipulate the value and
&gt; it is not efficient to do that as well. I guess there are no better options
&gt; if you have dealt with counter size larger then size of size_t. The
&gt; efficiency is probably no issues here comparing to the bundled
&gt; decryption/encryption operations.
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithmCounterBlockHelper.h:110
&gt; &gt; +        for (int j = 0; j &lt; 8; j++) {
&gt; 
&gt; Ditto.

Yes, it&apos;s super tedious...

Assuming 16 byte block size, I&apos;ll rewrite the helper with a pair of uint64_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617900</commentid>
    <comment_count>13</comment_count>
      <attachid>390498</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 01:46:07 -0800</bug_when>
    <thetext>Created attachment 390498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618211</commentid>
    <comment_count>14</comment_count>
      <attachid>390498</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-12 14:03:11 -0800</bug_when>
    <thetext>Comment on attachment 390498
Patch

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

Looks good overall. Please address my comments.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:45
&gt; +        static constexpr size_t BlockSize = 16;

Could this be in the implementation?

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:47
&gt; +        explicit CounterBlockHelper(const Vector&lt;uint8_t&gt;&amp; counterVector, size_t counterLength);

Since the constructor takes two parameters, there are no needs to make it explicit.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:50
&gt; +        size_t countToOverflow() const;

In WebKit, we usually don&apos;t describe what the method does in comments. Instead, we make the method name be self explanatory.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:53
&gt; +        Vector&lt;uint8_t&gt; counterVectorAfterOverflow() const;

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:56
&gt; +        struct CounterBlockBits {

If this is an internal helper, it should be private.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:57
&gt; +            static constexpr uint64_t All = 0xFFFFFFFFFFFFFFFFUL;

Could this be in the implementation?

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:58
&gt; +            void set()

We usually don&apos;t put methods into the headers unless they are simple getters or for performance reasons.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:64
&gt; +            bool all() const

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:69
&gt; +            bool any() const

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:74
&gt; +            CounterBlockBits operator&amp;(const CounterBlockBits&amp; rhs) const

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:82
&gt; +            CounterBlockBits operator~() const

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:90
&gt; +            CounterBlockBits&amp; operator &lt;&lt;=(unsigned shift)

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:106
&gt; +            CounterBlockBits&amp; operator &amp;=(const CounterBlockBits&amp; rhs)

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:108
&gt; +                *this = *this &amp; rhs;

I believe this will create an unnecessary temp value. You should just modify the members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618255</commentid>
    <comment_count>15</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 15:19:07 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #14)
Thank you for your review. I&apos;ll address all the points.

&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:45
&gt; &gt; +        static constexpr size_t BlockSize = 16;
&gt; 
&gt; Could this be in the implementation?

Yes. I&apos;ll make use of CryptoAlgorithmAES_CTRInternal::CounterSize.

&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:50
&gt; &gt; +        size_t countToOverflow() const;
&gt; 
&gt; In WebKit, we usually don&apos;t describe what the method does in comments.
&gt; Instead, we make the method name be self explanatory.

Renaming to countToOverflowSaturating()
 
&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:53
&gt; &gt; +        Vector&lt;uint8_t&gt; counterVectorAfterOverflow() const;
&gt;

I think it&apos;s self explanatory so I&apos;m just removing the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618261</commentid>
    <comment_count>16</comment_count>
      <attachid>390572</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 15:37:25 -0800</bug_when>
    <thetext>Created attachment 390572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618302</commentid>
    <comment_count>17</comment_count>
      <attachid>390572</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-12 16:32:07 -0800</bug_when>
    <thetext>Comment on attachment 390572
Patch

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

Some more nits. : )

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:220
&gt; +    // Make a mask whose lowest counterLength bits are set.

We usually don&apos;t explain what we are doing in the code by comments. They should be self explanatory by choosing the right names. Instead, we usually comments why we are going this, like the above big-endian comment.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:225
&gt; +    auto countMinusOne = ~m_bits &amp; mask; // The count to overflow minus one.

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:233
&gt; +    // Get the bits within the size_t range.

Doesn&apos;t seem to be related.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:308
&gt; +CryptoAlgorithmAES_CTR::CounterBlockHelper::CounterBlockBits&amp; CryptoAlgorithmAES_CTR::CounterBlockHelper::CounterBlockBits::operator &amp;=(const CounterBlockBits&amp; rhs)

In this case, you can use:
     auto CryptoAlgorithmAES_CTR::CounterBlockHelper::CounterBlockBits::operator &amp;=(const CounterBlockBits&amp; rhs) -&gt; CounterBlockBits&amp;

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:44
&gt; +    class CounterBlockHelper {

Please move this class definition right below public:. Just a good behavior as helper classes can be used in any methods.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:49
&gt; +

I guess you don&apos;t need a blank line here.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:56
&gt; +

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:58
&gt; +

Ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:61
&gt; +            CounterBlockBits operator&amp;(const CounterBlockBits&amp; rhs) const;

You don&apos;t need the parameter name. Please comply the style checker.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:62
&gt; +

No blank line.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:64
&gt; +

No blank line.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:65
&gt; +            CounterBlockBits&amp; operator &lt;&lt;=(unsigned shift);

Omit the parameter line.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:66
&gt; +

No blank line.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:67
&gt; +            CounterBlockBits&amp; operator &amp;=(const CounterBlockBits&amp; rhs);

Omit the parameter line.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:69
&gt; +            static const uint64_t All;

Please move this to CryptoAlgorithmAES_CTRInternal given it adds no useful information in the headers.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:70
&gt; +            uint64_t m_hi = 0;

uint64_t m_hi { 0 };

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:71
&gt; +            uint64_t m_lo = 0;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618304</commentid>
    <comment_count>18</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-12 16:34:02 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #17)
&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:65
&gt; &gt; +            CounterBlockBits&amp; operator &lt;&lt;=(unsigned shift);
&gt; 
&gt; Omit the parameter line.

name

&gt; 
&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:66
&gt; &gt; +
&gt; 
&gt; No blank line.
&gt; 
&gt; &gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h:67
&gt; &gt; +            CounterBlockBits&amp; operator &amp;=(const CounterBlockBits&amp; rhs);
&gt; 
&gt; Omit the parameter line.

name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618332</commentid>
    <comment_count>19</comment_count>
      <attachid>390598</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 17:28:56 -0800</bug_when>
    <thetext>Created attachment 390598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618334</commentid>
    <comment_count>20</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 17:31:14 -0800</bug_when>
    <thetext>&gt; Some more nits. : )

Thanks. Addressed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618336</commentid>
    <comment_count>21</comment_count>
      <attachid>390598</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-12 17:38:05 -0800</bug_when>
    <thetext>Comment on attachment 390598
Patch

LGTM. r=me. Please wait until all EWS turns green to land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618338</commentid>
    <comment_count>22</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-02-12 17:47:31 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #21)
&gt; Comment on attachment 390598 [details]
&gt; Patch
&gt; 
&gt; LGTM. r=me. Please wait until all EWS turns green to land the patch.

Sure. Thank you for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618410</commentid>
    <comment_count>23</comment_count>
      <attachid>390598</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-12 23:20:22 -0800</bug_when>
    <thetext>Comment on attachment 390598
Patch

Clearing flags on attachment: 390598

Committed r256503: &lt;https://trac.webkit.org/changeset/256503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618411</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-12 23:20:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618412</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-12 23:21:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/59415022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389739</attachid>
            <date>2020-02-04 16:36:34 -0800</date>
            <delta_ts>2020-02-06 16:45:24 -0800</delta_ts>
            <desc>Patch (test only)</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>3913</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5
LWVuY3J5cHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3Ry
LWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKaW5kZXggNmU0MjkxMjZmNjAuLjczZGYx
ODliOGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHItaW1w
b3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3Vi
dGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dApAQCAtMTMsNiArMTMs
MTIgQEAgTGVuZ3RoID0gMiwgb3ZlcmZsb3cKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ0CiBMZW5ndGggPSA4LCBvdmVyZmxvdwogUEFTUyBi
eXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDUKK0xlbmd0
aCA9IDY0LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4
cGVjdGVkQ2lwaGVyVGV4dDYKK0xlbmd0aCA9IDY2LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4
U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDcKK0xlbmd0aCA9IDEyOCwg
b3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENp
cGhlclRleHQ4CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQt
a2V5LWVuY3J5cHQuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBv
cnQta2V5LWVuY3J5cHQuaHRtbAppbmRleCAzNzAxNDU4YzcxNi4uOGE5ZWUyZTAzNWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5
cHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtl
eS1lbmNyeXB0Lmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgdmFyIGFlc0N0clBhcmFtczMgPSB7CiB9
CiB2YXIgYWVzQ3RyUGFyYW1zND0gewogICAgIG5hbWU6ICJhZXMtY3RyIiwKLSAgICBjb3VudGVy
OiBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b09aRkxJRVBNciIpLAorICAgIGNvdW50ZXI6IGhl
eFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYiKSwK
ICAgICBsZW5ndGg6IDIsCiB9CiB2YXIgYWVzQ3RyUGFyYW1zNT0gewpAQCAtNDAsMTAgKzQwLDI4
IEBAIHZhciBhZXNDdHJQYXJhbXM1PSB7CiAgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZiIpLAogICAgIGxlbmd0aDogOCwK
IH0KK3ZhciBhZXNDdHJQYXJhbXM2PSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50
ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZmZmZmZmZmZmZmZmZmZm
ZmYiKSwKKyAgICBsZW5ndGg6IDY0LAorfQordmFyIGFlc0N0clBhcmFtczc9IHsKKyAgICBuYW1l
OiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2YTZlNGY3
NzM5Mzk2ZjdmZmZmZmZmZmZmZmZmZmZmZiIpLAorICAgIGxlbmd0aDogNjYsCit9Cit2YXIgYWVz
Q3RyUGFyYW1zOD0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJp
bmdUb1VpbnQ4QXJyYXkoImZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAg
bGVuZ3RoOiAxMjgsCit9CiB2YXIgcmF3S2V5ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9P
WkZMSUVQTXIiKTsKIHZhciBleHBlY3RlZENpcGhlclRleHQgPSAiYTVmOTQwZTkzNDA2ZDRiZDli
NzMxOGU2NTNkNGNiOWQxYWY0OTdmNTJmY2JiNjU5YTAzOGU3MTFlOGJkNjFmYjQ4NjM5MzFkMjU5
MTFlMmU5ZmYzMGNmMzdlYzI3ZGQ4MTNhNjI4MzAiOwotdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDQg
PSAiYTVmOTQwZTkzNDA2ZDRiZDliNzMxOGU2NTNkNGNiOWQxYWY0OTdmNTJmY2JiNjU5YTAzOGU3
MTFlOGJkNjFmYjk2ZmVkN2ZhNWJmNzVkMjgyYTU0Nzc1ODNiOTcwYjE3MTc0MGEyZmEiOwordmFy
IGV4cGVjdGVkQ2lwaGVyVGV4dDQgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmI1
YWI0MWI0MzM4ZWRjMjgyMmQxZjBkZmFjMGNlYzA3MTQ5NzY2ZTE4OWZhNDI2ZDVlYTMwZmU1NDEw
MTgzNjIwODhkYjIxMTciOwogdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDUgPSAiNmE0NjFlYjNmNjRl
ZjRjNDY2NTk3YmE4NzdhOTUxMmJmMjI0MDUxYzg4YWU4ODVjNTY1YTdhZGE1Njg0M2YzYjg0ZWM3
NTk2ZGY2N2NiZmRjZmJlYjI3NTc2OGY0ZDcyNzBjZTdkZGYiOwordmFyIGV4cGVjdGVkQ2lwaGVy
VGV4dDYgPSAiM2MzN2M1ZWEwMTdkMjAxYmY2MDhmODZiMDIyNWMwZDYxNmQwZTRmMGRkZDdhYmE5
NmQ0YmI0ZWUzYjgyOTgzMmI1YWIyYzI5NjNkMWQ2YjMyZWYzZGI1OTk1NmJjMTUyNDViMTAxYzki
OwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDcgPSAiYmUwNjE1Yzg0ODVlMmU3YWRjNGU1NDdiNmFl
YTk4ZjU5MDk1NTQ3ZDQyZjliMTQ3MWVkZmU0NjQxNTJiMTI5NGY1NjViMzJjOWVkMzg1MDQyMjkx
YmVjM2U0YWUzMTJjM2YzMjA4MGIiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDggPSAiMTA2NWM3
MTA3ZmQzM2EzZjFlMDU2MjcyMzhkMzA5NTUwNTUyNzRmNTA3YzgyNzE2Y2NmYjc3ZjYwOTQ0NmMw
N2IxZjA3YjgwZmM5ODliOTdiZTQ5MDA3MTMzOTUzYWQxNzNhMTFjZDciOwogCiBjcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWN0ciIsIGV4dHJhY3RhYmxlLCBbImVu
Y3J5cHQiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBrZXkgPSByZXN1bHQ7CkBAIC04
Myw2ICsxMDEsMjcgQEAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIHJhd0tleSwgImFl
cy1jdHIiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0Il0pLnRoZW4KIAogICAgIHNob3VsZEJlKCJi
eXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDUiKTsKIAor
ICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczYsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJl
KCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDYiKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSA2Niwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczcsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDci
KTsKKworICAgIGRlYnVnKCJMZW5ndGggPSAxMjgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNy
eXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQYXJhbXM4LCBrZXksIHBsYWluVGV4dCk7Cit9KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBz
aG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRl
eHQ4Iik7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390027</attachid>
            <date>2020-02-06 16:45:26 -0800</date>
            <delta_ts>2020-02-06 16:55:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200207094520.patch</filename>
            <type>text/plain</type>
            <size>18734</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyZmRmZGM0ZjgzZWQ3
MWZkZTBhZDRjNjY2ZDU4ZmNkYTQwODIwMS4uNDRjNjI2YTc3OTc5MzcyYTMwZTQwMTVmYWMwNjZi
ZjdmMDYwNjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTA2ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGUgaGVscGVyLCBzaW1wbGlmeSB0aGUgQUVT
LUNUUiBpbXBsZW1lbnRhdGlvbiBvbiBDb21tb25DcnlwdG8uIAorCisgICAgICAgICogY3J5cHRv
L0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Q3J5cHRvQWxnb3JpdGht
Q291bnRlckJsb2NrSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUNv
dW50ZXJCbG9ja0hlbHBlcjo6Y291bnRUb092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Y291bnRlclZlY3RvckFmdGVy
T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQ291bnRl
ckJsb2NrSGVscGVyOjpzZXRCeXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUNvdW50ZXJCbG9ja0hlbHBlcjo6Z2V0Qnl0ZSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFF
U19DVFIpOgorICAgICAgICAoV2ViQ29yZTo6YmlnSW50ZWdlclRvU2l6ZVQpOiBEZWxldGVkLgor
CiAyMDIwLTAyLTA1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgW1BsYXlTdGF0aW9uXSBNaXNjZWxsYW5lb3VzIGJ1aWxkIGZpeGVzIEZlYnJ1YXJ5IDIw
MjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobUNvdW50ZXJCbG9ja0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yjk0ZmUzZjM5OTk2MWY2
NzU0NjczODFjNzBjZGMwYzU2YjA0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2NrSGVscGVyLmgKQEAgLTAsMCArMSwx
MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKKworI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8c2l6ZV90IEJsb2NrU2l6ZSA9IDE2PiAvLyBDb3Vu
dGVyIGJsb2NrIHNpemUgaW4gYnl0ZXMuCitjbGFzcyBDcnlwdG9BbGdvcml0aG1Db3VudGVyQmxv
Y2tIZWxwZXIgeworICAgIHVzaW5nIENvdW50ZXJCbG9ja0JpdHMgPSBzdGQ6OmJpdHNldDxCbG9j
a1NpemUgKiA4PjsKK3B1YmxpYzoKKyAgICBDcnlwdG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxw
ZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyVmVjdG9yLCBzaXplX3QgY291bnRlckxl
bmd0aCkKKyAgICAgICAgOiBtX2NvdW50ZXJMZW5ndGgoY291bnRlckxlbmd0aCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoQmxvY2tTaXplID49IHNpemVvZihzaXplX3QpKTsKKyAgICAg
ICAgQVNTRVJUKGNvdW50ZXJWZWN0b3Iuc2l6ZSgpICogOCA9PSBtX2JpdHMuc2l6ZSgpKTsKKyAg
ICAgICAgQVNTRVJUKGNvdW50ZXJMZW5ndGggPD0gbV9iaXRzLnNpemUoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgQmxvY2tTaXplOyBpKyspCisgICAgICAgICAgICBzZXRCeXRl
KG1fYml0cywgaSwgY291bnRlclZlY3RvcltCbG9ja1NpemUgLSAxIC0gaV0pOworICAgIH0KKyAg
ICAKKyAgICAvLyBSZXR1cm4gdGhlIGNvdW50IHVudGlsIHRoZSBjb3VudGVyIGJpdHMgY29tZSB0
byBvdmVyZmxvdywgY2VpbCdlZCBieSB0aGUgc2l6ZV90IG1heC4KKyAgICBzaXplX3QgY291bnRU
b092ZXJmbG93KCkgY29uc3QKKyAgICB7CisgICAgICAgIENvdW50ZXJCbG9ja0JpdHMgbWFzazsK
KyAgICAgICAgLy8gTWFrZSBhIG1hc2sgd2hvc2UgY291bnRlckxlbmd0aCBiaXRzIGFyZSBzZXQu
CisgICAgICAgIG1hc2suc2V0KCk7CisgICAgICAgIG1hc2sgPDw9IG1fY291bnRlckxlbmd0aDsK
KyAgICAgICAgbWFzay5mbGlwKCk7CisKKyAgICAgICAgYXV0byBjb3VudE1pbnVzT25lID0gfm1f
Yml0cyAmIG1hc2s7IC8vIFRoZSBjb3VudCB0byBvdmVyZmxvdyBtaW51cyBvbmUuCisgICAgICAg
IAorICAgICAgICAvLyBNYWtlIGFub3RoZXIgbWFzayB0byBjaGVjayBpZiB0aGUgY291bnQgaXMg
bGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc2l6ZSBvZiBzaXplX3QuCisgICAgICAgIG1hc2suc2V0
KCk7CisgICAgICAgIG1hc2sgPDw9IHNpemVvZihzaXplX3QpICogODsKKyAgICAgICAgaWYgKCht
YXNrICYgY291bnRNaW51c09uZSkuYW55KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEdldCB0aGUg
Yml0cyB3aXRoaW4gdGhlIHNpemVfdCByYW5nZS4KKyAgICAgICAgY291bnRNaW51c09uZSAmPSB+
bWFzazsKKyAgICAgICAgaWYgKGNvdW50TWludXNPbmUuYWxsKCkpIHsKKyAgICAgICAgICAgIC8v
IEFzIGFsbCBiaXRzIGFyZSBzZXQsIGFkZGluZyBvbmUgd291bGQgcmVzdWx0IGluIGFuIG92ZXJm
bG93LgorICAgICAgICAgICAgLy8gUmV0dXJuIHNpemVfdCBtYXggaW5zdGVhZC4KKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY29udmVydCB0aGUgYml0cyB0byBhIHNpemVfdC4K
KyAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CisgICAgICAgICAgICBjb3VudCA8PD0gODsKKyAgICAg
ICAgICAgIGNvdW50IHw9IGdldEJ5dGUoY291bnRNaW51c09uZSwgc2l6ZW9mKHNpemVfdCkgLSAx
IC0gaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50ICsgMTsKKyAgICB9CisgICAg
CisgICAgLy8gUmVydXJuIGEgY291bnRlciBibG9jayB2ZWN0b3IgdG8gcmVzdGFydCB3aXRoIGFm
dGVyIG92ZXJmbG93LgorICAgIFZlY3Rvcjx1aW50OF90PiBjb3VudGVyVmVjdG9yQWZ0ZXJPdmVy
ZmxvdygpIGNvbnN0CisgICAgeworICAgICAgICBDb3VudGVyQmxvY2tCaXRzIG1hc2s7CisgICAg
ICAgIG1hc2suc2V0KCk7CisgICAgICAgIG1hc2sgPDw9IG1fY291bnRlckxlbmd0aDsKKyAgICAg
ICAgYXV0byBiaXRzID0gbV9iaXRzICYgbWFzazsKKyAgICAgICAgCisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBjb3VudGVyVmVjdG9yKEJsb2NrU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgQmxvY2tTaXplOyBpKyspCisgICAgICAgICAgICBjb3VudGVyVmVjdG9yW0Jsb2Nr
U2l6ZSAtIDEgLSBpXSA9IGdldEJ5dGUoYml0cywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gY291bnRlclZlY3RvcjsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lk
IHNldEJ5dGUoQ291bnRlckJsb2NrQml0cyYgYml0cywgc2l6ZV90IGksIHVpbnQ4X3QgYnl0ZSkK
KyAgICB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisgICAgICAgICAg
ICBiaXRzLnNldChpICogOCArIGosIGJ5dGUgJiAweDAxKTsgLy8gVGVzdCB0aGUgTFNCIGFuZCBz
ZXQgaXQgdG8gdGhlIGJpdC4KKyAgICAgICAgICAgIGJ5dGUgPj49IDE7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgc3RhdGljIHVpbnQ4X3QgZ2V0Qnl0ZShjb25zdCBDb3VudGVyQmxvY2tC
aXRzJiBiaXRzLCBzaXplX3QgaSkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IDA7Cisg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisgICAgICAgICAgICBieXRlID4+
PSAxOworICAgICAgICAgICAgaWYgKGJpdHMudGVzdChpICogOCArIGopKQorICAgICAgICAgICAg
ICAgIGJ5dGUgfD0gMHg4MDsgLy8gU2V0IHRoZSBNU0IgYW5kIHJpZ2h0LXNoaWZ0IG9uZSBieSBv
bmUuCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ5dGU7CisgICAgfQorICAgIAorICAgIENv
dW50ZXJCbG9ja0JpdHMgbV9iaXRzOworICAgIGNvbnN0IHNpemVfdCBtX2NvdW50ZXJMZW5ndGg7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NS
WVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUFFU19DVFJNYWMuY3BwCmluZGV4IGI5OTcwZTdlNmU5ZWViNzM1MzdhMjhiZDAwYmRiY2Zm
NjE1YmQ5NTEuLmIyYTBjMWJjYWQ2NmExYmMxNWViN2QwZWI1Zjg5NDUzZDJiZGFiOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
Q1RSTWFjLmNwcApAQCAtMjksMjIgKzI5LDEyIEBACiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxwZXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlBRVMu
aCIKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gSXQgdGFrZXMgdGhlIGxhc3QgV09SRFNJWkUvOCBieXRlcyBvZiB0aGUg
YmlnSW50ZWdlciBhbmQgdGhlbiBjb252ZXJ0IHRoZW0gaW50byBhIHNpemVfdCB2YWx1ZQotc3Rh
dGljIHNpemVfdCBiaWdJbnRlZ2VyVG9TaXplVChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJpZ0lu
dGVnZXIpCi17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IGJp
Z0ludGVnZXIuc2l6ZSgpIC0gKF9fV09SRFNJWkUgLyA4KTsgaSA8IGJpZ0ludGVnZXIuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgcmVzdWx0IDw8PSA4OwotICAgICAgICByZXN1bHQgKz0gYmlnSW50
ZWdlcltpXTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRp
b24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4KQEAgLTUyLDIwICs0MiwxNSBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1BRVNfQ1RSKEND
T3BlcmF0aW9uIG9wZXJhdGlvbiwgY29ucwogICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkg
Y2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRo
ZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCiAgICAgLy8gYnkgdGhl
IGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxk
IHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUs
CiAgICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVy
YXRpb24gaW50byB0d28gcGFydHMuCi0gICAgLy8gSWdub3JlIHRoZSBjYXNlOiBjb3VudGVyTGVu
Z3RoID4gX19XT1JEU0laRS4KICAgICBzaXplX3QgbnVtYmVyT2ZCbG9ja3MgPSBkYXRhLnNpemUo
KSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4
ICsgMSA6IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4OworICAgIAogICAgIC8vIERl
dGVjdCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBfX1dPUkRTSVpFICYmIG51bWJlck9m
QmxvY2tzID4gKDEgPDwgY291bnRlckxlbmd0aCkpCisgICAgaWYgKGNvdW50ZXJMZW5ndGggPCBz
aXplb2Yoc2l6ZV90KSAqIDggJiYgbnVtYmVyT2ZCbG9ja3MgPiAoMSA8PCBjb3VudGVyTGVuZ3Ro
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKICAgICAv
LyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgc2l6ZV90IHJpZ2h0TW9z
dCA9IGJpZ0ludGVnZXJUb1NpemVUKGNvdW50ZXIpOyAvLyBjb252ZXJ0IHJpZ2h0IG1vc3QgX19X
T1JEU0laRSBiaXRzIGludG8gYSBzaXplX3QgdmFsdWUsIHdoaWNoIGlzIHRoZSBsb25nZXN0IGNv
dW50ZXIgd2UgY291bGQgcG9zc2libHkgdXNlLgotICAgIHNpemVfdCBjYXBhY2l0eSA9IG51bWJl
ck9mQmxvY2tzOyAvLyBTSVpFX01BWCAtIGNvdW50ZXIKLSAgICBpZiAoY291bnRlckxlbmd0aCA8
IF9fV09SRFNJWkUpIHsKLSAgICAgICAgc2l6ZV90IG1hc2sgPSBTSVpFX01BWCA8PCBjb3VudGVy
TGVuZ3RoOyAvLyBVc2VkIHRvIHNldCBub25jZSBpbiByaWdodE1vc3Qobm9uY2UgKyBjb3VudGVy
KSB0byAxcwotICAgICAgICBjYXBhY2l0eSA9IFNJWkVfTUFYIC0gKHJpZ2h0TW9zdHwgbWFzaykg
KyAxOwotICAgIH0KLSAgICBpZiAoY291bnRlckxlbmd0aCA9PSBfX1dPUkRTSVpFKQotICAgICAg
ICBjYXBhY2l0eSA9IFNJWkVfTUFYIC0gcmlnaHRNb3N0ICsgMTsKKyAgICBDcnlwdG9BbGdvcml0
aG1Db3VudGVyQmxvY2tIZWxwZXI8a0NDQmxvY2tTaXplQUVTMTI4PiBjb3VudGVyQmxvY2tIZWxw
ZXIoY291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY291bnRl
ckJsb2NrSGVscGVyLmNvdW50VG9PdmVyZmxvdygpOwogCiAgICAgLy8gRGl2aWRlIGRhdGEgaW50
byB0d28gcGFydHMgaWYgbmVjZXNzYXJ5LgogICAgIHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6
ZSgpOwpAQCAtMTAxLDE3ICs4Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zCiAKICAgICAv
LyBzZWNvbmQgcGFydDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVt
IHRvIHRoZSBoZWFkLgogICAgIC8vIHJlc2V0IGNvdW50ZXIKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVtYWluaW5nQ291bnRlcihjb3VudGVyLnNpemUoKSk7Ci0gICAgc2l6ZV90IGNvdW50ZXJPZmZz
ZXQgPSBjb3VudGVyTGVuZ3RoICUgODsKLSAgICBzaXplX3Qgbm9uY2VPZmZzZXQgPSBjb3VudGVy
LnNpemUoKSAtIGNvdW50ZXJMZW5ndGggLyA4IC0gISFjb3VudGVyT2Zmc2V0OwotICAgIG1lbWNw
eShyZW1haW5pbmdDb3VudGVyLmRhdGEoKSwgY291bnRlci5kYXRhKCksIG5vbmNlT2Zmc2V0KTsg
Ly8gY29weSB0aGUgbm9uY2UKLSAgICAvLyBzZXQgdGhlIG1pZGRsZSBieXRlCi0gICAgaWYgKCEh
Y291bnRlck9mZnNldCkgewotICAgICAgICBzaXplX3QgbWFzayA9IFNJWkVfTUFYIDw8IGNvdW50
ZXJPZmZzZXQ7Ci0gICAgICAgIHJlbWFpbmluZ0NvdW50ZXJbbm9uY2VPZmZzZXRdID0gY291bnRl
cltub25jZU9mZnNldF0gJiBtYXNrOwotICAgIH0KLSAgICBtZW1zZXQocmVtYWluaW5nQ291bnRl
ci5kYXRhKCkgKyBub25jZU9mZnNldCArICEhY291bnRlck9mZnNldCwgMCwgY291bnRlckxlbmd0
aCAvIDgpOyAvLyByZXNldCB0aGUgY291bnRlcgotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlbWFp
bmluZ0NvdW50ZXIgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRlclZlY3RvckFmdGVyT3ZlcmZs
b3coKTsKICAgICBzdGF0dXMgPSBDQ0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVyYXRpb24sIGtD
Q01vZGVDVFIsIGtDQ0FsZ29yaXRobUFFUzEyOCwgY2NOb1BhZGRpbmcsIHJlbWFpbmluZ0NvdW50
ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBrQ0NNb2RlT3B0aW9u
Q1RSX0JFLCAmY3J5cHRvcik7CiAgICAgaWYgKHN0YXR1cykKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2JlMTEyZDUzN2FlZjA2NWIyYmYzNjFl
MTJmZGUxNDNkNDY3YTYzMS4uYjg5MjUzNzQwMDNmNmY1ZTk5MDc1ZjkyNmFlY2VjYmMxY2JmMGRh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTA2ICBZb3NoaWFraSBKaXRzdWthd2Eg
IDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNyeXB0b11bQ29t
bW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJMZW5ndGggbG9uZ2VyIHRo
YW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0IGNhc2VzIHdoZXJlIHRoZSBjb3VudGVyIGxlbmd0aCBpcyA2NiBhbmQgMTI4LCBhbmQg
dGhlIGNvdW50ZXIgY2FwYWNpdHkKKyAgICAgICAgdG8gb3ZlcmZsb3cgaXMgMSBhbmQgMi4KKyAg
ICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0
Lmh0bWw6CisKIDIwMjAtMDItMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTQ0MjgpOiBbIG1hY09TIHdrMSBdIGluc3BlY3Rvci9j
YW52YXMvcmVjb3JkaW5nLTJkLWZ1bGwuaHRtbCBiZWNhbWUgc2xvd2VyLCBmbGFraWx5IHRpbWVz
IG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9y
dC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Fl
cy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dAppbmRleCA2ZTQyOTEyNmY2MGIy
MmEwMmZhOWY2ZTU1ZjU0M2NjZGE5MWEzMjczLi4wYjAzY2Y2Nzk0YjQ0YTQzM2JlNzljN2I3NWNh
NjljNDRhODlmM2RkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1j
dHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dApAQCAtMTEs
OCArMTEsMjQgQEAgTGVuZ3RoID0gNjUKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0
KSBpcyBleHBlY3RlZENpcGhlclRleHQKIExlbmd0aCA9IDIsIG92ZXJmbG93CiBQQVNTIGJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0NAotTGVuZ3RoID0g
OCwgb3ZlcmZsb3cKK0xlbmd0aCA9IDIsIG92ZXJmbG93CiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0NQorTGVuZ3RoID0gOCwgb3ZlcmZsb3cK
K1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ2
CitMZW5ndGggPSA4LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQp
IGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDcKK0xlbmd0aCA9IDY0LCBvdmVyZmxvdworUEFTUyBieXRl
c1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDgKK0xlbmd0aCA9
IDY0LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVj
dGVkQ2lwaGVyVGV4dDkKK0xlbmd0aCA9IDY2LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3Ry
aW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDEwCitMZW5ndGggPSA2Niwgb3Zl
cmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhl
clRleHQxMQorTGVuZ3RoID0gMTI4LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNp
cGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDEyCitMZW5ndGggPSAxMjgsIG92ZXJmbG93
CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0
MTMKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5j
cnlwdC5odG1sIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXkt
ZW5jcnlwdC5odG1sCmluZGV4IDM3MDE0NThjNzE2ZDE5NTA3N2VkZTVjZDM5NzAyNTY0MzM2MzFj
MzkuLjlmYmM3ZTAwZmE1ZjI2NmM4MDMyMTliNGRkZjU3NTM4MGMzYjMxYmMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNy
eXB0Lmh0bWwKQEAgLTMyLDE4ICszMiw2NiBAQCB2YXIgYWVzQ3RyUGFyYW1zMyA9IHsKIH0KIHZh
ciBhZXNDdHJQYXJhbXM0PSB7CiAgICAgbmFtZTogImFlcy1jdHIiLAotICAgIGNvdW50ZXI6IGFz
Y2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pGTElFUE1yIiksCisgICAgY291bnRlcjogaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZiIpLAogICAg
IGxlbmd0aDogMiwKIH0KIHZhciBhZXNDdHJQYXJhbXM1PSB7CisgICAgbmFtZTogImFlcy1jdHIi
LAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVh
NDY0YzQ5NDU1MDRkZmUiKSwKKyAgICBsZW5ndGg6IDIsCit9Cit2YXIgYWVzQ3RyUGFyYW1zNj0g
ewogICAgIG5hbWU6ICJhZXMtY3RyIiwKICAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJy
YXkoIjZhNmU0Zjc3MzkzOTZmNGY1YTQ2NGM0OTQ1NTA0ZGZmIiksCiAgICAgbGVuZ3RoOiA4LAog
fQordmFyIGFlc0N0clBhcmFtczc9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRl
cjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRm
ZSIpLAorICAgIGxlbmd0aDogOCwKK30KK3ZhciBhZXNDdHJQYXJhbXM4PSB7CisgICAgbmFtZTog
ImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzcz
OTM5NmY0ZmZmZmZmZmZmZmZmZmZmZmYiKSwKKyAgICBsZW5ndGg6IDY0LAorfQordmFyIGFlc0N0
clBhcmFtczk9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5n
VG9VaW50OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmZmZmZmZmZmZmZmZmZmZmZSIpLAorICAgIGxl
bmd0aDogNjQsCit9Cit2YXIgYWVzQ3RyUGFyYW1zMTA9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIs
CisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjdmZmZm
ZmZmZmZmZmZmZmZmZiIpLAorICAgIGxlbmd0aDogNjYsCit9Cit2YXIgYWVzQ3RyUGFyYW1zMTE9
IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCI2YTZlNGY3NzM5Mzk2ZjdmZmZmZmZmZmZmZmZmZmZmZSIpLAorICAgIGxlbmd0aDogNjYs
Cit9Cit2YXIgYWVzQ3RyUGFyYW1zMTI9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291
bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZiIpLAorICAgIGxlbmd0aDogMTI4LAorfQordmFyIGFlc0N0clBhcmFtczEzPSB7CisgICAg
bmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUiKSwKKyAgICBsZW5ndGg6IDEyOCwKK30KIHZh
ciByYXdLZXkgPSBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b09aRkxJRVBNciIpOwogdmFyIGV4
cGVjdGVkQ2lwaGVyVGV4dCA9ICJhNWY5NDBlOTM0MDZkNGJkOWI3MzE4ZTY1M2Q0Y2I5ZDFhZjQ5
N2Y1MmZjYmI2NTlhMDM4ZTcxMWU4YmQ2MWZiNDg2MzkzMWQyNTkxMWUyZTlmZjMwY2YzN2VjMjdk
ZDgxM2E2MjgzMCI7Ci12YXIgZXhwZWN0ZWRDaXBoZXJUZXh0NCA9ICJhNWY5NDBlOTM0MDZkNGJk
OWI3MzE4ZTY1M2Q0Y2I5ZDFhZjQ5N2Y1MmZjYmI2NTlhMDM4ZTcxMWU4YmQ2MWZiOTZmZWQ3ZmE1
YmY3NWQyODJhNTQ3NzU4M2I5NzBiMTcxNzQwYTJmYSI7Ci12YXIgZXhwZWN0ZWRDaXBoZXJUZXh0
NSA9ICI2YTQ2MWViM2Y2NGVmNGM0NjY1OTdiYTg3N2E5NTEyYmYyMjQwNTFjODhhZTg4NWM1NjVh
N2FkYTU2ODQzZjNiODRlYzc1OTZkZjY3Y2JmZGNmYmViMjc1NzY4ZjRkNzI3MGNlN2RkZiI7Cit2
YXIgZXhwZWN0ZWRDaXBoZXJUZXh0NCA9ICI2YTQ2MWViM2Y2NGVmNGM0NjY1OTdiYTg3N2E5NTEy
YjVhYjQxYjQzMzhlZGMyODIyZDFmMGRmYWMwY2VjMDcxNDk3NjZlMTg5ZmE0MjZkNWVhMzBmZTU0
MTAxODM2MjA4OGRiMjExNyI7Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0NSA9ICJiMmQyMjk1YTJm
YTA2ZWY1NzA3NTJjN2QxYmMwOGZjNjRlNGM1ZWZmY2UwZGE2ZmY2ZDBhNWZhOTNhOGQ1YjZiMTY4
YzU4MTEwM2U2OTFhNjJjNTIyOWYwODA4MmY4MzIxYjRkNjU0YiI7Cit2YXIgZXhwZWN0ZWRDaXBo
ZXJUZXh0NiA9ICI2YTQ2MWViM2Y2NGVmNGM0NjY1OTdiYTg3N2E5NTEyYmYyMjQwNTFjODhhZTg4
NWM1NjVhN2FkYTU2ODQzZjNiODRlYzc1OTZkZjY3Y2JmZGNmYmViMjc1NzY4ZjRkNzI3MGNlN2Rk
ZiI7Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0NyA9ICJiMmQyMjk1YTJmYTA2ZWY1NzA3NTJjN2Qx
YmMwOGZjNjRlNGM1ZWZmY2UwZGE2ZmY2ZDBhNWZhOTNhOGQ1YjZiYmUxYzQ2NGViM2E1ZGI3ODU3
MTc1ZWQwMTZjODA3NzhkNmQ3N2VjNSI7Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0OCA9ICIzYzM3
YzVlYTAxN2QyMDFiZjYwOGY4NmIwMjI1YzBkNjE2ZDBlNGYwZGRkN2FiYTk2ZDRiYjRlZTNiODI5
ODMyYjVhYjJjMjk2M2QxZDZiMzJlZjNkYjU5OTU2YmMxNTI0NWIxMDFjOSI7Cit2YXIgZXhwZWN0
ZWRDaXBoZXJUZXh0OSA9ICI4NjI1MzI1MjAyN2QyYjZmZDZjOTVkNzg0OWY1MWFiYzE4M2Q4NWE2
MzkzZTcyMjBmZDViZGM2YTRmMDFjYTk2NWFlOGE3YTJlNmRjZjg4ZDZjMDY5MGU0N2JjZWEwNzFl
NzkwMjc3YSI7Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0MTAgPSAiYmUwNjE1Yzg0ODVlMmU3YWRj
NGU1NDdiNmFlYTk4ZjU5MDk1NTQ3ZDQyZjliMTQ3MWVkZmU0NjQxNTJiMTI5NGY1NjViMzJjOWVk
Mzg1MDQyMjkxYmVjM2U0YWUzMTJjM2YzMjA4MGIiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEx
ID0gIjQ4ZWVmMmRmZTdjMmQ0MWQ5Mzc0N2EyYzlmNWE1MGFkOWEwYzU1ODQ3MDFkN2M0MWQ3MWQ3
MDdhMjdjZTkyYjVkY2FkMTcyZjc5ZjJlMjYzMWY5MmMwNmU1NTY3MmFkN2E3NWViODdmIjsKK3Zh
ciBleHBlY3RlZENpcGhlclRleHQxMiA9ICIxMDY1YzcxMDdmZDMzYTNmMWUwNTYyNzIzOGQzMDk1
NTA1NTI3NGY1MDdjODI3MTZjY2ZiNzdmNjA5NDQ2YzA3YjFmMDdiODBmYzk4OWI5N2JlNDkwMDcx
MzM5NTNhZDE3M2ExMWNkNyI7Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0MTMgPSAiYjkzNjQyNjY4
NmY5ZDc5YmY1M2NmOWJiNmE4MTA5OTczNDZmODc1YzQ3OTA2ODA0MTU1NjQ2NzM3NWY3MDMxNTQ5
NmEzN2E3M2NjMzc0MzJjZGI2NTNmYzQ5MDg1NDQ0ZTNjYjcwZDMiOwogCiBjcnlwdG8uc3VidGxl
LmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWN0ciIsIGV4dHJhY3RhYmxlLCBbImVuY3J5
cHQiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBrZXkgPSByZXN1bHQ7CkBAIC03Niwx
MyArMTI0LDY5IEBAIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJhZXMt
Y3RyIiwgZXh0cmFjdGFibGUsIFsiZW5jcnlwdCJdKS50aGVuCiAKICAgICBzaG91bGRCZSgiYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ0Iik7CiAKLSAg
ICBkZWJ1ZygiTGVuZ3RoID0gOCwgb3ZlcmZsb3ciKTsKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMiwg
b3ZlcmZsb3ciKTsKICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFt
czUsIGtleSwgcGxhaW5UZXh0KTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgY2lw
aGVyVGV4dCA9IHJlc3VsdDsKIAogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhl
clRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDUiKTsKIAorICAgIGRlYnVnKCJMZW5ndGggPSA4
LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFy
YW1zNiwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBj
aXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lw
aGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NiIpOworCisgICAgZGVidWcoIkxlbmd0aCA9
IDgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQ
YXJhbXM3LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
IGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhj
aXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ3Iik7CisKKyAgICBkZWJ1ZygiTGVuZ3Ro
ID0gNjQsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXND
dHJQYXJhbXM4LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmlu
ZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ4Iik7CisKKyAgICBkZWJ1ZygiTGVu
Z3RoID0gNjQsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChh
ZXNDdHJQYXJhbXM5LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0
cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ5Iik7CisKKyAgICBkZWJ1Zygi
TGVuZ3RoID0gNjYsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlw
dChhZXNDdHJQYXJhbXMxMCwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9I
ZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0MTAiKTsKKworICAgIGRl
YnVnKCJMZW5ndGggPSA2Niwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5l
bmNyeXB0KGFlc0N0clBhcmFtczExLCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQxMSIpOworCisg
ICAgZGVidWcoIkxlbmd0aCA9IDEyOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczEyLCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRC
ZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQxMiIp
OworCisgICAgZGVidWcoIkxlbmd0aCA9IDEyOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5
cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczEzLCBrZXksIHBsYWluVGV4dCk7Cit9KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBz
aG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRl
eHQxMyIpOworCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390030</attachid>
            <date>2020-02-06 16:55:38 -0800</date>
            <delta_ts>2020-02-09 20:31:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200207095531.patch</filename>
            <type>text/plain</type>
            <size>31557</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyZmRmZGM0ZjgzZWQ3
MWZkZTBhZDRjNjY2ZDU4ZmNkYTQwODIwMS4uNDRjNjI2YTc3OTc5MzcyYTMwZTQwMTVmYWMwNjZi
ZjdmMDYwNjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTA2ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGUgaGVscGVyLCBzaW1wbGlmeSB0aGUgQUVT
LUNUUiBpbXBsZW1lbnRhdGlvbiBvbiBDb21tb25DcnlwdG8uIAorCisgICAgICAgICogY3J5cHRv
L0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Q3J5cHRvQWxnb3JpdGht
Q291bnRlckJsb2NrSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUNv
dW50ZXJCbG9ja0hlbHBlcjo6Y291bnRUb092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Y291bnRlclZlY3RvckFmdGVy
T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQ291bnRl
ckJsb2NrSGVscGVyOjpzZXRCeXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUNvdW50ZXJCbG9ja0hlbHBlcjo6Z2V0Qnl0ZSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFF
U19DVFIpOgorICAgICAgICAoV2ViQ29yZTo6YmlnSW50ZWdlclRvU2l6ZVQpOiBEZWxldGVkLgor
CiAyMDIwLTAyLTA1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgW1BsYXlTdGF0aW9uXSBNaXNjZWxsYW5lb3VzIGJ1aWxkIGZpeGVzIEZlYnJ1YXJ5IDIw
MjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGZlYmYwNWViMDU5NzI4ZjZiZWE5ODE5MzQ2MjYwMDBmOGNiNTBhZTQu
LjUwZDQ0NmFkYjFjNDE2ZGJkMWY1OWMyYjNkMmMzNmM3MmUwNGJkMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NCw2ICsy
NzQsNyBAQAogCQkwQkUwMzBBMjBGMzExMkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRTAzMEEx
MEYzMTEyRkIwMDNDMUE0NiAvKiBSZW5kZXJMaW5lQm94TGlzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNF
MSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9y
bUxvY2F0aW9uLmggKi87IH07CiAJCTBDNDUzNDI4MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlv
bi5oICovOyB9OworCQkwQzg2MDZFNjIzRUNFQ0FBMDAyQkI5MzggLyogQ3J5cHRvQWxnb3JpdGht
Q291bnRlckJsb2NrSGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQzg2MDZFNDIzRUNFQ0E5MDAyQkI5MzggLyogQ3J5cHRvQWxnb3JpdGhtQ291
bnRlckJsb2NrSGVscGVyLmggKi87IH07CiAJCTBFNzA1OEY0MUJDNUNFREEwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwM0MwNzQxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwM0MwNzMxODg0Njk1RTAwQTVGOENB
IC8qIFN5c3RlbU1lbW9yeS5oICovOyB9OwogCQkwRjAzQzA3NTE4ODQ4MDU1MDBBNUY4Q0EgLyog
SW5zcGVjdG9yT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMzLDE3
ICs4MzQsMTcgQEAKIAkJMkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDAxMjNGMUZBRDg3RDYwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRBRjM0M0QxRUE3RTBG
MTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYzNDNCMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25z
dGFudFByb3BlcnR5TWFwLmggKi87IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBD
b21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJs
aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MkRERTFDRTMxRjU3NEFFNTAwRDFBMzY1IC8qIEpTVlJGaWVsZE9mVmlldy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRTAxRjU3NEFEMTAwRDFB
MzY1IC8qIEpTVlJGaWVsZE9mVmlldy5oICovOyB9OwotCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEz
NjUgLyogSlNWUkRpc3BsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEREUxQ0RFMUY1NzRBQUIwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheS5oICovOyB9
OwotCQkyRERFMUNGODFGNTc0QzM5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXlDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0U2
MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNhcGFiaWxpdGllcy5oICovOyB9OwotCQky
RERFMUNGQTFGNTc0QzNFMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRTgxRjU3NEJGRjAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCAqLzsgfTsKLQkJMkRERTFDRkMxRjU3NENFRTAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0VBMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRGlz
cGxheUV2ZW50UmVhc29uLmggKi87IH07Ci0JCTJEREUxQ0ZFMUY1NzRDRjMwMEQxQTM2NSAvKiBK
U1ZSRXllLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RERFMUNFQzFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkV5ZS5oICovOyB9OwotCQkyRERFMUQwMDFG
NTc0Q0Y3MDBEMUEzNjUgLyogSlNWUkV5ZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0VFMUY1NzRCRkYwMEQxQTM2NSAvKiBK
U1ZSRXllUGFyYW1ldGVycy5oICovOyB9OwotCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyog
SlNWUkZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTFDRjAxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJGcmFtZURhdGEuaCAqLzsgfTsK
LQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1IC8qIEpTVlJMYXllckluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0YyMUY1NzRCRkYwMEQx
QTM2NSAvKiBKU1ZSTGF5ZXJJbml0LmggKi87IH07Ci0JCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2
NSAvKiBKU1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTFDRjQxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJQb3NlLmggKi87IH07Ci0JCTJE
REUxRDA4MUY1NzREMEUwMEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGNjFGNTc0QkZGMDBE
MUEzNjUgLyogSlNWUlN0YWdlUGFyYW1ldGVycy5oICovOyB9OworCQkyRERFMUNFMzFGNTc0QUU1
MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9
OworCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERFMUNGODFGNTc0QzM5MDBEMUEzNjUgLyogKG51
bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERFMUNGQTFG
NTc0QzNFMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyB9OworCQkyRERFMUNGQzFGNTc0Q0VFMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUg
LyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERF
MUQwMDFGNTc0Q0Y3MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyB9OworCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogKG51bGwpIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERFMUQwNDFGNTc0RDA1MDBE
MUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9Owor
CQkyRERFMUQwNjFGNTc0RDBBMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyB9OworCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQkyREU3MDAyMzE5MkZF
ODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU3MDAyMjE5MkZFODJBMDBCMDk3NUMg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi87IH07CiAJCTJERjUxMkNFMUQ4NzNFNDcw
MDFENjc4MCAvKiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjUxMkNDMUQ4NzNFNDcwMDFENjc4MCAv
KiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaCAqLzsgfTsKIAkJMkRGQTQ4OEYxREI1NDFE
MDAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRGQTQ4OEUxREI1NDFDMjAwMzYyQjk5IC8qIEJ1ZmZlclNvdXJj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
NTgwLDcgKzI1ODEsNiBAQAogCQk4QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFu
Y2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9Owog
CQk4QkQzN0E2ODIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEJEMzdBNjcyMDFCQjM5
QzAwMTE3MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RTRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi87
IH07Ci0JCThFNjIwRTgxMjBFRTYwMjQwMDdCQzVFRiAvKiBWUlBsYXRmb3JtRGlzcGxheUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU2MjBF
ODAyMEVFNUZGQzAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEVDNkM5NjMyMDFBMjUx
NjAwRkJGQTUzIC8qIEdhcExlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCThGNjc1NjFC
MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRR
dWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkwMDE3NzQxMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzczRTEyRTAz
NDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovOyB9OwpAQCAtNTY3OCw2
ICs1Njc4LDcgQEAKIAkJMEMzRjFGNTkxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxv
Y2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUzNDI1MTBDREJCRkEwMDg2OTE1
NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVW5pZm9y
bUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBDODYwNkU0MjNFQ0VD
QTkwMDJCQjkzOCAvKiBDcnlwdG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxwZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2NrSGVs
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1
QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51
Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNz
Q29udGV4dEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0SW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NDMsOCArMTA1NDQsNiBAQAogCQk4RTMzQ0Q5
MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZldGNo
UmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEU2MjBFN0UyMEVFNUZF
MjAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZSUGxhdGZvcm1EaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOEU2MjBFODAyMEVFNUZGQzAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZSUGxhdGZvcm1EaXNw
bGF5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThFQzZDOTYxMjAxQTI1
MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2FwTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGNjc1NjE5MTI4
OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY5MzRE
ODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTRXhlY1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRXhlY1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNTgyMCw3ICsyNTgxOSw2IEBACiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5l
dHdvcmsgKi8sCiAJCQkJMUEyRTZFNTYwQ0M1NTFFMDAwNEEyMDYyIC8qIHNxbCAqLywKIAkJCQlC
MkMzRDlFQzBEMDA2QzFEMDBFRjZGMjYgLyogdGV4dCAqLywKLQkJCQlFMTg4MjM1RjIwMzFGNTBG
MDBCNDJERjMgLyogdnIgKi8sCiAJCQkJREZEQjkxMkNGOEU4OEE2REExQUQyNjRGIC8qIEFib3J0
YWJsZVRhc2tRdWV1ZS5oICovLAogCQkJCTQ5QUUyRDk0MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxj
dWxhdGlvblZhbHVlLmNwcCAqLywKIAkJCQk0OUFFMkQ5NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2Fs
Y3VsYXRpb25WYWx1ZS5oICovLApAQCAtMjY5OTcsNiArMjY5OTUsNyBAQAogCQkJCUUxRkUxMzcz
MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25DcnlwdG9VdGlsaXRpZXMuaCAqLywKIAkJCQlFMTcy
QUY2QjE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmNwcCAqLywKIAkJCQlFMTcy
QUY2QzE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggKi8sCisJCQkJMEM4NjA2
RTQyM0VDRUNBOTAwMkJCOTM4IC8qIENyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5o
ICovLAogCQkJCUUxQzY1NzI0MTgxNkU2OUQwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLmggKi8sCiAJCQkJNTczNDg5MzgxREFDNkI2RDAwREMwNjY3IC8qIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMuaCAqLywKIAkJCQk1NzRBQzc1MzFEQUMzNjdEMDBFOTc0NEMgLyogQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5pZGwgKi8sCkBAIC0yODg5OSw2ICsyODg5OCwxNyBAQAog
CQkJZmlsZXMgPSAoCiAJCQkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBI
ZWFkZXJzICovLAogCQkJCTcyMTQ0MzMxMjIzRUM4NTQwMEYxMkZGNyAvKiAobnVsbCkgaW4gSGVh
ZGVycyAqLywKKwkJCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8sCisJCQkJMkRERTFDRjgxRjU3NEMzOTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJz
ICovLAorCQkJCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAq
LywKKwkJCQkyRERFMUNGQzFGNTc0Q0VFMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8s
CisJCQkJMkRERTFDRkUxRjU3NENGMzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAor
CQkJCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJ
CQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkRERTFEMDIxRjU3NEQwMDAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJE
REUxRDA0MUY1NzREMDUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERF
MUQwNjFGNTc0RDBBMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFE
MDgxRjU3NEQwRTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4
MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4g
SGVhZGVycyAqLywKQEAgLTI5MzgwLDYgKzI5MzkwLDcgQEAKIAkJCQk1N0UxRTVBNzFFOERCRDNF
MDBFRTM3QzkgLyogQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I1RjgwOTFFNUQxQTk4MDBGMzRGOTAgLyogQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Nzc0ODMxMjFEQURDNTVEMDA3MTZFRjkgLyogQ3J5
cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwQzg2MDZFNjIz
RUNFQ0FBMDAyQkI5MzggLyogQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2NrSGVscGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3Jp
dGhtRUNESC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2ODE0MkExRTZGOTlDMTAwRTc3NzU0IC8q
IENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RUVBQTQ3MUU5RUQyREQwMDcwMTEyNCAvKiBDcnlwdG9BbGdvcml0aG1FQ0RTQS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTE2MCwxNyArMzExNzEsNiBAQAogCQkJCUJFOEVGMDREMTcxQzkwMTQw
MDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkU3OTE0
OTFGOTdFMDFBMDAxOTk3MzkgLyogSlNWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc3NzlCRDk2MUYzMjI0NkEwMEMyMTQxNyAvKiBKU1Zpc3VhbFZpZXdwb3J0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXkuaCBp
biBIZWFkZXJzICovLAotCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkExRjU3NEMzRTAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZDMUY1
NzRDRUUwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLywK
LQkJCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZW
aWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogSlNW
UkZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1
IC8qIEpTVlJMYXllckluaXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA2MUY1NzREMEEw
MEQxQTM2NSAvKiBKU1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDgxRjU3NEQw
RTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJF
MjA1MDgyMThBNDYwQzMwMDgwNjQ3RSAvKiBKU1ZUVEN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0FGOUIyMEQxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1Db3VudGVyQmxvY2tIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG1Db3VudGVyQmxvY2tIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmI5NGZlM2YzOTk5NjFmNjc1
NDY3MzgxYzcwY2RjMGM1NmIwNDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oCkBAIC0wLDAgKzEsMTI0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCisKKyNpbmNsdWRlIDxiaXRzZXQ+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHNpemVfdCBCbG9ja1NpemUgPSAxNj4gLy8gQ291bnRl
ciBibG9jayBzaXplIGluIGJ5dGVzLgorY2xhc3MgQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2Nr
SGVscGVyIHsKKyAgICB1c2luZyBDb3VudGVyQmxvY2tCaXRzID0gc3RkOjpiaXRzZXQ8QmxvY2tT
aXplICogOD47CitwdWJsaWM6CisgICAgQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2NrSGVscGVy
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlclZlY3Rvciwgc2l6ZV90IGNvdW50ZXJMZW5n
dGgpCisgICAgICAgIDogbV9jb3VudGVyTGVuZ3RoKGNvdW50ZXJMZW5ndGgpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEJsb2NrU2l6ZSA+PSBzaXplb2Yoc2l6ZV90KSk7CisgICAgICAg
IEFTU0VSVChjb3VudGVyVmVjdG9yLnNpemUoKSAqIDggPT0gbV9iaXRzLnNpemUoKSk7CisgICAg
ICAgIEFTU0VSVChjb3VudGVyTGVuZ3RoIDw9IG1fYml0cy5zaXplKCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IEJsb2NrU2l6ZTsgaSsrKQorICAgICAgICAgICAgc2V0Qnl0ZSht
X2JpdHMsIGksIGNvdW50ZXJWZWN0b3JbQmxvY2tTaXplIC0gMSAtIGldKTsKKyAgICB9CisgICAg
CisgICAgLy8gUmV0dXJuIHRoZSBjb3VudCB1bnRpbCB0aGUgY291bnRlciBiaXRzIGNvbWUgdG8g
b3ZlcmZsb3csIGNlaWwnZWQgYnkgdGhlIHNpemVfdCBtYXguCisgICAgc2l6ZV90IGNvdW50VG9P
dmVyZmxvdygpIGNvbnN0CisgICAgeworICAgICAgICBDb3VudGVyQmxvY2tCaXRzIG1hc2s7Cisg
ICAgICAgIC8vIE1ha2UgYSBtYXNrIHdob3NlIGNvdW50ZXJMZW5ndGggYml0cyBhcmUgc2V0Lgor
ICAgICAgICBtYXNrLnNldCgpOworICAgICAgICBtYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7Cisg
ICAgICAgIG1hc2suZmxpcCgpOworCisgICAgICAgIGF1dG8gY291bnRNaW51c09uZSA9IH5tX2Jp
dHMgJiBtYXNrOyAvLyBUaGUgY291bnQgdG8gb3ZlcmZsb3cgbWludXMgb25lLgorICAgICAgICAK
KyAgICAgICAgLy8gTWFrZSBhbm90aGVyIG1hc2sgdG8gY2hlY2sgaWYgdGhlIGNvdW50IGlzIGxh
cmdlciB0aGFuIHRoZSBtYXhpbXVtIHNpemUgb2Ygc2l6ZV90LgorICAgICAgICBtYXNrLnNldCgp
OworICAgICAgICBtYXNrIDw8PSBzaXplb2Yoc2l6ZV90KSAqIDg7CisgICAgICAgIGlmICgobWFz
ayAmIGNvdW50TWludXNPbmUpLmFueSgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgICAgIAorICAgICAgICAvLyBHZXQgdGhlIGJp
dHMgd2l0aGluIHRoZSBzaXplX3QgcmFuZ2UuCisgICAgICAgIGNvdW50TWludXNPbmUgJj0gfm1h
c2s7CisgICAgICAgIGlmIChjb3VudE1pbnVzT25lLmFsbCgpKSB7CisgICAgICAgICAgICAvLyBB
cyBhbGwgYml0cyBhcmUgc2V0LCBhZGRpbmcgb25lIHdvdWxkIHJlc3VsdCBpbiBhbiBvdmVyZmxv
dy4KKyAgICAgICAgICAgIC8vIFJldHVybiBzaXplX3QgbWF4IGluc3RlYWQuCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gTm93IGNvbnZlcnQgdGhlIGJpdHMgdG8gYSBzaXplX3QuCisg
ICAgICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZW9mKHNpemVfdCk7IGkrKykgeworICAgICAgICAgICAgY291bnQgPDw9IDg7CisgICAgICAg
ICAgICBjb3VudCB8PSBnZXRCeXRlKGNvdW50TWludXNPbmUsIHNpemVvZihzaXplX3QpIC0gMSAt
IGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudCArIDE7CisgICAgfQorICAgIAor
ICAgIC8vIFJlcnVybiBhIGNvdW50ZXIgYmxvY2sgdmVjdG9yIHRvIHJlc3RhcnQgd2l0aCBhZnRl
ciBvdmVyZmxvdy4KKyAgICBWZWN0b3I8dWludDhfdD4gY291bnRlclZlY3RvckFmdGVyT3ZlcmZs
b3coKSBjb25zdAorICAgIHsKKyAgICAgICAgQ291bnRlckJsb2NrQml0cyBtYXNrOworICAgICAg
ICBtYXNrLnNldCgpOworICAgICAgICBtYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7CisgICAgICAg
IGF1dG8gYml0cyA9IG1fYml0cyAmIG1hc2s7CisgICAgICAgIAorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gY291bnRlclZlY3RvcihCbG9ja1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IEJsb2NrU2l6ZTsgaSsrKQorICAgICAgICAgICAgY291bnRlclZlY3RvcltCbG9ja1Np
emUgLSAxIC0gaV0gPSBnZXRCeXRlKGJpdHMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IGNvdW50ZXJWZWN0b3I7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBz
ZXRCeXRlKENvdW50ZXJCbG9ja0JpdHMmIGJpdHMsIHNpemVfdCBpLCB1aW50OF90IGJ5dGUpCisg
ICAgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworICAgICAgICAgICAg
Yml0cy5zZXQoaSAqIDggKyBqLCBieXRlICYgMHgwMSk7IC8vIFRlc3QgdGhlIExTQiBhbmQgc2V0
IGl0IHRvIHRoZSBiaXQuCisgICAgICAgICAgICBieXRlID4+PSAxOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHN0YXRpYyB1aW50OF90IGdldEJ5dGUoY29uc3QgQ291bnRlckJsb2NrQml0
cyYgYml0cywgc2l6ZV90IGkpCisgICAgeworICAgICAgICB1aW50OF90IGJ5dGUgPSAwOworICAg
ICAgICBmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworICAgICAgICAgICAgYnl0ZSA+Pj0g
MTsKKyAgICAgICAgICAgIGlmIChiaXRzLnRlc3QoaSAqIDggKyBqKSkKKyAgICAgICAgICAgICAg
ICBieXRlIHw9IDB4ODA7IC8vIFNldCB0aGUgTVNCIGFuZCByaWdodC1zaGlmdCBvbmUgYnkgb25l
LgorICAgICAgICB9CisgICAgICAgIHJldHVybiBieXRlOworICAgIH0KKyAgICAKKyAgICBDb3Vu
dGVyQmxvY2tCaXRzIG1fYml0czsKKyAgICBjb25zdCBzaXplX3QgbV9jb3VudGVyTGVuZ3RoOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQ
VE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUFFU19DVFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1BRVNfQ1RSTWFjLmNwcAppbmRleCBiOTk3MGU3ZTZlOWVlYjczNTM3YTI4YmQwMGJkYmNmZjYx
NWJkOTUxLi5iMmEwYzFiY2FkNjZhMWJjMTVlYjdkMGViNWY4OTQ1M2QyYmRhYjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Uk1hYy5jcHAKQEAgLTI5LDIyICsyOSwxMiBAQAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogCiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtQ291bnRlckJsb2NrSGVscGVyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgi
CiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEl0IHRha2VzIHRoZSBsYXN0IFdPUkRTSVpFLzggYnl0ZXMgb2YgdGhlIGJp
Z0ludGVnZXIgYW5kIHRoZW4gY29udmVydCB0aGVtIGludG8gYSBzaXplX3QgdmFsdWUKLXN0YXRp
YyBzaXplX3QgYmlnSW50ZWdlclRvU2l6ZVQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBiaWdJbnRl
Z2VyKQotewotICAgIHNpemVfdCByZXN1bHQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSBiaWdJ
bnRlZ2VyLnNpemUoKSAtIChfX1dPUkRTSVpFIC8gOCk7IGkgPCBiaWdJbnRlZ2VyLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIHJlc3VsdCA8PD0gODsKLSAgICAgICAgcmVzdWx0ICs9IGJpZ0ludGVn
ZXJbaV07Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24gb3BlcmF0aW9u
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3RoLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcgaGFjayBvbmNl
IDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCkBAIC01MiwyMCArNDIsMTUgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09w
ZXJhdGlvbiBvcGVyYXRpb24sIGNvbnMKICAgICAvLyBDb21tb25DcnlwdG8gY3VycmVudGx5IGNh
biBuZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5vciBkZXRlY3Qgb3ZlcmZsb3cgb25jZSB0aGUg
Y291bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUgcmVzdHJpY3RlZAogICAgIC8vIGJ5IHRoZSBj
b3VudGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVudHMgdGhlIG5vbmNlIHdoaWNoIHNob3VsZCBz
dGF5IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRpb24uIFRvIHJlbWVkeSB0aGlzIGlzc3VlLAog
ICAgIC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cgYWhlYWQgYW5kIGRpdmlkZSB0aGUgb3BlcmF0
aW9uIGludG8gdHdvIHBhcnRzLgotICAgIC8vIElnbm9yZSB0aGUgY2FzZTogY291bnRlckxlbmd0
aCA+IF9fV09SRFNJWkUuCiAgICAgc2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXplKCkg
JSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyOCAr
IDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKKyAgICAKICAgICAvLyBEZXRl
Y3QgbG9vcAotICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgX19XT1JEU0laRSAmJiBudW1iZXJPZkJs
b2NrcyA+ICgxIDw8IGNvdW50ZXJMZW5ndGgpKQorICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6
ZW9mKHNpemVfdCkgKiA4ICYmIG51bWJlck9mQmxvY2tzID4gKDEgPDwgY291bnRlckxlbmd0aCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCiAgICAgLy8g
Q2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVyZmxvdwotICAgIHNpemVfdCByaWdodE1vc3Qg
PSBiaWdJbnRlZ2VyVG9TaXplVChjb3VudGVyKTsgLy8gY29udmVydCByaWdodCBtb3N0IF9fV09S
RFNJWkUgYml0cyBpbnRvIGEgc2l6ZV90IHZhbHVlLCB3aGljaCBpcyB0aGUgbG9uZ2VzdCBjb3Vu
dGVyIHdlIGNvdWxkIHBvc3NpYmx5IHVzZS4KLSAgICBzaXplX3QgY2FwYWNpdHkgPSBudW1iZXJP
ZkJsb2NrczsgLy8gU0laRV9NQVggLSBjb3VudGVyCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBf
X1dPUkRTSVpFKSB7Ci0gICAgICAgIHNpemVfdCBtYXNrID0gU0laRV9NQVggPDwgY291bnRlckxl
bmd0aDsgLy8gVXNlZCB0byBzZXQgbm9uY2UgaW4gcmlnaHRNb3N0KG5vbmNlICsgY291bnRlcikg
dG8gMXMKLSAgICAgICAgY2FwYWNpdHkgPSBTSVpFX01BWCAtIChyaWdodE1vc3R8IG1hc2spICsg
MTsKLSAgICB9Ci0gICAgaWYgKGNvdW50ZXJMZW5ndGggPT0gX19XT1JEU0laRSkKLSAgICAgICAg
Y2FwYWNpdHkgPSBTSVpFX01BWCAtIHJpZ2h0TW9zdCArIDE7CisgICAgQ3J5cHRvQWxnb3JpdGht
Q291bnRlckJsb2NrSGVscGVyPGtDQ0Jsb2NrU2l6ZUFFUzEyOD4gY291bnRlckJsb2NrSGVscGVy
KGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJC
bG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3coKTsKIAogICAgIC8vIERpdmlkZSBkYXRhIGludG8g
dHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KICAgICBzaXplX3QgaGVhZFNpemUgPSBkYXRhLnNpemUo
KTsKQEAgLTEwMSwxNyArODYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiB0cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29ucwogCiAgICAgLy8g
c2Vjb25kIHBhcnQ6IGNvbXB1dGUgdGhlIHJlbWFpbmluZyBkYXRhIGFuZCBhcHBlbmQgdGhlbSB0
byB0aGUgaGVhZC4KICAgICAvLyByZXNldCBjb3VudGVyCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
bWFpbmluZ0NvdW50ZXIoY291bnRlci5zaXplKCkpOwotICAgIHNpemVfdCBjb3VudGVyT2Zmc2V0
ID0gY291bnRlckxlbmd0aCAlIDg7Ci0gICAgc2l6ZV90IG5vbmNlT2Zmc2V0ID0gY291bnRlci5z
aXplKCkgLSBjb3VudGVyTGVuZ3RoIC8gOCAtICEhY291bnRlck9mZnNldDsKLSAgICBtZW1jcHko
cmVtYWluaW5nQ291bnRlci5kYXRhKCksIGNvdW50ZXIuZGF0YSgpLCBub25jZU9mZnNldCk7IC8v
IGNvcHkgdGhlIG5vbmNlCi0gICAgLy8gc2V0IHRoZSBtaWRkbGUgYnl0ZQotICAgIGlmICghIWNv
dW50ZXJPZmZzZXQpIHsKLSAgICAgICAgc2l6ZV90IG1hc2sgPSBTSVpFX01BWCA8PCBjb3VudGVy
T2Zmc2V0OwotICAgICAgICByZW1haW5pbmdDb3VudGVyW25vbmNlT2Zmc2V0XSA9IGNvdW50ZXJb
bm9uY2VPZmZzZXRdICYgbWFzazsKLSAgICB9Ci0gICAgbWVtc2V0KHJlbWFpbmluZ0NvdW50ZXIu
ZGF0YSgpICsgbm9uY2VPZmZzZXQgKyAhIWNvdW50ZXJPZmZzZXQsIDAsIGNvdW50ZXJMZW5ndGgg
LyA4KTsgLy8gcmVzZXQgdGhlIGNvdW50ZXIKLQorICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5p
bmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93
KCk7CiAgICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NN
b2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVy
LmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNU
Ul9CRSwgJmNyeXB0b3IpOwogICAgIGlmIChzdGF0dXMpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiZTExMmQ1MzdhZWYwNjViMmJmMzYxZTEy
ZmRlMTQzZDQ2N2E2MzEuLmI4OTI1Mzc0MDAzZjZmNWU5OTA3NWY5MjZhZWNlY2JjMWNiZjBkYTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0wNiAgWW9zaGlha2kgSml0c3VrYXdhICA8
eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFtXZWJDcnlwdG9dW0NvbW1v
bkNyeXB0b10gSW5jb3JyZWN0IEFFUy1DVFIgd2l0aCBjb3VudGVyTGVuZ3RoIGxvbmdlciB0aGFu
IDY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcy
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdCBjYXNlcyB3aGVyZSB0aGUgY291bnRlciBsZW5ndGggaXMgNjYgYW5kIDEyOCwgYW5kIHRo
ZSBjb3VudGVyIGNhcGFjaXR5CisgICAgICAgIHRvIG92ZXJmbG93IGlzIDEgYW5kIDIuCisgICAg
ICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC5o
dG1sOgorCiAyMDIwLTAyLTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMjU0NDI4KTogWyBtYWNPUyB3azEgXSBpbnNwZWN0b3IvY2Fu
dmFzL3JlY29yZGluZy0yZC1mdWxsLmh0bWwgYmVjYW1lIHNsb3dlciwgZmxha2lseSB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQt
a2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMt
Y3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKaW5kZXggNmU0MjkxMjZmNjBiMjJh
MDJmYTlmNmU1NWY1NDNjY2RhOTFhMzI3My4uMGIwM2NmNjc5NGI0NGE0MzNiZTc5YzdiNzVjYTY5
YzQ0YTg5ZjNkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3Ry
LWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRv
L3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKQEAgLTExLDgg
KzExLDI0IEBAIExlbmd0aCA9IDY1CiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkg
aXMgZXhwZWN0ZWRDaXBoZXJUZXh0CiBMZW5ndGggPSAyLCBvdmVyZmxvdwogUEFTUyBieXRlc1Rv
SGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDQKLUxlbmd0aCA9IDgs
IG92ZXJmbG93CitMZW5ndGggPSAyLCBvdmVyZmxvdwogUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNp
cGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDUKK0xlbmd0aCA9IDgsIG92ZXJmbG93CitQ
QVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0Ngor
TGVuZ3RoID0gOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBp
cyBleHBlY3RlZENpcGhlclRleHQ3CitMZW5ndGggPSA2NCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ4CitMZW5ndGggPSA2
NCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3Rl
ZENpcGhlclRleHQ5CitMZW5ndGggPSA2Niwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmlu
ZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQxMAorTGVuZ3RoID0gNjYsIG92ZXJm
bG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJU
ZXh0MTEKK0xlbmd0aCA9IDEyOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBo
ZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQxMgorTGVuZ3RoID0gMTI4LCBvdmVyZmxvdwor
UEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDEz
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5
cHQuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVu
Y3J5cHQuaHRtbAppbmRleCAzNzAxNDU4YzcxNmQxOTUwNzdlZGU1Y2QzOTcwMjU2NDMzNjMxYzM5
Li45ZmJjN2UwMGZhNWYyNjZjODAzMjE5YjRkZGY1NzUzODBjM2IzMWJjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlw
dC5odG1sCkBAIC0zMiwxOCArMzIsNjYgQEAgdmFyIGFlc0N0clBhcmFtczMgPSB7CiB9CiB2YXIg
YWVzQ3RyUGFyYW1zND0gewogICAgIG5hbWU6ICJhZXMtY3RyIiwKLSAgICBjb3VudGVyOiBhc2Np
aVRvVWludDhBcnJheSgiam5Pdzk5b09aRkxJRVBNciIpLAorICAgIGNvdW50ZXI6IGhleFN0cmlu
Z1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYiKSwKICAgICBs
ZW5ndGg6IDIsCiB9CiB2YXIgYWVzQ3RyUGFyYW1zNT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwK
KyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGY1YTQ2
NGM0OTQ1NTA0ZGZlIiksCisgICAgbGVuZ3RoOiAyLAorfQordmFyIGFlc0N0clBhcmFtczY9IHsK
ICAgICBuYW1lOiAiYWVzLWN0ciIsCiAgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5
KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZiIpLAogICAgIGxlbmd0aDogOCwKIH0K
K3ZhciBhZXNDdHJQYXJhbXM3PSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6
IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmUi
KSwKKyAgICBsZW5ndGg6IDgsCit9Cit2YXIgYWVzQ3RyUGFyYW1zOD0geworICAgIG5hbWU6ICJh
ZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3Mzkz
OTZmNGZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiA2NCwKK30KK3ZhciBhZXNDdHJQ
YXJhbXM5PSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1Rv
VWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZmZmZmZmZmZmZmZmZmZmZmUiKSwKKyAgICBsZW5n
dGg6IDY0LAorfQordmFyIGFlc0N0clBhcmFtczEwPSB7CisgICAgbmFtZTogImFlcy1jdHIiLAor
ICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY3ZmZmZmZm
ZmZmZmZmZmZmZmYiKSwKKyAgICBsZW5ndGg6IDY2LAorfQordmFyIGFlc0N0clBhcmFtczExPSB7
CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJh
eSgiNmE2ZTRmNzczOTM5NmY3ZmZmZmZmZmZmZmZmZmZmZmUiKSwKKyAgICBsZW5ndGg6IDY2LAor
fQordmFyIGFlc0N0clBhcmFtczEyPSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50
ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmYiKSwKKyAgICBsZW5ndGg6IDEyOCwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMz0geworICAgIG5h
bWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoImZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlIiksCisgICAgbGVuZ3RoOiAxMjgsCit9CiB2YXIg
cmF3S2V5ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKTsKIHZhciBleHBl
Y3RlZENpcGhlclRleHQgPSAiYTVmOTQwZTkzNDA2ZDRiZDliNzMxOGU2NTNkNGNiOWQxYWY0OTdm
NTJmY2JiNjU5YTAzOGU3MTFlOGJkNjFmYjQ4NjM5MzFkMjU5MTFlMmU5ZmYzMGNmMzdlYzI3ZGQ4
MTNhNjI4MzAiOwotdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDQgPSAiYTVmOTQwZTkzNDA2ZDRiZDli
NzMxOGU2NTNkNGNiOWQxYWY0OTdmNTJmY2JiNjU5YTAzOGU3MTFlOGJkNjFmYjk2ZmVkN2ZhNWJm
NzVkMjgyYTU0Nzc1ODNiOTcwYjE3MTc0MGEyZmEiOwotdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDUg
PSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmJmMjI0MDUxYzg4YWU4ODVjNTY1YTdh
ZGE1Njg0M2YzYjg0ZWM3NTk2ZGY2N2NiZmRjZmJlYjI3NTc2OGY0ZDcyNzBjZTdkZGYiOwordmFy
IGV4cGVjdGVkQ2lwaGVyVGV4dDQgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmI1
YWI0MWI0MzM4ZWRjMjgyMmQxZjBkZmFjMGNlYzA3MTQ5NzY2ZTE4OWZhNDI2ZDVlYTMwZmU1NDEw
MTgzNjIwODhkYjIxMTciOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDUgPSAiYjJkMjI5NWEyZmEw
NmVmNTcwNzUyYzdkMWJjMDhmYzY0ZTRjNWVmZmNlMGRhNmZmNmQwYTVmYTkzYThkNWI2YjE2OGM1
ODExMDNlNjkxYTYyYzUyMjlmMDgwODJmODMyMWI0ZDY1NGIiOwordmFyIGV4cGVjdGVkQ2lwaGVy
VGV4dDYgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmJmMjI0MDUxYzg4YWU4ODVj
NTY1YTdhZGE1Njg0M2YzYjg0ZWM3NTk2ZGY2N2NiZmRjZmJlYjI3NTc2OGY0ZDcyNzBjZTdkZGYi
OwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDcgPSAiYjJkMjI5NWEyZmEwNmVmNTcwNzUyYzdkMWJj
MDhmYzY0ZTRjNWVmZmNlMGRhNmZmNmQwYTVmYTkzYThkNWI2YmJlMWM0NjRlYjNhNWRiNzg1NzE3
NWVkMDE2YzgwNzc4ZDZkNzdlYzUiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDggPSAiM2MzN2M1
ZWEwMTdkMjAxYmY2MDhmODZiMDIyNWMwZDYxNmQwZTRmMGRkZDdhYmE5NmQ0YmI0ZWUzYjgyOTgz
MmI1YWIyYzI5NjNkMWQ2YjMyZWYzZGI1OTk1NmJjMTUyNDViMTAxYzkiOwordmFyIGV4cGVjdGVk
Q2lwaGVyVGV4dDkgPSAiODYyNTMyNTIwMjdkMmI2ZmQ2Yzk1ZDc4NDlmNTFhYmMxODNkODVhNjM5
M2U3MjIwZmQ1YmRjNmE0ZjAxY2E5NjVhZThhN2EyZTZkY2Y4OGQ2YzA2OTBlNDdiY2VhMDcxZTc5
MDI3N2EiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEwID0gImJlMDYxNWM4NDg1ZTJlN2FkYzRl
NTQ3YjZhZWE5OGY1OTA5NTU0N2Q0MmY5YjE0NzFlZGZlNDY0MTUyYjEyOTRmNTY1YjMyYzllZDM4
NTA0MjI5MWJlYzNlNGFlMzEyYzNmMzIwODBiIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQxMSA9
ICI0OGVlZjJkZmU3YzJkNDFkOTM3NDdhMmM5ZjVhNTBhZDlhMGM1NTg0NzAxZDdjNDFkNzFkNzA3
YTI3Y2U5MmI1ZGNhZDE3MmY3OWYyZTI2MzFmOTJjMDZlNTU2NzJhZDdhNzVlYjg3ZiI7Cit2YXIg
ZXhwZWN0ZWRDaXBoZXJUZXh0MTIgPSAiMTA2NWM3MTA3ZmQzM2EzZjFlMDU2MjcyMzhkMzA5NTUw
NTUyNzRmNTA3YzgyNzE2Y2NmYjc3ZjYwOTQ0NmMwN2IxZjA3YjgwZmM5ODliOTdiZTQ5MDA3MTMz
OTUzYWQxNzNhMTFjZDciOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEzID0gImI5MzY0MjY2ODZm
OWQ3OWJmNTNjZjliYjZhODEwOTk3MzQ2Zjg3NWM0NzkwNjgwNDE1NTY0NjczNzVmNzAzMTU0OTZh
MzdhNzNjYzM3NDMyY2RiNjUzZmM0OTA4NTQ0NGUzY2I3MGQzIjsKIAogY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoInJhdyIsIHJhd0tleSwgImFlcy1jdHIiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0
Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAga2V5ID0gcmVzdWx0OwpAQCAtNzYsMTMg
KzEyNCw2OSBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiYWVzLWN0
ciIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiXSkudGhlbgogCiAgICAgc2hvdWxkQmUoImJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NCIpOwogCi0gICAg
ZGVidWcoIkxlbmd0aCA9IDgsIG92ZXJmbG93Iik7CisgICAgZGVidWcoIkxlbmd0aCA9IDIsIG92
ZXJmbG93Iik7CiAgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQYXJhbXM1
LCBrZXksIHBsYWluVGV4dCk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGNpcGhl
clRleHQgPSByZXN1bHQ7CiAKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ1Iik7CiAKKyAgICBkZWJ1ZygiTGVuZ3RoID0gOCwg
b3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFt
czYsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lw
aGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhl
clRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDYiKTsKKworICAgIGRlYnVnKCJMZW5ndGggPSA4
LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFy
YW1zNywga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBj
aXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lw
aGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NyIpOworCisgICAgZGVidWcoIkxlbmd0aCA9
IDY0LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3Ry
UGFyYW1zOCwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0OCIpOworCisgICAgZGVidWcoIkxlbmd0
aCA9IDY0LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVz
Q3RyUGFyYW1zOSwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJp
bmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0OSIpOworCisgICAgZGVidWcoIkxl
bmd0aCA9IDY2LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQo
YWVzQ3RyUGFyYW1zMTAsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4
U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDEwIik7CisKKyAgICBkZWJ1
ZygiTGVuZ3RoID0gNjYsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5j
cnlwdChhZXNDdHJQYXJhbXMxMSwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0MTEiKTsKKworICAg
IGRlYnVnKCJMZW5ndGggPSAxMjgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZW5jcnlwdChhZXNDdHJQYXJhbXMxMiwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUo
ImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0MTIiKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSAxMjgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQYXJhbXMxMywga2V5LCBwbGFpblRleHQpOworfSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hv
dWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0
MTMiKTsKKwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390229</attachid>
            <date>2020-02-09 20:31:57 -0800</date>
            <delta_ts>2020-02-12 01:46:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200210133159.patch</filename>
            <type>text/plain</type>
            <size>20857</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyZmRmZGM0ZjgzZWQ3
MWZkZTBhZDRjNjY2ZDU4ZmNkYTQwODIwMS4uNDRjNjI2YTc3OTc5MzcyYTMwZTQwMTVmYWMwNjZi
ZjdmMDYwNjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTA2ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGUgaGVscGVyLCBzaW1wbGlmeSB0aGUgQUVT
LUNUUiBpbXBsZW1lbnRhdGlvbiBvbiBDb21tb25DcnlwdG8uIAorCisgICAgICAgICogY3J5cHRv
L0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Q3J5cHRvQWxnb3JpdGht
Q291bnRlckJsb2NrSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUNv
dW50ZXJCbG9ja0hlbHBlcjo6Y291bnRUb092ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjo6Y291bnRlclZlY3RvckFmdGVy
T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQ291bnRl
ckJsb2NrSGVscGVyOjpzZXRCeXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUNvdW50ZXJCbG9ja0hlbHBlcjo6Z2V0Qnl0ZSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFF
U19DVFIpOgorICAgICAgICAoV2ViQ29yZTo6YmlnSW50ZWdlclRvU2l6ZVQpOiBEZWxldGVkLgor
CiAyMDIwLTAyLTA1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgW1BsYXlTdGF0aW9uXSBNaXNjZWxsYW5lb3VzIGJ1aWxkIGZpeGVzIEZlYnJ1YXJ5IDIw
MjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGZlYmYwNWViMDU5NzI4ZjZiZWE5ODE5MzQ2MjYwMDBmOGNiNTBhZTQu
LmMwYWU1NDczM2M0MzA1OTM3MTQ2ZGRmYmE2MmIzMzYwOWFmZjJlZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2NzgsNiAr
NTY3OCw3IEBACiAJCTBDM0YxRjU5MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1MzQyNTEwQ0RCQkZBMDA4NjkxNTcg
LyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9j
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQzg2MDZFNDIzRUNFQ0E5
MDAyQkI5MzggLyogQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2NrSGVscGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTcwNThFRDFCQzVCQzE5MDA0NUE1
MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNv
Y29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMDAxMjNGMUZBRDg3RDYwMDUzMUQ3NiAvKiBHcmFwaGljc0Nv
bnRleHRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTk3LDYgKzI2OTk4LDcgQEAKIAkJCQlFMUZFMTM3
MzE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggKi8sCiAJCQkJRTE3
MkFGNkIxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgKi8sCiAJCQkJRTE3
MkFGNkMxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oICovLAorCQkJCTBDODYw
NkU0MjNFQ0VDQTkwMDJCQjkzOCAvKiBDcnlwdG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxwZXIu
aCAqLywKIAkJCQlFMUM2NTcyNDE4MTZFNjlEMDAyNTZDREQgLyogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllci5oICovLAogCQkJCTU3MzQ4OTM4MURBQzZCNkQwMERDMDY2NyAvKiBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzLmggKi8sCiAJCQkJNTc0QUM3NTMxREFDMzY3RDAwRTk3NDRDIC8qIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyYWFiY2MxNTAzMTViNDRmMTA1YTYyZDc4OTlhYzViMmMwMjc5MmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtQ291bnRlckJsb2Nr
SGVscGVyLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgPGJpdHNldD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8c2l6ZV90IEJs
b2NrU2l6ZSA9IDE2PiAvLyBDb3VudGVyIGJsb2NrIHNpemUgaW4gYnl0ZXMuCitjbGFzcyBDcnlw
dG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxwZXIgeworICAgIHVzaW5nIENvdW50ZXJCbG9ja0Jp
dHMgPSBzdGQ6OmJpdHNldDxCbG9ja1NpemUgKiA4PjsKK3B1YmxpYzoKKyAgICBDcnlwdG9BbGdv
cml0aG1Db3VudGVyQmxvY2tIZWxwZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyVmVj
dG9yLCBzaXplX3QgY291bnRlckxlbmd0aCkKKyAgICAgICAgOiBtX2NvdW50ZXJMZW5ndGgoY291
bnRlckxlbmd0aCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoQmxvY2tTaXplID49IHNp
emVvZihzaXplX3QpKTsKKyAgICAgICAgQVNTRVJUKGNvdW50ZXJWZWN0b3Iuc2l6ZSgpICogOCA9
PSBtX2JpdHMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKGNvdW50ZXJMZW5ndGggPD0gbV9iaXRz
LnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQmxvY2tTaXplOyBpKysp
CisgICAgICAgICAgICBzZXRCeXRlKG1fYml0cywgaSwgY291bnRlclZlY3RvcltCbG9ja1NpemUg
LSAxIC0gaV0pOworICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgY291bnQgdW50aWwgdGhlIGNv
dW50ZXIgYml0cyBjb21lIHRvIG92ZXJmbG93LCBjZWlsJ2VkIGJ5IHRoZSBzaXplX3QgbWF4Lgor
ICAgIHNpemVfdCBjb3VudFRvT3ZlcmZsb3coKSBjb25zdAorICAgIHsKKyAgICAgICAgQ291bnRl
ckJsb2NrQml0cyBtYXNrOworICAgICAgICAvLyBNYWtlIGEgbWFzayB3aG9zZSBjb3VudGVyTGVu
Z3RoIGJpdHMgYXJlIHNldC4KKyAgICAgICAgbWFzay5zZXQoKTsKKyAgICAgICAgbWFzayA8PD0g
bV9jb3VudGVyTGVuZ3RoOworICAgICAgICBtYXNrLmZsaXAoKTsKKworICAgICAgICBhdXRvIGNv
dW50TWludXNPbmUgPSB+bV9iaXRzICYgbWFzazsgLy8gVGhlIGNvdW50IHRvIG92ZXJmbG93IG1p
bnVzIG9uZS4KKworICAgICAgICAvLyBNYWtlIGFub3RoZXIgbWFzayB0byBjaGVjayBpZiB0aGUg
Y291bnQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc2l6ZSBvZiBzaXplX3QuCisgICAgICAg
IG1hc2suc2V0KCk7CisgICAgICAgIG1hc2sgPDw9IHNpemVvZihzaXplX3QpICogODsKKyAgICAg
ICAgaWYgKChtYXNrICYgY291bnRNaW51c09uZSkuYW55KCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKworICAgICAgICAvLyBHZXQgdGhl
IGJpdHMgd2l0aGluIHRoZSBzaXplX3QgcmFuZ2UuCisgICAgICAgIGNvdW50TWludXNPbmUgJj0g
fm1hc2s7CisgICAgICAgIGlmIChjb3VudE1pbnVzT25lLmFsbCgpKSB7CisgICAgICAgICAgICAv
LyBBcyBhbGwgYml0cyBhcmUgc2V0LCBhZGRpbmcgb25lIHdvdWxkIHJlc3VsdCBpbiBhbiBvdmVy
Zmxvdy4KKyAgICAgICAgICAgIC8vIFJldHVybiBzaXplX3QgbWF4IGluc3RlYWQuCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE5vdyBjb252ZXJ0IHRoZSBiaXRzIHRvIGEgc2l6ZV90LgorICAgICAg
ICBzaXplX3QgY291bnQgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVv
ZihzaXplX3QpOyBpKyspIHsKKyAgICAgICAgICAgIGNvdW50IDw8PSA4OworICAgICAgICAgICAg
Y291bnQgfD0gZ2V0Qnl0ZShjb3VudE1pbnVzT25lLCBzaXplb2Yoc2l6ZV90KSAtIDEgLSBpKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gY291bnQgKyAxOworICAgIH0KKworICAgIC8vIFJl
cnVybiBhIGNvdW50ZXIgYmxvY2sgdmVjdG9yIHRvIHJlc3RhcnQgd2l0aCBhZnRlciBvdmVyZmxv
dy4KKyAgICBWZWN0b3I8dWludDhfdD4gY291bnRlclZlY3RvckFmdGVyT3ZlcmZsb3coKSBjb25z
dAorICAgIHsKKyAgICAgICAgQ291bnRlckJsb2NrQml0cyBtYXNrOworICAgICAgICBtYXNrLnNl
dCgpOworICAgICAgICBtYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7CisgICAgICAgIGF1dG8gYml0
cyA9IG1fYml0cyAmIG1hc2s7CisKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvdW50ZXJWZWN0
b3IoQmxvY2tTaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBCbG9ja1NpemU7
IGkrKykKKyAgICAgICAgICAgIGNvdW50ZXJWZWN0b3JbQmxvY2tTaXplIC0gMSAtIGldID0gZ2V0
Qnl0ZShiaXRzLCBpKTsKKworICAgICAgICByZXR1cm4gY291bnRlclZlY3RvcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgc2V0Qnl0ZShDb3VudGVyQmxvY2tCaXRzJiBiaXRz
LCBzaXplX3QgaSwgdWludDhfdCBieXRlKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCA4OyBqKyspIHsKKyAgICAgICAgICAgIGJpdHMuc2V0KGkgKiA4ICsgaiwgYnl0ZSAmIDB4
MDEpOyAvLyBUZXN0IHRoZSBMU0IgYW5kIHNldCBpdCB0byB0aGUgYml0LgorICAgICAgICAgICAg
Ynl0ZSA+Pj0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyB1aW50OF90IGdldEJ5
dGUoY29uc3QgQ291bnRlckJsb2NrQml0cyYgYml0cywgc2l6ZV90IGkpCisgICAgeworICAgICAg
ICB1aW50OF90IGJ5dGUgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykg
eworICAgICAgICAgICAgYnl0ZSA+Pj0gMTsKKyAgICAgICAgICAgIGlmIChiaXRzLnRlc3QoaSAq
IDggKyBqKSkKKyAgICAgICAgICAgICAgICBieXRlIHw9IDB4ODA7IC8vIFNldCB0aGUgTVNCIGFu
ZCByaWdodC1zaGlmdCBvbmUgYnkgb25lLgorICAgICAgICB9CisgICAgICAgIHJldHVybiBieXRl
OworICAgIH0KKworICAgIENvdW50ZXJCbG9ja0JpdHMgbV9iaXRzOworICAgIGNvbnN0IHNpemVf
dCBtX2NvdW50ZXJMZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCmluZGV4IGI5OTcwZTdlNmU5ZWVi
NzM1MzdhMjhiZDAwYmRiY2ZmNjE1YmQ5NTEuLjBlMzk4ZDQwMTIyNDIyZWFkMGNlYjMyOGU0N2Uw
NjRlYzUxMmIwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcApAQCAtMjksMjIgKzI5LDEyIEBACiAjaWYgRU5B
QkxFKFdFQl9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMu
aCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Db3VudGVyQmxvY2tIZWxwZXIuaCIKICNpbmNs
dWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRv
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gSXQgdGFrZXMgdGhlIGxhc3QgV09SRFNJ
WkUvOCBieXRlcyBvZiB0aGUgYmlnSW50ZWdlciBhbmQgdGhlbiBjb252ZXJ0IHRoZW0gaW50byBh
IHNpemVfdCB2YWx1ZQotc3RhdGljIHNpemVfdCBiaWdJbnRlZ2VyVG9TaXplVChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGJpZ0ludGVnZXIpCi17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IGJpZ0ludGVnZXIuc2l6ZSgpIC0gKF9fV09SRFNJWkUgLyA4KTsgaSA8
IGJpZ0ludGVnZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcmVzdWx0IDw8PSA4OwotICAgICAg
ICByZXN1bHQgKz0gYmlnSW50ZWdlcltpXTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihD
Q09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6
ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhl
IGZvbGxvd2luZyBoYWNrIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4K
QEAgLTUyLDIwICs0MiwxNSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0
cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29ucwogICAgIC8vIENvbW1v
bkNyeXB0byBjdXJyZW50bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVj
dCBvdmVyZmxvdyBvbmNlIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmlj
dGVkCiAgICAgLy8gYnkgdGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUg
bm9uY2Ugd2hpY2ggc2hvdWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8g
cmVtZWR5IHRoaXMgaXNzdWUsCiAgICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBh
bmQgZGl2aWRlIHRoZSBvcGVyYXRpb24gaW50byB0d28gcGFydHMuCi0gICAgLy8gSWdub3JlIHRo
ZSBjYXNlOiBjb3VudGVyTGVuZ3RoID4gX19XT1JEU0laRS4KICAgICBzaXplX3QgbnVtYmVyT2ZC
bG9ja3MgPSBkYXRhLnNpemUoKSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGEuc2l6ZSgpIC8g
a0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4
OworCiAgICAgLy8gRGV0ZWN0IGxvb3AKLSAgICBpZiAoY291bnRlckxlbmd0aCA8IF9fV09SRFNJ
WkUgJiYgbnVtYmVyT2ZCbG9ja3MgPiAoMSA8PCBjb3VudGVyTGVuZ3RoKSkKKyAgICBpZiAoY291
bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+ICgxIDw8
IGNvdW50ZXJMZW5ndGgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKKwogICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKLSAgICBz
aXplX3QgcmlnaHRNb3N0ID0gYmlnSW50ZWdlclRvU2l6ZVQoY291bnRlcik7IC8vIGNvbnZlcnQg
cmlnaHQgbW9zdCBfX1dPUkRTSVpFIGJpdHMgaW50byBhIHNpemVfdCB2YWx1ZSwgd2hpY2ggaXMg
dGhlIGxvbmdlc3QgY291bnRlciB3ZSBjb3VsZCBwb3NzaWJseSB1c2UuCi0gICAgc2l6ZV90IGNh
cGFjaXR5ID0gbnVtYmVyT2ZCbG9ja3M7IC8vIFNJWkVfTUFYIC0gY291bnRlcgotICAgIGlmIChj
b3VudGVyTGVuZ3RoIDwgX19XT1JEU0laRSkgewotICAgICAgICBzaXplX3QgbWFzayA9IFNJWkVf
TUFYIDw8IGNvdW50ZXJMZW5ndGg7IC8vIFVzZWQgdG8gc2V0IG5vbmNlIGluIHJpZ2h0TW9zdChu
b25jZSArIGNvdW50ZXIpIHRvIDFzCi0gICAgICAgIGNhcGFjaXR5ID0gU0laRV9NQVggLSAocmln
aHRNb3N0fCBtYXNrKSArIDE7Ci0gICAgfQotICAgIGlmIChjb3VudGVyTGVuZ3RoID09IF9fV09S
RFNJWkUpCi0gICAgICAgIGNhcGFjaXR5ID0gU0laRV9NQVggLSByaWdodE1vc3QgKyAxOworICAg
IENyeXB0b0FsZ29yaXRobUNvdW50ZXJCbG9ja0hlbHBlcjxrQ0NCbG9ja1NpemVBRVMxMjg+IGNv
dW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBzaXplX3QgY2Fw
YWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRUb092ZXJmbG93KCk7CiAKICAgICAvLyBE
aXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCiAgICAgc2l6ZV90IGhlYWRT
aXplID0gZGF0YS5zaXplKCk7CkBAIC0xMDEsMTcgKzg2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24s
IGNvbnMKIAogICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBh
bmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCiAgICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZl
Y3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyKGNvdW50ZXIuc2l6ZSgpKTsKLSAgICBzaXpl
X3QgY291bnRlck9mZnNldCA9IGNvdW50ZXJMZW5ndGggJSA4OwotICAgIHNpemVfdCBub25jZU9m
ZnNldCA9IGNvdW50ZXIuc2l6ZSgpIC0gY291bnRlckxlbmd0aCAvIDggLSAhIWNvdW50ZXJPZmZz
ZXQ7Ci0gICAgbWVtY3B5KHJlbWFpbmluZ0NvdW50ZXIuZGF0YSgpLCBjb3VudGVyLmRhdGEoKSwg
bm9uY2VPZmZzZXQpOyAvLyBjb3B5IHRoZSBub25jZQotICAgIC8vIHNldCB0aGUgbWlkZGxlIGJ5
dGUKLSAgICBpZiAoISFjb3VudGVyT2Zmc2V0KSB7Ci0gICAgICAgIHNpemVfdCBtYXNrID0gU0la
RV9NQVggPDwgY291bnRlck9mZnNldDsKLSAgICAgICAgcmVtYWluaW5nQ291bnRlcltub25jZU9m
ZnNldF0gPSBjb3VudGVyW25vbmNlT2Zmc2V0XSAmIG1hc2s7Ci0gICAgfQotICAgIG1lbXNldChy
ZW1haW5pbmdDb3VudGVyLmRhdGEoKSArIG5vbmNlT2Zmc2V0ICsgISFjb3VudGVyT2Zmc2V0LCAw
LCBjb3VudGVyTGVuZ3RoIC8gOCk7IC8vIHJlc2V0IHRoZSBjb3VudGVyCi0KKyAgICBWZWN0b3I8
dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVj
dG9yQWZ0ZXJPdmVyZmxvdygpOwogICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2Rl
KG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywg
cmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAs
IGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKICAgICBpZiAoc3RhdHVzKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YmUxMTJkNTM3
YWVmMDY1YjJiZjM2MWUxMmZkZTE0M2Q0NjdhNjMxLi5iODkyNTM3NDAwM2Y2ZjVlOTkwNzVmOTI2
YWVjZWNiYzFjYmYwZGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMDYgIFlvc2hp
YWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBb
V2ViQ3J5cHRvXVtDb21tb25DcnlwdG9dIEluY29ycmVjdCBBRVMtQ1RSIHdpdGggY291bnRlckxl
bmd0aCBsb25nZXIgdGhhbiA2NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3QgY2FzZXMgd2hlcmUgdGhlIGNvdW50ZXIgbGVuZ3RoIGlzIDY2
IGFuZCAxMjgsIGFuZCB0aGUgY291bnRlciBjYXBhY2l0eQorICAgICAgICB0byBvdmVyZmxvdyBp
cyAxIGFuZCAyLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVu
Y3J5cHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBv
cnQta2V5LWVuY3J5cHQuaHRtbDoKKwogMjAyMC0wMi0wNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1NDQyOCk6IFsgbWFjT1Mgd2sx
IF0gaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctMmQtZnVsbC5odG1sIGJlY2FtZSBzbG93ZXIs
IGZsYWtpbHkgdGltZXMgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0CmluZGV4
IDZlNDI5MTI2ZjYwYjIyYTAyZmE5ZjZlNTVmNTQzY2NkYTkxYTMyNzMuLjBiMDNjZjY3OTRiNDRh
NDMzYmU3OWM3Yjc1Y2E2OWM0NGE4OWYzZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0
ZWQudHh0CkBAIC0xMSw4ICsxMSwyNCBAQCBMZW5ndGggPSA2NQogUEFTUyBieXRlc1RvSGV4U3Ry
aW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dAogTGVuZ3RoID0gMiwgb3ZlcmZs
b3cKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRl
eHQ0Ci1MZW5ndGggPSA4LCBvdmVyZmxvdworTGVuZ3RoID0gMiwgb3ZlcmZsb3cKIFBBU1MgYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ1CitMZW5ndGgg
PSA4LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVj
dGVkQ2lwaGVyVGV4dDYKK0xlbmd0aCA9IDgsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJp
bmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0NworTGVuZ3RoID0gNjQsIG92ZXJm
bG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJU
ZXh0OAorTGVuZ3RoID0gNjQsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVy
VGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0OQorTGVuZ3RoID0gNjYsIG92ZXJmbG93CitQQVNT
IGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0MTAKK0xl
bmd0aCA9IDY2LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlz
IGV4cGVjdGVkQ2lwaGVyVGV4dDExCitMZW5ndGggPSAxMjgsIG92ZXJmbG93CitQQVNTIGJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0MTIKK0xlbmd0aCA9
IDEyOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBl
Y3RlZENpcGhlclRleHQxMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHIt
aW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1j
dHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwKaW5kZXggMzcwMTQ1OGM3MTZkMTk1MDc3ZWRlNWNk
Mzk3MDI1NjQzMzYzMWMzOS4uOWZiYzdlMDBmYTVmMjY2YzgwMzIxOWI0ZGRmNTc1MzgwYzNiMzFi
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1r
ZXktZW5jcnlwdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1p
bXBvcnQta2V5LWVuY3J5cHQuaHRtbApAQCAtMzIsMTggKzMyLDY2IEBAIHZhciBhZXNDdHJQYXJh
bXMzID0gewogfQogdmFyIGFlc0N0clBhcmFtczQ9IHsKICAgICBuYW1lOiAiYWVzLWN0ciIsCi0g
ICAgY291bnRlcjogYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKSwKKyAgICBj
b3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGY1YTQ2NGM0OTQ1
NTA0ZGZmIiksCiAgICAgbGVuZ3RoOiAyLAogfQogdmFyIGFlc0N0clBhcmFtczU9IHsKKyAgICBu
YW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2YTZl
NGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZSIpLAorICAgIGxlbmd0aDogMiwKK30KK3ZhciBh
ZXNDdHJQYXJhbXM2PSB7CiAgICAgbmFtZTogImFlcy1jdHIiLAogICAgIGNvdW50ZXI6IGhleFN0
cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYiKSwKICAg
ICBsZW5ndGg6IDgsCiB9Cit2YXIgYWVzQ3RyUGFyYW1zNz0geworICAgIG5hbWU6ICJhZXMtY3Ry
IiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGY1
YTQ2NGM0OTQ1NTA0ZGZlIiksCisgICAgbGVuZ3RoOiA4LAorfQordmFyIGFlc0N0clBhcmFtczg9
IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCI2YTZlNGY3NzM5Mzk2ZjRmZmZmZmZmZmZmZmZmZmZmZiIpLAorICAgIGxlbmd0aDogNjQs
Cit9Cit2YXIgYWVzQ3RyUGFyYW1zOT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3Vu
dGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGZmZmZmZmZmZmZmZmZm
ZmZlIiksCisgICAgbGVuZ3RoOiA2NCwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMD0geworICAgIG5h
bWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0
Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiA2NiwKK30KK3ZhciBh
ZXNDdHJQYXJhbXMxMT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhT
dHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZlIiksCisg
ICAgbGVuZ3RoOiA2NiwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMj0geworICAgIG5hbWU6ICJhZXMt
Y3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoImZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiAxMjgsCit9Cit2YXIgYWVzQ3RyUGFy
YW1zMTM9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9V
aW50OEFycmF5KCJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZSIpLAorICAgIGxlbmd0
aDogMTI4LAorfQogdmFyIHJhd0tleSA9IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pGTElF
UE1yIik7CiB2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0ID0gImE1Zjk0MGU5MzQwNmQ0YmQ5YjczMThl
NjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhlNzExZThiZDYxZmI0ODYzOTMxZDI1OTExZTJl
OWZmMzBjZjM3ZWMyN2RkODEzYTYyODMwIjsKLXZhciBleHBlY3RlZENpcGhlclRleHQ0ID0gImE1
Zjk0MGU5MzQwNmQ0YmQ5YjczMThlNjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhlNzExZThi
ZDYxZmI5NmZlZDdmYTViZjc1ZDI4MmE1NDc3NTgzYjk3MGIxNzE3NDBhMmZhIjsKLXZhciBleHBl
Y3RlZENpcGhlclRleHQ1ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3YTk1MTJiZjIyNDA1
MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2ZiZWIyNzU3NjhmNGQ3
MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ0ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2
NjU5N2JhODc3YTk1MTJiNWFiNDFiNDMzOGVkYzI4MjJkMWYwZGZhYzBjZWMwNzE0OTc2NmUxODlm
YTQyNmQ1ZWEzMGZlNTQxMDE4MzYyMDg4ZGIyMTE3IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ1
ID0gImIyZDIyOTVhMmZhMDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZmZjZkMGE1
ZmE5M2E4ZDViNmIxNjhjNTgxMTAzZTY5MWE2MmM1MjI5ZjA4MDgyZjgzMjFiNGQ2NTRiIjsKK3Zh
ciBleHBlY3RlZENpcGhlclRleHQ2ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3YTk1MTJi
ZjIyNDA1MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2ZiZWIyNzU3
NjhmNGQ3MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ3ID0gImIyZDIyOTVhMmZh
MDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZmZjZkMGE1ZmE5M2E4ZDViNmJiZTFj
NDY0ZWIzYTVkYjc4NTcxNzVlZDAxNmM4MDc3OGQ2ZDc3ZWM1IjsKK3ZhciBleHBlY3RlZENpcGhl
clRleHQ4ID0gIjNjMzdjNWVhMDE3ZDIwMWJmNjA4Zjg2YjAyMjVjMGQ2MTZkMGU0ZjBkZGQ3YWJh
OTZkNGJiNGVlM2I4Mjk4MzJiNWFiMmMyOTYzZDFkNmIzMmVmM2RiNTk5NTZiYzE1MjQ1YjEwMWM5
IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ5ID0gIjg2MjUzMjUyMDI3ZDJiNmZkNmM5NWQ3ODQ5
ZjUxYWJjMTgzZDg1YTYzOTNlNzIyMGZkNWJkYzZhNGYwMWNhOTY1YWU4YTdhMmU2ZGNmODhkNmMw
NjkwZTQ3YmNlYTA3MWU3OTAyNzdhIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQxMCA9ICJiZTA2
MTVjODQ4NWUyZTdhZGM0ZTU0N2I2YWVhOThmNTkwOTU1NDdkNDJmOWIxNDcxZWRmZTQ2NDE1MmIx
Mjk0ZjU2NWIzMmM5ZWQzODUwNDIyOTFiZWMzZTRhZTMxMmMzZjMyMDgwYiI7Cit2YXIgZXhwZWN0
ZWRDaXBoZXJUZXh0MTEgPSAiNDhlZWYyZGZlN2MyZDQxZDkzNzQ3YTJjOWY1YTUwYWQ5YTBjNTU4
NDcwMWQ3YzQxZDcxZDcwN2EyN2NlOTJiNWRjYWQxNzJmNzlmMmUyNjMxZjkyYzA2ZTU1NjcyYWQ3
YTc1ZWI4N2YiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEyID0gIjEwNjVjNzEwN2ZkMzNhM2Yx
ZTA1NjI3MjM4ZDMwOTU1MDU1Mjc0ZjUwN2M4MjcxNmNjZmI3N2Y2MDk0NDZjMDdiMWYwN2I4MGZj
OTg5Yjk3YmU0OTAwNzEzMzk1M2FkMTczYTExY2Q3IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQx
MyA9ICJiOTM2NDI2Njg2ZjlkNzliZjUzY2Y5YmI2YTgxMDk5NzM0NmY4NzVjNDc5MDY4MDQxNTU2
NDY3Mzc1ZjcwMzE1NDk2YTM3YTczY2MzNzQzMmNkYjY1M2ZjNDkwODU0NDRlM2NiNzBkMyI7CiAK
IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJhZXMtY3RyIiwgZXh0cmFj
dGFibGUsIFsiZW5jcnlwdCJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGtleSA9IHJl
c3VsdDsKQEAgLTc2LDEzICsxMjQsNjkgQEAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIs
IHJhd0tleSwgImFlcy1jdHIiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0Il0pLnRoZW4KIAogICAg
IHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVy
VGV4dDQiKTsKIAotICAgIGRlYnVnKCJMZW5ndGggPSA4LCBvdmVyZmxvdyIpOworICAgIGRlYnVn
KCJMZW5ndGggPSAyLCBvdmVyZmxvdyIpOwogICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5
cHQoYWVzQ3RyUGFyYW1zNSwga2V5LCBwbGFpblRleHQpOwogfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKICAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OwogCiAgICAgc2hvdWxkQmUoImJ5dGVzVG9I
ZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NSIpOwogCisgICAgZGVi
dWcoIkxlbmd0aCA9IDgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5j
cnlwdChhZXNDdHJQYXJhbXM2LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0ZXNU
b0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ2Iik7CisKKyAgICBk
ZWJ1ZygiTGVuZ3RoID0gOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5l
bmNyeXB0KGFlc0N0clBhcmFtczcsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRl
c1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDciKTsKKworICAg
IGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRs
ZS5lbmNyeXB0KGFlc0N0clBhcmFtczgsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJi
eXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDgiKTsKKwor
ICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczksIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJl
KCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDkiKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSA2Niwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczEwLCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91
bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQx
MCIpOworCisgICAgZGVidWcoIkxlbmd0aCA9IDY2LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBj
cnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTEsIGtleSwgcGxhaW5UZXh0KTsKK30p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAg
IHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVy
VGV4dDExIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxvdyIpOworICAgIHJl
dHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTIsIGtleSwgcGxhaW5UZXh0
KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsK
KworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVk
Q2lwaGVyVGV4dDEyIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxvdyIpOwor
ICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTMsIGtleSwgcGxh
aW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJl
c3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4
cGVjdGVkQ2lwaGVyVGV4dDEzIik7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390498</attachid>
            <date>2020-02-12 01:46:07 -0800</date>
            <delta_ts>2020-02-12 15:37:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200212184553.patch</filename>
            <type>text/plain</type>
            <size>20236</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVjYjQzYWVkZGY4Y2Y4
M2FhMzMxMDA4MTg2YzYyYmRiZTM1ZWI5NC4uMzNkMzYyYTIyYjE5MTczZGJjYWM2N2NlNjBiYWEz
ZGY1MmRmMDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTEyICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGlzIGhlbHBlciwgc2ltcGxpZnkgdGhlIEFF
Uy1DVFIgaW1wbGVtZW50YXRpb24gb24gQ29tbW9uQ3J5cHRvLgorCisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OkNvdW50ZXJCbG9j
a0hlbHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3Vu
dGVyQmxvY2tIZWxwZXI6OmNvdW50VG9PdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OmNvdW50ZXJWZWN0
b3JBZnRlck92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ1RSLmg6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1BRVNfQ1RSTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DVFIpOgor
ICAgICAgICAoV2ViQ29yZTo6YmlnSW50ZWdlclRvU2l6ZVQpOiBEZWxldGVkLgorCiAyMDIwLTAy
LTEyICBTdW5ueSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY3Jhc2gg
ZHVlIHRvIHVuaW5pdGlhbGl6ZWQgY3VycmVudFN0eWxlIGluIENTU1RyYW5zaXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19DVFIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUi5jcHAKaW5kZXggYTNhNmI2NzQxN2E5ZWNhOWM4MDUyYzYyMzdhNGMzZGEyYWQ0
Zjg2Yy4uYmFjZWVkNDI4MTRlOGJiNDQyZDdmY2JkY2RlMDg5ZWJiZTY4YzdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUi5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVz
S2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZsaXBCeXRlcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTIwMCw2ICsyMDIsNjYgQEAgRXhjZXB0aW9uT3I8c2l6ZV90PiBD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGEKICAgICByZXR1cm4gQ3J5cHRvS2V5QUVTOjpnZXRLZXlMZW5ndGgocGFyYW1ldGVycyk7CiB9
CiAKK0NyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlcjo6Q291bnRlckJs
b2NrSGVscGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlclZlY3Rvciwgc2l6ZV90IGNv
dW50ZXJMZW5ndGgpCisgICAgOiBtX2NvdW50ZXJMZW5ndGgoY291bnRlckxlbmd0aCkKK3sKKyAg
ICBBU1NFUlQoY291bnRlclZlY3Rvci5zaXplKCkgPT0gQmxvY2tTaXplKTsKKyAgICBBU1NFUlQo
Y291bnRlckxlbmd0aCA8PSBCbG9ja1NpemUgKiA4KTsKKyAgICBib29sIGxpdHRsZUVuZGlhbiA9
IGZhbHNlOyAvLyBjb3VudGVyVmVjdG9yIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuLgorICAgIG1l
bWNweSgmbV9iaXRzLm1faGksIGNvdW50ZXJWZWN0b3IuZGF0YSgpLCA4KTsKKyAgICBtX2JpdHMu
bV9oaSA9IGZsaXBCeXRlc0lmTGl0dGxlRW5kaWFuKG1fYml0cy5tX2hpLCBsaXR0bGVFbmRpYW4p
OworICAgIG1lbWNweSgmbV9iaXRzLm1fbG8sIGNvdW50ZXJWZWN0b3IuZGF0YSgpICsgOCwgOCk7
CisgICAgbV9iaXRzLm1fbG8gPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbihtX2JpdHMubV9sbywg
bGl0dGxlRW5kaWFuKTsKK30KKworc2l6ZV90IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50
ZXJCbG9ja0hlbHBlcjo6Y291bnRUb092ZXJmbG93KCkgY29uc3QKK3sKKyAgICBDb3VudGVyQmxv
Y2tCaXRzIG1hc2s7CisgICAgLy8gTWFrZSBhIG1hc2sgd2hvc2UgbG93ZXN0IGNvdW50ZXJMZW5n
dGggYml0cyBhcmUgc2V0LgorICAgIG1hc2suc2V0KCk7CisgICAgbWFzayA8PD0gbV9jb3VudGVy
TGVuZ3RoOworICAgIG1hc2sgPSB+bWFzazsKKworICAgIGF1dG8gY291bnRNaW51c09uZSA9IH5t
X2JpdHMgJiBtYXNrOyAvLyBUaGUgY291bnQgdG8gb3ZlcmZsb3cgbWludXMgb25lLgorCisgICAg
Ly8gTWFrZSBhbm90aGVyIG1hc2sgdG8gY2hlY2sgaWYgdGhlIGNvdW50IGlzIGxhcmdlciB0aGFu
IHRoZSBtYXhpbXVtIHNpemUgb2Ygc2l6ZV90LgorICAgIG1hc2suc2V0KCk7CisgICAgbWFzayA8
PD0gc2l6ZW9mKHNpemVfdCkgKiA4OworICAgIGlmICgobWFzayAmIGNvdW50TWludXNPbmUpLmFu
eSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsK
KworICAgIC8vIEdldCB0aGUgYml0cyB3aXRoaW4gdGhlIHNpemVfdCByYW5nZS4KKyAgICBjb3Vu
dE1pbnVzT25lICY9IH5tYXNrOworICAgIGlmIChjb3VudE1pbnVzT25lLmFsbCgpKSB7CisgICAg
ICAgIC8vIEFzIGFsbCBiaXRzIGFyZSBzZXQsIGFkZGluZyBvbmUgd291bGQgcmVzdWx0IGluIGFu
IG92ZXJmbG93LgorICAgICAgICAvLyBSZXR1cm4gc2l6ZV90IG1heCBpbnN0ZWFkLgorICAgICAg
ICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICB9CisKKyAg
ICAvLyBOb3cgY29udmVydCB0aGUgYml0cyB0byBhIHNpemVfdC4KKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihzaXplX3QpIDw9IHNpemVvZih1aW50NjRfdCkpOworICAgIHNpemVfdCBjb3VudCA9
IGNvdW50TWludXNPbmUubV9sbzsKKyAgICByZXR1cm4gY291bnQgKyAxOworfQorCisvLyBSZXJ1
cm4gYSBjb3VudGVyIGJsb2NrIHZlY3RvciB0byByZXN0YXJ0IHdpdGggYWZ0ZXIgb3ZlcmZsb3cu
CitWZWN0b3I8dWludDhfdD4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVs
cGVyOjpjb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpIGNvbnN0Cit7CisgICAgQ291bnRlckJs
b2NrQml0cyBtYXNrOworICAgIG1hc2suc2V0KCk7CisgICAgbWFzayA8PD0gbV9jb3VudGVyTGVu
Z3RoOworICAgIGF1dG8gYml0cyA9IG1fYml0cyAmIG1hc2s7CisKKyAgICBib29sIGxpdHRsZUVu
ZGlhbiA9IGZhbHNlOyAvLyBjb3VudGVyVmVjdG9yIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuLgor
ICAgIFZlY3Rvcjx1aW50OF90PiBjb3VudGVyVmVjdG9yKEJsb2NrU2l6ZSk7CisgICAgdWludDY0
X3QgaGkgPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbihiaXRzLm1faGksIGxpdHRsZUVuZGlhbik7
CisgICAgbWVtY3B5KGNvdW50ZXJWZWN0b3IuZGF0YSgpLCAmaGksIDgpOworICAgIHVpbnQ2NF90
IGxvID0gZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oYml0cy5tX2xvLCBsaXR0bGVFbmRpYW4pOwor
ICAgIG1lbWNweShjb3VudGVyVmVjdG9yLmRhdGEoKSArIDgsICZsbywgOCk7CisKKyAgICByZXR1
cm4gY291bnRlclZlY3RvcjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfQ1RSLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSLmgKaW5kZXggMWU3YmEwZjEyY2FiODQ3MTgyNzEwMzhjZGUzMDgxNDY5
N2IwNzI0OC4uYWU1ZTExMDlmODU3MmEwMjU1ZTRjNDYxY2EwOGZmZTVjYzEwNGU1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DVFIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQwLDYgKzQxLDgzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0NUUjsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3Jl
YXRlKCk7CiAKKyAgICBjbGFzcyBDb3VudGVyQmxvY2tIZWxwZXIgeworICAgICAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBCbG9ja1NpemUgPSAxNjsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4
cGxpY2l0IENvdW50ZXJCbG9ja0hlbHBlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXJW
ZWN0b3IsIHNpemVfdCBjb3VudGVyTGVuZ3RoKTsKKworICAgICAgICAvLyBSZXR1cm4gdGhlIGNv
dW50IHVudGlsIHRoZSBjb3VudGVyIGJpdHMgY29tZSB0byBvdmVyZmxvdywgY2VpbCdlZCBieSB0
aGUgc2l6ZV90IG1heC4KKyAgICAgICAgc2l6ZV90IGNvdW50VG9PdmVyZmxvdygpIGNvbnN0Owor
CisgICAgICAgIC8vIFJlcnVybiBhIGNvdW50ZXIgYmxvY2sgdmVjdG9yIHRvIHJlc3RhcnQgd2l0
aCBhZnRlciBvdmVyZmxvdy4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvdW50ZXJWZWN0b3JB
ZnRlck92ZXJmbG93KCkgY29uc3Q7CisKKyAgICAgICAgLy8gMTI4IGJpdHMgaW50ZWdlciB3aXRo
IG1pbWludW0gcmVxdWlyZWQgb3BlcmF0b3JzLgorICAgICAgICBzdHJ1Y3QgQ291bnRlckJsb2Nr
Qml0cyB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IEFsbCA9IDB4RkZG
RkZGRkZGRkZGRkZGRlVMOworICAgICAgICAgICAgdm9pZCBzZXQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1faGkgPSBBbGw7CisgICAgICAgICAgICAgICAgbV9sbyA9IEFsbDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBhbGwoKSBjb25zdAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2hpID09IEFsbCAmJiBtX2xvID09IEFsbDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBhbnkoKSBjb25zdAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2hpIHx8IG1fbG87CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIENvdW50ZXJCbG9ja0JpdHMgb3BlcmF0b3ImKGNvbnN0IENvdW50ZXJC
bG9ja0JpdHMmIHJocykgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgICAgICAgICAubV9oaSA9IG1faGkgJiByaHMubV9oaSwKKyAgICAg
ICAgICAgICAgICAgICAgLm1fbG8gPSBtX2xvICYgcmhzLm1fbG8KKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb3VudGVyQmxvY2tCaXRzIG9wZXJhdG9y
figpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICAgICAgLm1faGkgPSB+bV9oaSwKKyAgICAgICAgICAgICAgICAgICAgLm1fbG8g
PSB+bV9sbworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IENvdW50ZXJCbG9ja0JpdHMmIG9wZXJhdG9yIDw8PSh1bnNpZ25lZCBzaGlmdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2hpZnQgPCA2NCkgeworICAgICAgICAgICAgICAg
ICAgICBtX2hpID0gKG1faGkgPDwgc2hpZnQpIHwgbV9sbyA+PiAoNjQgLSBzaGlmdCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fbG8gPDw9IHNoaWZ0OworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hpZnQgPCAxMjgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hpZnQgLT0gNjQ7CisgICAg
ICAgICAgICAgICAgICAgIG1faGkgPSBtX2xvIDw8IHNoaWZ0OworICAgICAgICAgICAgICAgICAg
ICBtX2xvID0gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBtX2hpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV9sbyA9IDA7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgQ291bnRlckJsb2NrQml0cyYgb3BlcmF0b3IgJj0oY29uc3QgQ291bnRlckJsb2Nr
Qml0cyYgcmhzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICp0aGlzID0gKnRoaXMg
JiByaHM7CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB1aW50NjRfdCBtX2hpID0gMDsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1fbG8g
PSAwOworICAgICAgICB9OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ291bnRlckJsb2NrQml0
cyBtX2JpdHM7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX2NvdW50ZXJMZW5ndGg7CisgICAgfTsK
KwogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSKCkgPSBkZWZhdWx0OwogICAg
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RS
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Uk1hYy5jcHAKaW5kZXggYjk5NzBlN2U2ZTllZWI3MzUzN2EyOGJkMDBiZGJjZmY2MTViZDk1MS4u
NWE3YTdhMDg4Nzc3OGFmNGMzODQwOTA4NWQzZDQ2Y2FjOTNjZGI0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzQsMTcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBJdCB0YWtlcyB0aGUg
bGFzdCBXT1JEU0laRS84IGJ5dGVzIG9mIHRoZSBiaWdJbnRlZ2VyIGFuZCB0aGVuIGNvbnZlcnQg
dGhlbSBpbnRvIGEgc2l6ZV90IHZhbHVlCi1zdGF0aWMgc2l6ZV90IGJpZ0ludGVnZXJUb1NpemVU
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYmlnSW50ZWdlcikKLXsKLSAgICBzaXplX3QgcmVzdWx0
ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gYmlnSW50ZWdlci5zaXplKCkgLSAoX19XT1JEU0la
RSAvIDgpOyBpIDwgYmlnSW50ZWdlci5zaXplKCk7ICsraSkgewotICAgICAgICByZXN1bHQgPDw9
IDg7Ci0gICAgICAgIHJlc3VsdCArPSBiaWdJbnRlZ2VyW2ldOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCiBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zv
cm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
b3VudGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHJlbW92ZSB0aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEzNjEwNTA+
IGlzIGZpeGVkLgpAQCAtNTIsMjAgKzQyLDE1IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zCiAg
ICAgLy8gQ29tbW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhlciByZXNldCB0aGUgY291bnRl
ciBub3IgZGV0ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbWF4IHZh
bHVlIHJlc3RyaWN0ZWQKICAgICAvLyBieSB0aGUgY291bnRlckxlbmd0aC4gSXQgdGhlbiBpbmNy
ZW1lbnRzIHRoZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1lIGZvciB0aGUgd2hvbGUgb3Bl
cmF0aW9uLiBUbyByZW1lZHkgdGhpcyBpc3N1ZSwKICAgICAvLyB3ZSBkZXRlY3QgdGhlIG92ZXJm
bG93IGFoZWFkIGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRvIHR3byBwYXJ0cy4KLSAgICAv
LyBJZ25vcmUgdGhlIGNhc2U6IGNvdW50ZXJMZW5ndGggPiBfX1dPUkRTSVpFLgogICAgIHNpemVf
dCBudW1iZXJPZkJsb2NrcyA9IGRhdGEuc2l6ZSgpICUga0NDQmxvY2tTaXplQUVTMTI4ID8gZGF0
YS5zaXplKCkgLyBrQ0NCbG9ja1NpemVBRVMxMjggKyAxIDogZGF0YS5zaXplKCkgLyBrQ0NCbG9j
a1NpemVBRVMxMjg7CisKICAgICAvLyBEZXRlY3QgbG9vcAotICAgIGlmIChjb3VudGVyTGVuZ3Ro
IDwgX19XT1JEU0laRSAmJiBudW1iZXJPZkJsb2NrcyA+ICgxIDw8IGNvdW50ZXJMZW5ndGgpKQor
ICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6ZW9mKHNpemVfdCkgKiA4ICYmIG51bWJlck9mQmxv
Y2tzID4gKDEgPDwgY291bnRlckxlbmd0aCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OworCiAgICAgLy8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVy
ZmxvdwotICAgIHNpemVfdCByaWdodE1vc3QgPSBiaWdJbnRlZ2VyVG9TaXplVChjb3VudGVyKTsg
Ly8gY29udmVydCByaWdodCBtb3N0IF9fV09SRFNJWkUgYml0cyBpbnRvIGEgc2l6ZV90IHZhbHVl
LCB3aGljaCBpcyB0aGUgbG9uZ2VzdCBjb3VudGVyIHdlIGNvdWxkIHBvc3NpYmx5IHVzZS4KLSAg
ICBzaXplX3QgY2FwYWNpdHkgPSBudW1iZXJPZkJsb2NrczsgLy8gU0laRV9NQVggLSBjb3VudGVy
Ci0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBfX1dPUkRTSVpFKSB7Ci0gICAgICAgIHNpemVfdCBt
YXNrID0gU0laRV9NQVggPDwgY291bnRlckxlbmd0aDsgLy8gVXNlZCB0byBzZXQgbm9uY2UgaW4g
cmlnaHRNb3N0KG5vbmNlICsgY291bnRlcikgdG8gMXMKLSAgICAgICAgY2FwYWNpdHkgPSBTSVpF
X01BWCAtIChyaWdodE1vc3R8IG1hc2spICsgMTsKLSAgICB9Ci0gICAgaWYgKGNvdW50ZXJMZW5n
dGggPT0gX19XT1JEU0laRSkKLSAgICAgICAgY2FwYWNpdHkgPSBTSVpFX01BWCAtIHJpZ2h0TW9z
dCArIDE7CisgICAgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNv
dW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBzaXplX3QgY2Fw
YWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRUb092ZXJmbG93KCk7CiAKICAgICAvLyBE
aXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCiAgICAgc2l6ZV90IGhlYWRT
aXplID0gZGF0YS5zaXplKCk7CkBAIC0xMDEsMTcgKzg2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24s
IGNvbnMKIAogICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBh
bmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCiAgICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZl
Y3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyKGNvdW50ZXIuc2l6ZSgpKTsKLSAgICBzaXpl
X3QgY291bnRlck9mZnNldCA9IGNvdW50ZXJMZW5ndGggJSA4OwotICAgIHNpemVfdCBub25jZU9m
ZnNldCA9IGNvdW50ZXIuc2l6ZSgpIC0gY291bnRlckxlbmd0aCAvIDggLSAhIWNvdW50ZXJPZmZz
ZXQ7Ci0gICAgbWVtY3B5KHJlbWFpbmluZ0NvdW50ZXIuZGF0YSgpLCBjb3VudGVyLmRhdGEoKSwg
bm9uY2VPZmZzZXQpOyAvLyBjb3B5IHRoZSBub25jZQotICAgIC8vIHNldCB0aGUgbWlkZGxlIGJ5
dGUKLSAgICBpZiAoISFjb3VudGVyT2Zmc2V0KSB7Ci0gICAgICAgIHNpemVfdCBtYXNrID0gU0la
RV9NQVggPDwgY291bnRlck9mZnNldDsKLSAgICAgICAgcmVtYWluaW5nQ291bnRlcltub25jZU9m
ZnNldF0gPSBjb3VudGVyW25vbmNlT2Zmc2V0XSAmIG1hc2s7Ci0gICAgfQotICAgIG1lbXNldChy
ZW1haW5pbmdDb3VudGVyLmRhdGEoKSArIG5vbmNlT2Zmc2V0ICsgISFjb3VudGVyT2Zmc2V0LCAw
LCBjb3VudGVyTGVuZ3RoIC8gOCk7IC8vIHJlc2V0IHRoZSBjb3VudGVyCi0KKyAgICBWZWN0b3I8
dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVj
dG9yQWZ0ZXJPdmVyZmxvdygpOwogICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2Rl
KG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywg
cmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAs
IGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKICAgICBpZiAoc3RhdHVzKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMjExYzhjOWNh
MGZkMWY2ZjcyMzVlOWYyZTU3NDQ3MGIwZWZjYTI4Li4xNWYwNmM4MjIyY2Q1YTQ1ZTgzY2U4ZDRl
ZmUxZWQxNDUzNDc5ZjEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMTIgIFlvc2hp
YWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBb
V2ViQ3J5cHRvXVtDb21tb25DcnlwdG9dIEluY29ycmVjdCBBRVMtQ1RSIHdpdGggY291bnRlckxl
bmd0aCBsb25nZXIgdGhhbiA2NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3QgY2FzZXMgd2hlcmUgdGhlIGNvdW50ZXIgbGVuZ3RoIGlzIDY2
IGFuZCAxMjgsIGFuZCB0aGUgY291bnRlciBjYXBhY2l0eQorICAgICAgICB0byBvdmVyZmxvdyBp
cyAxIGFuZCAyLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVu
Y3J5cHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBv
cnQta2V5LWVuY3J5cHQuaHRtbDoKKwogMjAyMC0wMi0xMiAgU3VubnkgSGUgIDxzdW5ueV9oZUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIGN1cnJl
bnRTdHlsZSBpbiBDU1NUcmFuc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0
CmluZGV4IDZlNDI5MTI2ZjYwYjIyYTAyZmE5ZjZlNTVmNTQzY2NkYTkxYTMyNzMuLjBiMDNjZjY3
OTRiNDRhNDMzYmU3OWM3Yjc1Y2E2OWM0NGE4OWYzZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQt
ZXhwZWN0ZWQudHh0CkBAIC0xMSw4ICsxMSwyNCBAQCBMZW5ndGggPSA2NQogUEFTUyBieXRlc1Rv
SGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dAogTGVuZ3RoID0gMiwg
b3ZlcmZsb3cKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENp
cGhlclRleHQ0Ci1MZW5ndGggPSA4LCBvdmVyZmxvdworTGVuZ3RoID0gMiwgb3ZlcmZsb3cKIFBB
U1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ1CitM
ZW5ndGggPSA4LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlz
IGV4cGVjdGVkQ2lwaGVyVGV4dDYKK0xlbmd0aCA9IDgsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9I
ZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0NworTGVuZ3RoID0gNjQs
IG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRD
aXBoZXJUZXh0OAorTGVuZ3RoID0gNjQsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmco
Y2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0OQorTGVuZ3RoID0gNjYsIG92ZXJmbG93
CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0
MTAKK0xlbmd0aCA9IDY2LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRl
eHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDExCitMZW5ndGggPSAxMjgsIG92ZXJmbG93CitQQVNT
IGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0MTIKK0xl
bmd0aCA9IDEyOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBp
cyBleHBlY3RlZENpcGhlclRleHQxMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Fl
cy1jdHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwKaW5kZXggMzcwMTQ1OGM3MTZkMTk1MDc3
ZWRlNWNkMzk3MDI1NjQzMzYzMWMzOS4uOWZiYzdlMDBmYTVmMjY2YzgwMzIxOWI0ZGRmNTc1Mzgw
YzNiMzFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWlt
cG9ydC1rZXktZW5jcnlwdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVz
LWN0ci1pbXBvcnQta2V5LWVuY3J5cHQuaHRtbApAQCAtMzIsMTggKzMyLDY2IEBAIHZhciBhZXND
dHJQYXJhbXMzID0gewogfQogdmFyIGFlc0N0clBhcmFtczQ9IHsKICAgICBuYW1lOiAiYWVzLWN0
ciIsCi0gICAgY291bnRlcjogYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKSwK
KyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGY1YTQ2
NGM0OTQ1NTA0ZGZmIiksCiAgICAgbGVuZ3RoOiAyLAogfQogdmFyIGFlc0N0clBhcmFtczU9IHsK
KyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5
KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZSIpLAorICAgIGxlbmd0aDogMiwKK30K
K3ZhciBhZXNDdHJQYXJhbXM2PSB7CiAgICAgbmFtZTogImFlcy1jdHIiLAogICAgIGNvdW50ZXI6
IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYi
KSwKICAgICBsZW5ndGg6IDgsCiB9Cit2YXIgYWVzQ3RyUGFyYW1zNz0geworICAgIG5hbWU6ICJh
ZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3Mzkz
OTZmNGY1YTQ2NGM0OTQ1NTA0ZGZlIiksCisgICAgbGVuZ3RoOiA4LAorfQordmFyIGFlc0N0clBh
cmFtczg9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9V
aW50OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmZmZmZmZmZmZmZmZmZmZmZiIpLAorICAgIGxlbmd0
aDogNjQsCit9Cit2YXIgYWVzQ3RyUGFyYW1zOT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAg
ICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGZmZmZmZmZm
ZmZmZmZmZmZlIiksCisgICAgbGVuZ3RoOiA2NCwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMD0gewor
ICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXko
IjZhNmU0Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiA2NiwKK30K
K3ZhciBhZXNDdHJQYXJhbXMxMT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVy
OiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZl
IiksCisgICAgbGVuZ3RoOiA2NiwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMj0geworICAgIG5hbWU6
ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoImZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiAxMjgsCit9Cit2YXIgYWVz
Q3RyUGFyYW1zMTM9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZSIpLAorICAg
IGxlbmd0aDogMTI4LAorfQogdmFyIHJhd0tleSA9IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlv
T1pGTElFUE1yIik7CiB2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0ID0gImE1Zjk0MGU5MzQwNmQ0YmQ5
YjczMThlNjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhlNzExZThiZDYxZmI0ODYzOTMxZDI1
OTExZTJlOWZmMzBjZjM3ZWMyN2RkODEzYTYyODMwIjsKLXZhciBleHBlY3RlZENpcGhlclRleHQ0
ID0gImE1Zjk0MGU5MzQwNmQ0YmQ5YjczMThlNjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhl
NzExZThiZDYxZmI5NmZlZDdmYTViZjc1ZDI4MmE1NDc3NTgzYjk3MGIxNzE3NDBhMmZhIjsKLXZh
ciBleHBlY3RlZENpcGhlclRleHQ1ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3YTk1MTJi
ZjIyNDA1MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2ZiZWIyNzU3
NjhmNGQ3MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ0ID0gIjZhNDYxZWIzZjY0
ZWY0YzQ2NjU5N2JhODc3YTk1MTJiNWFiNDFiNDMzOGVkYzI4MjJkMWYwZGZhYzBjZWMwNzE0OTc2
NmUxODlmYTQyNmQ1ZWEzMGZlNTQxMDE4MzYyMDg4ZGIyMTE3IjsKK3ZhciBleHBlY3RlZENpcGhl
clRleHQ1ID0gImIyZDIyOTVhMmZhMDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZm
ZjZkMGE1ZmE5M2E4ZDViNmIxNjhjNTgxMTAzZTY5MWE2MmM1MjI5ZjA4MDgyZjgzMjFiNGQ2NTRi
IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ2ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3
YTk1MTJiZjIyNDA1MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2Zi
ZWIyNzU3NjhmNGQ3MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ3ID0gImIyZDIy
OTVhMmZhMDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZmZjZkMGE1ZmE5M2E4ZDVi
NmJiZTFjNDY0ZWIzYTVkYjc4NTcxNzVlZDAxNmM4MDc3OGQ2ZDc3ZWM1IjsKK3ZhciBleHBlY3Rl
ZENpcGhlclRleHQ4ID0gIjNjMzdjNWVhMDE3ZDIwMWJmNjA4Zjg2YjAyMjVjMGQ2MTZkMGU0ZjBk
ZGQ3YWJhOTZkNGJiNGVlM2I4Mjk4MzJiNWFiMmMyOTYzZDFkNmIzMmVmM2RiNTk5NTZiYzE1MjQ1
YjEwMWM5IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ5ID0gIjg2MjUzMjUyMDI3ZDJiNmZkNmM5
NWQ3ODQ5ZjUxYWJjMTgzZDg1YTYzOTNlNzIyMGZkNWJkYzZhNGYwMWNhOTY1YWU4YTdhMmU2ZGNm
ODhkNmMwNjkwZTQ3YmNlYTA3MWU3OTAyNzdhIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQxMCA9
ICJiZTA2MTVjODQ4NWUyZTdhZGM0ZTU0N2I2YWVhOThmNTkwOTU1NDdkNDJmOWIxNDcxZWRmZTQ2
NDE1MmIxMjk0ZjU2NWIzMmM5ZWQzODUwNDIyOTFiZWMzZTRhZTMxMmMzZjMyMDgwYiI7Cit2YXIg
ZXhwZWN0ZWRDaXBoZXJUZXh0MTEgPSAiNDhlZWYyZGZlN2MyZDQxZDkzNzQ3YTJjOWY1YTUwYWQ5
YTBjNTU4NDcwMWQ3YzQxZDcxZDcwN2EyN2NlOTJiNWRjYWQxNzJmNzlmMmUyNjMxZjkyYzA2ZTU1
NjcyYWQ3YTc1ZWI4N2YiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEyID0gIjEwNjVjNzEwN2Zk
MzNhM2YxZTA1NjI3MjM4ZDMwOTU1MDU1Mjc0ZjUwN2M4MjcxNmNjZmI3N2Y2MDk0NDZjMDdiMWYw
N2I4MGZjOTg5Yjk3YmU0OTAwNzEzMzk1M2FkMTczYTExY2Q3IjsKK3ZhciBleHBlY3RlZENpcGhl
clRleHQxMyA9ICJiOTM2NDI2Njg2ZjlkNzliZjUzY2Y5YmI2YTgxMDk5NzM0NmY4NzVjNDc5MDY4
MDQxNTU2NDY3Mzc1ZjcwMzE1NDk2YTM3YTczY2MzNzQzMmNkYjY1M2ZjNDkwODU0NDRlM2NiNzBk
MyI7CiAKIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJhZXMtY3RyIiwg
ZXh0cmFjdGFibGUsIFsiZW5jcnlwdCJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGtl
eSA9IHJlc3VsdDsKQEAgLTc2LDEzICsxMjQsNjkgQEAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXko
InJhdyIsIHJhd0tleSwgImFlcy1jdHIiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0Il0pLnRoZW4K
IAogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVk
Q2lwaGVyVGV4dDQiKTsKIAotICAgIGRlYnVnKCJMZW5ndGggPSA4LCBvdmVyZmxvdyIpOworICAg
IGRlYnVnKCJMZW5ndGggPSAyLCBvdmVyZmxvdyIpOwogICAgIHJldHVybiBjcnlwdG8uc3VidGxl
LmVuY3J5cHQoYWVzQ3RyUGFyYW1zNSwga2V5LCBwbGFpblRleHQpOwogfSkudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKICAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OwogCiAgICAgc2hvdWxkQmUoImJ5
dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NSIpOwogCisg
ICAgZGVidWcoIkxlbmd0aCA9IDgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZW5jcnlwdChhZXNDdHJQYXJhbXM2LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgi
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ2Iik7CisK
KyAgICBkZWJ1ZygiTGVuZ3RoID0gOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczcsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJl
KCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDciKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczgsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDgi
KTsKKworICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5
cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczksIGtleSwgcGxhaW5UZXh0KTsKK30pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNo
b3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4
dDkiKTsKKworICAgIGRlYnVnKCJMZW5ndGggPSA2Niwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczEwLCBrZXksIHBsYWluVGV4dCk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAg
ICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhl
clRleHQxMCIpOworCisgICAgZGVidWcoIkxlbmd0aCA9IDY2LCBvdmVyZmxvdyIpOworICAgIHJl
dHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTEsIGtleSwgcGxhaW5UZXh0
KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsK
KworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVk
Q2lwaGVyVGV4dDExIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxvdyIpOwor
ICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTIsIGtleSwgcGxh
aW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJl
c3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4
cGVjdGVkQ2lwaGVyVGV4dDEyIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxv
dyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTMsIGtl
eSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4
dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQp
IiwgImV4cGVjdGVkQ2lwaGVyVGV4dDEzIik7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390572</attachid>
            <date>2020-02-12 15:37:25 -0800</date>
            <delta_ts>2020-02-12 17:28:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200213083708.patch</filename>
            <type>text/plain</type>
            <size>20505</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVjYjQzYWVkZGY4Y2Y4
M2FhMzMxMDA4MTg2YzYyYmRiZTM1ZWI5NC4uNDcwZGZlMTJhOWM5OTNjNDU4Y2Q2YTFiN2YxNzAw
MTMyOWFjNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTEyICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGlzIGhlbHBlciwgc2ltcGxpZnkgdGhlIEFF
Uy1DVFIgaW1wbGVtZW50YXRpb24gb24gQ29tbW9uQ3J5cHRvLgorCisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OkNvdW50ZXJCbG9j
a0hlbHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3Vu
dGVyQmxvY2tIZWxwZXI6OmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpj
b3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1B
RVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmJpZ0ludGVnZXJUb1NpemVUKTogRGVsZXRlZC4K
KwogMjAyMC0wMi0xMiAgU3VubnkgSGUgIDxzdW5ueV9oZUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIGN1cnJlbnRTdHlsZSBpbiBDU1NUcmFuc2l0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCmluZGV4IGEzYTZiNjc0MTdhOWVjYTljODA1MmM2MjM3
YTRjM2RhMmFkNGY4NmMuLjAwY2I1YjYyMGYwODg1NjRkMTJiNWQ5NGI5NTA0Y2FiNDg1MjJlNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DVFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUFlc0tleVBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDAsNiArMjAyLDExNiBAQCBFeGNlcHRpb25P
cjxzaXplX3Q+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OmdldEtleUxlbmd0aChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYQogICAgIHJldHVybiBDcnlwdG9LZXlBRVM6OmdldEtleUxlbmd0aChwYXJh
bWV0ZXJzKTsKIH0KIAorQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVy
OjpDb3VudGVyQmxvY2tIZWxwZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyVmVjdG9y
LCBzaXplX3QgY291bnRlckxlbmd0aCkKKyAgICA6IG1fY291bnRlckxlbmd0aChjb3VudGVyTGVu
Z3RoKQoreworICAgIEFTU0VSVChjb3VudGVyVmVjdG9yLnNpemUoKSA9PSBDcnlwdG9BbGdvcml0
aG1BRVNfQ1RSSW50ZXJuYWw6OkNvdW50ZXJTaXplKTsKKyAgICBBU1NFUlQoY291bnRlckxlbmd0
aCA8PSBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSSW50ZXJuYWw6OkNvdW50ZXJTaXplICogOCk7Cisg
ICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsgLy8gY291bnRlclZlY3RvciBpcyBzdG9yZWQg
aW4gYmlnLWVuZGlhbi4KKyAgICBtZW1jcHkoJm1fYml0cy5tX2hpLCBjb3VudGVyVmVjdG9yLmRh
dGEoKSwgOCk7CisgICAgbV9iaXRzLm1faGkgPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbihtX2Jp
dHMubV9oaSwgbGl0dGxlRW5kaWFuKTsKKyAgICBtZW1jcHkoJm1fYml0cy5tX2xvLCBjb3VudGVy
VmVjdG9yLmRhdGEoKSArIDgsIDgpOworICAgIG1fYml0cy5tX2xvID0gZmxpcEJ5dGVzSWZMaXR0
bGVFbmRpYW4obV9iaXRzLm1fbG8sIGxpdHRsZUVuZGlhbik7Cit9CisKK3NpemVfdCBDcnlwdG9B
bGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OmNvdW50VG9PdmVyZmxvd1NhdHVy
YXRpbmcoKSBjb25zdAoreworICAgIENvdW50ZXJCbG9ja0JpdHMgbWFzazsKKyAgICAvLyBNYWtl
IGEgbWFzayB3aG9zZSBsb3dlc3QgY291bnRlckxlbmd0aCBiaXRzIGFyZSBzZXQuCisgICAgbWFz
ay5zZXQoKTsKKyAgICBtYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7CisgICAgbWFzayA9IH5tYXNr
OworCisgICAgYXV0byBjb3VudE1pbnVzT25lID0gfm1fYml0cyAmIG1hc2s7IC8vIFRoZSBjb3Vu
dCB0byBvdmVyZmxvdyBtaW51cyBvbmUuCisKKyAgICAvLyBNYWtlIGFub3RoZXIgbWFzayB0byBj
aGVjayBpZiB0aGUgY291bnQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc2l6ZSBvZiBzaXpl
X3QuCisgICAgbWFzay5zZXQoKTsKKyAgICBtYXNrIDw8PSBzaXplb2Yoc2l6ZV90KSAqIDg7Cisg
ICAgaWYgKChtYXNrICYgY291bnRNaW51c09uZSkuYW55KCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCisgICAgLy8gR2V0IHRoZSBiaXRzIHdp
dGhpbiB0aGUgc2l6ZV90IHJhbmdlLgorICAgIGNvdW50TWludXNPbmUgJj0gfm1hc2s7CisgICAg
aWYgKGNvdW50TWludXNPbmUuYWxsKCkpIHsKKyAgICAgICAgLy8gQXMgYWxsIGJpdHMgYXJlIHNl
dCwgYWRkaW5nIG9uZSB3b3VsZCByZXN1bHQgaW4gYW4gb3ZlcmZsb3cuCisgICAgICAgIC8vIFJl
dHVybiBzaXplX3QgbWF4IGluc3RlYWQuCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpOworICAgIH0KKworICAgIC8vIE5vdyBjb252ZXJ0IHRoZSBiaXRz
IHRvIGEgc2l6ZV90LgorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gc2l6ZW9m
KHVpbnQ2NF90KSk7CisgICAgc2l6ZV90IGNvdW50ID0gY291bnRNaW51c09uZS5tX2xvOworICAg
IHJldHVybiBjb3VudCArIDE7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9BbGdvcml0aG1B
RVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCkg
Y29uc3QKK3sKKyAgICBDb3VudGVyQmxvY2tCaXRzIG1hc2s7CisgICAgbWFzay5zZXQoKTsKKyAg
ICBtYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7CisgICAgYXV0byBiaXRzID0gbV9iaXRzICYgbWFz
azsKKworICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7IC8vIGNvdW50ZXJWZWN0b3IgaXMg
c3RvcmVkIGluIGJpZy1lbmRpYW4uCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvdW50ZXJWZWN0b3Io
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUkludGVybmFsOjpDb3VudGVyU2l6ZSk7CisgICAgdWludDY0
X3QgaGkgPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbihiaXRzLm1faGksIGxpdHRsZUVuZGlhbik7
CisgICAgbWVtY3B5KGNvdW50ZXJWZWN0b3IuZGF0YSgpLCAmaGksIDgpOworICAgIHVpbnQ2NF90
IGxvID0gZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oYml0cy5tX2xvLCBsaXR0bGVFbmRpYW4pOwor
ICAgIG1lbWNweShjb3VudGVyVmVjdG9yLmRhdGEoKSArIDgsICZsbywgOCk7CisKKyAgICByZXR1
cm4gY291bnRlclZlY3RvcjsKK30KKworY29uc3QgdWludDY0X3QgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRzOjpBbGwgPSB+KHVpbnQ2
NF90KTA7CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVy
OjpDb3VudGVyQmxvY2tCaXRzOjpzZXQoKQoreworICAgIG1faGkgPSBBbGw7CisgICAgbV9sbyA9
IEFsbDsKK30KKworYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxw
ZXI6OkNvdW50ZXJCbG9ja0JpdHM6OmFsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGkgPT0g
QWxsICYmIG1fbG8gPT0gQWxsOworfQorCitib29sIENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNv
dW50ZXJCbG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0czo6YW55KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9oaSB8fCBtX2xvOworfQorCitDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVy
QmxvY2tIZWxwZXI6OkNvdW50ZXJCbG9ja0JpdHMgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291
bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRzOjpvcGVyYXRvciYoY29uc3QgQ291bnRl
ckJsb2NrQml0cyYgcmhzKSBjb25zdAoreworICAgIHJldHVybiB7IG1faGkgJiByaHMubV9oaSwg
bV9sbyAmIHJocy5tX2xvIH07Cit9CisKK0NyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJC
bG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0cyBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3Vu
dGVyQmxvY2tIZWxwZXI6OkNvdW50ZXJCbG9ja0JpdHM6Om9wZXJhdG9yfigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsgfm1faGksIH5tX2xvIH07Cit9CisKK0NyeXB0b0FsZ29yaXRobUFFU19DVFI6
OkNvdW50ZXJCbG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0cyYgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRzOjpvcGVyYXRvciA8PD0o
dW5zaWduZWQgc2hpZnQpCit7CisgICAgaWYgKHNoaWZ0IDwgNjQpIHsKKyAgICAgICAgbV9oaSA9
IChtX2hpIDw8IHNoaWZ0KSB8IG1fbG8gPj4gKDY0IC0gc2hpZnQpOworICAgICAgICBtX2xvIDw8
PSBzaGlmdDsKKyAgICB9IGVsc2UgaWYgKHNoaWZ0IDwgMTI4KSB7CisgICAgICAgIHNoaWZ0IC09
IDY0OworICAgICAgICBtX2hpID0gbV9sbyA8PCBzaGlmdDsKKyAgICAgICAgbV9sbyA9IDA7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9oaSA9IDA7CisgICAgICAgIG1fbG8gPSAwOworICAgIH0K
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0NyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJC
bG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0cyYgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291
bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRzOjpvcGVyYXRvciAmPShjb25zdCBDb3Vu
dGVyQmxvY2tCaXRzJiByaHMpCit7CisgICAgbV9oaSAmPSByaHMubV9oaTsKKyAgICBtX2xvICY9
IHJocy5tX2xvOworICAgIHJldHVybiAqdGhpczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgKaW5kZXggMWU3YmEwZjEyY2FiODQ3MTgyNzEw
MzhjZGUzMDgxNDY5N2IwNzI0OC4uOThkYzRiODc0Zjg0OWY4ZmU1YWRiN2ZkNDY4ZWJiODRkN2Uz
N2U1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NUUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19DVFIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDQwIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjsKICAgICBzdGF0aWMgUmVmPENyeXB0b0Fs
Z29yaXRobT4gY3JlYXRlKCk7CiAKKyAgICBjbGFzcyBDb3VudGVyQmxvY2tIZWxwZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgQ291bnRlckJsb2NrSGVscGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgY291bnRlclZlY3Rvciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgpOworCisgICAgICAgIHNpemVf
dCBjb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCkgY29uc3Q7CisKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCkgY29uc3Q7CisKKyAgICBwcml2YXRl
OgorICAgICAgICAvLyAxMjggYml0cyBpbnRlZ2VyIHdpdGggbWltaW51bSByZXF1aXJlZCBvcGVy
YXRvcnMuCisgICAgICAgIHN0cnVjdCBDb3VudGVyQmxvY2tCaXRzIHsKKyAgICAgICAgICAgIHZv
aWQgc2V0KCk7CisKKyAgICAgICAgICAgIGJvb2wgYWxsKCkgY29uc3Q7CisKKyAgICAgICAgICAg
IGJvb2wgYW55KCkgY29uc3Q7CisKKyAgICAgICAgICAgIENvdW50ZXJCbG9ja0JpdHMgb3BlcmF0
b3ImKGNvbnN0IENvdW50ZXJCbG9ja0JpdHMmIHJocykgY29uc3Q7CisKKyAgICAgICAgICAgIENv
dW50ZXJCbG9ja0JpdHMgb3BlcmF0b3J+KCkgY29uc3Q7CisKKyAgICAgICAgICAgIENvdW50ZXJC
bG9ja0JpdHMmIG9wZXJhdG9yIDw8PSh1bnNpZ25lZCBzaGlmdCk7CisKKyAgICAgICAgICAgIENv
dW50ZXJCbG9ja0JpdHMmIG9wZXJhdG9yICY9KGNvbnN0IENvdW50ZXJCbG9ja0JpdHMmIHJocyk7
CisKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBBbGw7CisgICAgICAgICAgICB1
aW50NjRfdCBtX2hpID0gMDsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1fbG8gPSAwOworICAgICAg
ICB9OworCisgICAgICAgIENvdW50ZXJCbG9ja0JpdHMgbV9iaXRzOworICAgICAgICBjb25zdCBz
aXplX3QgbV9jb3VudGVyTGVuZ3RoOworICAgIH07CisKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUigpID0gZGVmYXVsdDsKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCmluZGV4IGI5OTcwZTdlNmU5
ZWViNzM1MzdhMjhiZDAwYmRiY2ZmNjE1YmQ5NTEuLmNkYjlkYjdjYzc2MDRhOWJhMWRhZTQ3M2Qx
N2E1ZDk4ZDNlZTBiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDE3ICszNSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gSXQgdGFrZXMgdGhlIGxhc3QgV09SRFNJWkUvOCBieXRlcyBvZiB0
aGUgYmlnSW50ZWdlciBhbmQgdGhlbiBjb252ZXJ0IHRoZW0gaW50byBhIHNpemVfdCB2YWx1ZQot
c3RhdGljIHNpemVfdCBiaWdJbnRlZ2VyVG9TaXplVChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJp
Z0ludGVnZXIpCi17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9
IGJpZ0ludGVnZXIuc2l6ZSgpIC0gKF9fV09SRFNJWkUgLyA4KTsgaSA8IGJpZ0ludGVnZXIuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgcmVzdWx0IDw8PSA4OwotICAgICAgICByZXN1bHQgKz0gYmln
SW50ZWdlcltpXTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVy
YXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5n
dGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNr
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4KQEAgLTUyLDIwICs0Miwx
NSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1BRVNfQ1RS
KENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29ucwogICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50
bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNl
IHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCiAgICAgLy8gYnkg
dGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hv
dWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNz
dWUsCiAgICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBv
cGVyYXRpb24gaW50byB0d28gcGFydHMuCi0gICAgLy8gSWdub3JlIHRoZSBjYXNlOiBjb3VudGVy
TGVuZ3RoID4gX19XT1JEU0laRS4KICAgICBzaXplX3QgbnVtYmVyT2ZCbG9ja3MgPSBkYXRhLnNp
emUoKSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVT
MTI4ICsgMSA6IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4OworCiAgICAgLy8gRGV0
ZWN0IGxvb3AKLSAgICBpZiAoY291bnRlckxlbmd0aCA8IF9fV09SRFNJWkUgJiYgbnVtYmVyT2ZC
bG9ja3MgPiAoMSA8PCBjb3VudGVyTGVuZ3RoKSkKKyAgICBpZiAoY291bnRlckxlbmd0aCA8IHNp
emVvZihzaXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+ICgxIDw8IGNvdW50ZXJMZW5ndGgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKwogICAgIC8v
IENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKLSAgICBzaXplX3QgcmlnaHRNb3N0
ID0gYmlnSW50ZWdlclRvU2l6ZVQoY291bnRlcik7IC8vIGNvbnZlcnQgcmlnaHQgbW9zdCBfX1dP
UkRTSVpFIGJpdHMgaW50byBhIHNpemVfdCB2YWx1ZSwgd2hpY2ggaXMgdGhlIGxvbmdlc3QgY291
bnRlciB3ZSBjb3VsZCBwb3NzaWJseSB1c2UuCi0gICAgc2l6ZV90IGNhcGFjaXR5ID0gbnVtYmVy
T2ZCbG9ja3M7IC8vIFNJWkVfTUFYIC0gY291bnRlcgotICAgIGlmIChjb3VudGVyTGVuZ3RoIDwg
X19XT1JEU0laRSkgewotICAgICAgICBzaXplX3QgbWFzayA9IFNJWkVfTUFYIDw8IGNvdW50ZXJM
ZW5ndGg7IC8vIFVzZWQgdG8gc2V0IG5vbmNlIGluIHJpZ2h0TW9zdChub25jZSArIGNvdW50ZXIp
IHRvIDFzCi0gICAgICAgIGNhcGFjaXR5ID0gU0laRV9NQVggLSAocmlnaHRNb3N0fCBtYXNrKSAr
IDE7Ci0gICAgfQotICAgIGlmIChjb3VudGVyTGVuZ3RoID09IF9fV09SRFNJWkUpCi0gICAgICAg
IGNhcGFjaXR5ID0gU0laRV9NQVggLSByaWdodE1vc3QgKyAxOworICAgIENyeXB0b0FsZ29yaXRo
bUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3VudGVyQmxvY2tIZWxwZXIoY291bnRlciwg
Y291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY291bnRlckJsb2NrSGVscGVy
LmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKIAogICAgIC8vIERpdmlkZSBkYXRhIGludG8g
dHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KICAgICBzaXplX3QgaGVhZFNpemUgPSBkYXRhLnNpemUo
KTsKQEAgLTEwMSwxNyArODYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiB0cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29ucwogCiAgICAgLy8g
c2Vjb25kIHBhcnQ6IGNvbXB1dGUgdGhlIHJlbWFpbmluZyBkYXRhIGFuZCBhcHBlbmQgdGhlbSB0
byB0aGUgaGVhZC4KICAgICAvLyByZXNldCBjb3VudGVyCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
bWFpbmluZ0NvdW50ZXIoY291bnRlci5zaXplKCkpOwotICAgIHNpemVfdCBjb3VudGVyT2Zmc2V0
ID0gY291bnRlckxlbmd0aCAlIDg7Ci0gICAgc2l6ZV90IG5vbmNlT2Zmc2V0ID0gY291bnRlci5z
aXplKCkgLSBjb3VudGVyTGVuZ3RoIC8gOCAtICEhY291bnRlck9mZnNldDsKLSAgICBtZW1jcHko
cmVtYWluaW5nQ291bnRlci5kYXRhKCksIGNvdW50ZXIuZGF0YSgpLCBub25jZU9mZnNldCk7IC8v
IGNvcHkgdGhlIG5vbmNlCi0gICAgLy8gc2V0IHRoZSBtaWRkbGUgYnl0ZQotICAgIGlmICghIWNv
dW50ZXJPZmZzZXQpIHsKLSAgICAgICAgc2l6ZV90IG1hc2sgPSBTSVpFX01BWCA8PCBjb3VudGVy
T2Zmc2V0OwotICAgICAgICByZW1haW5pbmdDb3VudGVyW25vbmNlT2Zmc2V0XSA9IGNvdW50ZXJb
bm9uY2VPZmZzZXRdICYgbWFzazsKLSAgICB9Ci0gICAgbWVtc2V0KHJlbWFpbmluZ0NvdW50ZXIu
ZGF0YSgpICsgbm9uY2VPZmZzZXQgKyAhIWNvdW50ZXJPZmZzZXQsIDAsIGNvdW50ZXJMZW5ndGgg
LyA4KTsgLy8gcmVzZXQgdGhlIGNvdW50ZXIKLQorICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5p
bmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93
KCk7CiAgICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NN
b2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVy
LmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNU
Ul9CRSwgJmNyeXB0b3IpOwogICAgIGlmIChzdGF0dXMpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIyMTFjOGM5Y2EwZmQxZjZmNzIzNWU5ZjJl
NTc0NDcwYjBlZmNhMjguLjE1ZjA2YzgyMjJjZDVhNDVlODNjZThkNGVmZTFlZDE0NTM0NzlmMTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0xMiAgWW9zaGlha2kgSml0c3VrYXdhICA8
eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFtXZWJDcnlwdG9dW0NvbW1v
bkNyeXB0b10gSW5jb3JyZWN0IEFFUy1DVFIgd2l0aCBjb3VudGVyTGVuZ3RoIGxvbmdlciB0aGFu
IDY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcy
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdCBjYXNlcyB3aGVyZSB0aGUgY291bnRlciBsZW5ndGggaXMgNjYgYW5kIDEyOCwgYW5kIHRo
ZSBjb3VudGVyIGNhcGFjaXR5CisgICAgICAgIHRvIG92ZXJmbG93IGlzIDEgYW5kIDIuCisgICAg
ICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC5o
dG1sOgorCiAyMDIwLTAyLTEyICBTdW5ueSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggY3Jhc2ggZHVlIHRvIHVuaW5pdGlhbGl6ZWQgY3VycmVudFN0eWxlIGluIENTU1Ry
YW5zaXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1p
bXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKaW5kZXggNmU0MjkxMjZm
NjBiMjJhMDJmYTlmNmU1NWY1NDNjY2RhOTFhMzI3My4uMGIwM2NmNjc5NGI0NGE0MzNiZTc5Yzdi
NzVjYTY5YzQ0YTg5ZjNkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9h
ZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXktZW5jcnlwdC1leHBlY3RlZC50eHQKQEAg
LTExLDggKzExLDI0IEBAIExlbmd0aCA9IDY1CiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVy
VGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0CiBMZW5ndGggPSAyLCBvdmVyZmxvdwogUEFTUyBi
eXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDQKLUxlbmd0
aCA9IDgsIG92ZXJmbG93CitMZW5ndGggPSAyLCBvdmVyZmxvdwogUEFTUyBieXRlc1RvSGV4U3Ry
aW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDUKK0xlbmd0aCA9IDgsIG92ZXJm
bG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJU
ZXh0NgorTGVuZ3RoID0gOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJU
ZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ3CitMZW5ndGggPSA2NCwgb3ZlcmZsb3cKK1BBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ4CitMZW5n
dGggPSA2NCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQ5CitMZW5ndGggPSA2Niwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hl
eFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQxMAorTGVuZ3RoID0gNjYs
IG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRD
aXBoZXJUZXh0MTEKK0xlbmd0aCA9IDEyOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmlu
ZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQxMgorTGVuZ3RoID0gMTI4LCBvdmVy
ZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVy
VGV4dDEzCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5
LWVuY3J5cHQuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQt
a2V5LWVuY3J5cHQuaHRtbAppbmRleCAzNzAxNDU4YzcxNmQxOTUwNzdlZGU1Y2QzOTcwMjU2NDMz
NjMxYzM5Li45ZmJjN2UwMGZhNWYyNjZjODAzMjE5YjRkZGY1NzUzODBjM2IzMWJjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9ydC1rZXkt
ZW5jcnlwdC5odG1sCkBAIC0zMiwxOCArMzIsNjYgQEAgdmFyIGFlc0N0clBhcmFtczMgPSB7CiB9
CiB2YXIgYWVzQ3RyUGFyYW1zND0gewogICAgIG5hbWU6ICJhZXMtY3RyIiwKLSAgICBjb3VudGVy
OiBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b09aRkxJRVBNciIpLAorICAgIGNvdW50ZXI6IGhl
eFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYiKSwK
ICAgICBsZW5ndGg6IDIsCiB9CiB2YXIgYWVzQ3RyUGFyYW1zNT0geworICAgIG5hbWU6ICJhZXMt
Y3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZm
NGY1YTQ2NGM0OTQ1NTA0ZGZlIiksCisgICAgbGVuZ3RoOiAyLAorfQordmFyIGFlc0N0clBhcmFt
czY9IHsKICAgICBuYW1lOiAiYWVzLWN0ciIsCiAgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50
OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZiIpLAogICAgIGxlbmd0aDog
OCwKIH0KK3ZhciBhZXNDdHJQYXJhbXM3PSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNv
dW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1
MDRkZmUiKSwKKyAgICBsZW5ndGg6IDgsCit9Cit2YXIgYWVzQ3RyUGFyYW1zOD0geworICAgIG5h
bWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0
Zjc3MzkzOTZmNGZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiA2NCwKK30KK3ZhciBh
ZXNDdHJQYXJhbXM5PSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0
cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZmZmZmZmZmZmZmZmZmZmZmUiKSwKKyAg
ICBsZW5ndGg6IDY0LAorfQordmFyIGFlc0N0clBhcmFtczEwPSB7CisgICAgbmFtZTogImFlcy1j
dHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY3
ZmZmZmZmZmZmZmZmZmZmZmYiKSwKKyAgICBsZW5ndGg6IDY2LAorfQordmFyIGFlc0N0clBhcmFt
czExPSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAgIGNvdW50ZXI6IGhleFN0cmluZ1RvVWlu
dDhBcnJheSgiNmE2ZTRmNzczOTM5NmY3ZmZmZmZmZmZmZmZmZmZmZmUiKSwKKyAgICBsZW5ndGg6
IDY2LAorfQordmFyIGFlc0N0clBhcmFtczEyPSB7CisgICAgbmFtZTogImFlcy1jdHIiLAorICAg
IGNvdW50ZXI6IGhleFN0cmluZ1RvVWludDhBcnJheSgiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmYiKSwKKyAgICBsZW5ndGg6IDEyOCwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMz0gewor
ICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXko
ImZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlIiksCisgICAgbGVuZ3RoOiAxMjgsCit9
CiB2YXIgcmF3S2V5ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKTsKIHZh
ciBleHBlY3RlZENpcGhlclRleHQgPSAiYTVmOTQwZTkzNDA2ZDRiZDliNzMxOGU2NTNkNGNiOWQx
YWY0OTdmNTJmY2JiNjU5YTAzOGU3MTFlOGJkNjFmYjQ4NjM5MzFkMjU5MTFlMmU5ZmYzMGNmMzdl
YzI3ZGQ4MTNhNjI4MzAiOwotdmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDQgPSAiYTVmOTQwZTkzNDA2
ZDRiZDliNzMxOGU2NTNkNGNiOWQxYWY0OTdmNTJmY2JiNjU5YTAzOGU3MTFlOGJkNjFmYjk2ZmVk
N2ZhNWJmNzVkMjgyYTU0Nzc1ODNiOTcwYjE3MTc0MGEyZmEiOwotdmFyIGV4cGVjdGVkQ2lwaGVy
VGV4dDUgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmJmMjI0MDUxYzg4YWU4ODVj
NTY1YTdhZGE1Njg0M2YzYjg0ZWM3NTk2ZGY2N2NiZmRjZmJlYjI3NTc2OGY0ZDcyNzBjZTdkZGYi
OwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDQgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4Nzdh
OTUxMmI1YWI0MWI0MzM4ZWRjMjgyMmQxZjBkZmFjMGNlYzA3MTQ5NzY2ZTE4OWZhNDI2ZDVlYTMw
ZmU1NDEwMTgzNjIwODhkYjIxMTciOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDUgPSAiYjJkMjI5
NWEyZmEwNmVmNTcwNzUyYzdkMWJjMDhmYzY0ZTRjNWVmZmNlMGRhNmZmNmQwYTVmYTkzYThkNWI2
YjE2OGM1ODExMDNlNjkxYTYyYzUyMjlmMDgwODJmODMyMWI0ZDY1NGIiOwordmFyIGV4cGVjdGVk
Q2lwaGVyVGV4dDYgPSAiNmE0NjFlYjNmNjRlZjRjNDY2NTk3YmE4NzdhOTUxMmJmMjI0MDUxYzg4
YWU4ODVjNTY1YTdhZGE1Njg0M2YzYjg0ZWM3NTk2ZGY2N2NiZmRjZmJlYjI3NTc2OGY0ZDcyNzBj
ZTdkZGYiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDcgPSAiYjJkMjI5NWEyZmEwNmVmNTcwNzUy
YzdkMWJjMDhmYzY0ZTRjNWVmZmNlMGRhNmZmNmQwYTVmYTkzYThkNWI2YmJlMWM0NjRlYjNhNWRi
Nzg1NzE3NWVkMDE2YzgwNzc4ZDZkNzdlYzUiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDggPSAi
M2MzN2M1ZWEwMTdkMjAxYmY2MDhmODZiMDIyNWMwZDYxNmQwZTRmMGRkZDdhYmE5NmQ0YmI0ZWUz
YjgyOTgzMmI1YWIyYzI5NjNkMWQ2YjMyZWYzZGI1OTk1NmJjMTUyNDViMTAxYzkiOwordmFyIGV4
cGVjdGVkQ2lwaGVyVGV4dDkgPSAiODYyNTMyNTIwMjdkMmI2ZmQ2Yzk1ZDc4NDlmNTFhYmMxODNk
ODVhNjM5M2U3MjIwZmQ1YmRjNmE0ZjAxY2E5NjVhZThhN2EyZTZkY2Y4OGQ2YzA2OTBlNDdiY2Vh
MDcxZTc5MDI3N2EiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEwID0gImJlMDYxNWM4NDg1ZTJl
N2FkYzRlNTQ3YjZhZWE5OGY1OTA5NTU0N2Q0MmY5YjE0NzFlZGZlNDY0MTUyYjEyOTRmNTY1YjMy
YzllZDM4NTA0MjI5MWJlYzNlNGFlMzEyYzNmMzIwODBiIjsKK3ZhciBleHBlY3RlZENpcGhlclRl
eHQxMSA9ICI0OGVlZjJkZmU3YzJkNDFkOTM3NDdhMmM5ZjVhNTBhZDlhMGM1NTg0NzAxZDdjNDFk
NzFkNzA3YTI3Y2U5MmI1ZGNhZDE3MmY3OWYyZTI2MzFmOTJjMDZlNTU2NzJhZDdhNzVlYjg3ZiI7
Cit2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0MTIgPSAiMTA2NWM3MTA3ZmQzM2EzZjFlMDU2MjcyMzhk
MzA5NTUwNTUyNzRmNTA3YzgyNzE2Y2NmYjc3ZjYwOTQ0NmMwN2IxZjA3YjgwZmM5ODliOTdiZTQ5
MDA3MTMzOTUzYWQxNzNhMTFjZDciOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEzID0gImI5MzY0
MjY2ODZmOWQ3OWJmNTNjZjliYjZhODEwOTk3MzQ2Zjg3NWM0NzkwNjgwNDE1NTY0NjczNzVmNzAz
MTU0OTZhMzdhNzNjYzM3NDMyY2RiNjUzZmM0OTA4NTQ0NGUzY2I3MGQzIjsKIAogY3J5cHRvLnN1
YnRsZS5pbXBvcnRLZXkoInJhdyIsIHJhd0tleSwgImFlcy1jdHIiLCBleHRyYWN0YWJsZSwgWyJl
bmNyeXB0Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAga2V5ID0gcmVzdWx0OwpAQCAt
NzYsMTMgKzEyNCw2OSBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAi
YWVzLWN0ciIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiXSkudGhlbgogCiAgICAgc2hvdWxkQmUo
ImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NCIpOwog
Ci0gICAgZGVidWcoIkxlbmd0aCA9IDgsIG92ZXJmbG93Iik7CisgICAgZGVidWcoIkxlbmd0aCA9
IDIsIG92ZXJmbG93Iik7CiAgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQ
YXJhbXM1LCBrZXksIHBsYWluVGV4dCk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAg
IGNpcGhlclRleHQgPSByZXN1bHQ7CiAKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhj
aXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ1Iik7CiAKKyAgICBkZWJ1ZygiTGVuZ3Ro
ID0gOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0
clBhcmFtczYsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5n
KGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDYiKTsKKworICAgIGRlYnVnKCJMZW5n
dGggPSA4LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVz
Q3RyUGFyYW1zNywga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJp
bmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NyIpOworCisgICAgZGVidWcoIkxl
bmd0aCA9IDY0LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQo
YWVzQ3RyUGFyYW1zOCwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhT
dHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0OCIpOworCisgICAgZGVidWco
Ikxlbmd0aCA9IDY0LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5
cHQoYWVzQ3RyUGFyYW1zOSwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUoImJ5dGVzVG9I
ZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0OSIpOworCisgICAgZGVi
dWcoIkxlbmd0aCA9IDY2LCBvdmVyZmxvdyIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVu
Y3J5cHQoYWVzQ3RyUGFyYW1zMTAsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRl
c1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDEwIik7CisKKyAg
ICBkZWJ1ZygiTGVuZ3RoID0gNjYsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZW5jcnlwdChhZXNDdHJQYXJhbXMxMSwga2V5LCBwbGFpblRleHQpOworfSkudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hvdWxkQmUo
ImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0MTEiKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSAxMjgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQYXJhbXMxMiwga2V5LCBwbGFpblRleHQpOworfSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisgICAgc2hv
dWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0
MTIiKTsKKworICAgIGRlYnVnKCJMZW5ndGggPSAxMjgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJu
IGNyeXB0by5zdWJ0bGUuZW5jcnlwdChhZXNDdHJQYXJhbXMxMywga2V5LCBwbGFpblRleHQpOwor
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OworCisg
ICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBo
ZXJUZXh0MTMiKTsKKwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390598</attachid>
            <date>2020-02-12 17:28:56 -0800</date>
            <delta_ts>2020-02-12 23:20:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207238-20200213102855.patch</filename>
            <type>text/plain</type>
            <size>20632</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVjYjQzYWVkZGY4Y2Y4
M2FhMzMxMDA4MTg2YzYyYmRiZTM1ZWI5NC4uNDcwZGZlMTJhOWM5OTNjNDU4Y2Q2YTFiN2YxNzAw
MTMyOWFjNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTEyICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
W1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVTLUNUUiB3aXRoIGNvdW50ZXJM
ZW5ndGggbG9uZ2VyIHRoYW4gNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb3VudGVyQmxvY2tIZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSByZW1h
aW5pbmcgY291bnQgZm9yIGNvdW50ZXIgYml0cyB0byBvdmVyZmxvdworICAgICAgICBhbmQgdGhl
IHdob2xlIGNvdW50ZXIgYmxvY2sgYml0cyAobm9uY2UgKyB6ZXJvIGNvdW50ZXIgYml0cykgYWZ0
ZXIgb3ZlcmZsb3cuCisKKyAgICAgICAgV2l0aCB0aGlzIGhlbHBlciwgc2ltcGxpZnkgdGhlIEFF
Uy1DVFIgaW1wbGVtZW50YXRpb24gb24gQ29tbW9uQ3J5cHRvLgorCisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXI6OkNvdW50ZXJCbG9j
a0hlbHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3Vu
dGVyQmxvY2tIZWxwZXI6OmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpj
b3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1B
RVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmJpZ0ludGVnZXJUb1NpemVUKTogRGVsZXRlZC4K
KwogMjAyMC0wMi0xMiAgU3VubnkgSGUgIDxzdW5ueV9oZUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIGN1cnJlbnRTdHlsZSBpbiBDU1NUcmFuc2l0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCmluZGV4IGEzYTZiNjc0MTdhOWVjYTljODA1MmM2MjM3
YTRjM2RhMmFkNGY4NmMuLmVkNDQzMjhjMmUwNmQ5MjljOGZjM2ZhZTk2MDNhOTUzNjY2N2RjZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DVFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUFlc0tleVBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2ICs0Miw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBBTEcxMjggPSAiQTEyOENUUiI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
QUxHMTkyID0gIkExOTJDVFIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzI1NiA9ICJB
MjU2Q1RSIjsKIHN0YXRpYyBjb25zdCBzaXplX3QgQ291bnRlclNpemUgPSAxNjsKK3N0YXRpYyBj
b25zdCB1aW50NjRfdCBBbGxCaXRzU2V0ID0gfih1aW50NjRfdCkwOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19DVFIoQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtMjAwLDYgKzIwMywxMTggQEAgRXhjZXB0aW9uT3I8
c2l6ZV90PiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGEKICAgICByZXR1cm4gQ3J5cHRvS2V5QUVTOjpnZXRLZXlMZW5ndGgocGFyYW1l
dGVycyk7CiB9CiAKK0NyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlcjo6
Q291bnRlckJsb2NrSGVscGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlclZlY3Rvciwg
c2l6ZV90IGNvdW50ZXJMZW5ndGgpCisgICAgOiBtX2NvdW50ZXJMZW5ndGgoY291bnRlckxlbmd0
aCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkludGVybmFs
OworCisgICAgQVNTRVJUKGNvdW50ZXJWZWN0b3Iuc2l6ZSgpID09IENvdW50ZXJTaXplKTsKKyAg
ICBBU1NFUlQoY291bnRlckxlbmd0aCA8PSBDb3VudGVyU2l6ZSAqIDgpOworICAgIGJvb2wgbGl0
dGxlRW5kaWFuID0gZmFsc2U7IC8vIGNvdW50ZXJWZWN0b3IgaXMgc3RvcmVkIGluIGJpZy1lbmRp
YW4uCisgICAgbWVtY3B5KCZtX2JpdHMubV9oaSwgY291bnRlclZlY3Rvci5kYXRhKCksIDgpOwor
ICAgIG1fYml0cy5tX2hpID0gZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4obV9iaXRzLm1faGksIGxp
dHRsZUVuZGlhbik7CisgICAgbWVtY3B5KCZtX2JpdHMubV9sbywgY291bnRlclZlY3Rvci5kYXRh
KCkgKyA4LCA4KTsKKyAgICBtX2JpdHMubV9sbyA9IGZsaXBCeXRlc0lmTGl0dGxlRW5kaWFuKG1f
Yml0cy5tX2xvLCBsaXR0bGVFbmRpYW4pOworfQorCitzaXplX3QgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpjb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCkgY29u
c3QKK3sKKyAgICBDb3VudGVyQmxvY2tCaXRzIGNvdW50ZXJNYXNrOworICAgIGNvdW50ZXJNYXNr
LnNldCgpOworICAgIGNvdW50ZXJNYXNrIDw8PSBtX2NvdW50ZXJMZW5ndGg7CisgICAgY291bnRl
ck1hc2sgPSB+Y291bnRlck1hc2s7CisKKyAgICBhdXRvIGNvdW50TWludXNPbmUgPSB+bV9iaXRz
ICYgY291bnRlck1hc2s7CisKKyAgICBDb3VudGVyQmxvY2tCaXRzIHNpemVUeXBlTWFzazsKKyAg
ICBzaXplVHlwZU1hc2suc2V0KCk7CisgICAgc2l6ZVR5cGVNYXNrIDw8PSBzaXplb2Yoc2l6ZV90
KSAqIDg7CisgICAgaWYgKChzaXplVHlwZU1hc2sgJiBjb3VudE1pbnVzT25lKS5hbnkoKSkgewor
ICAgICAgICAvLyBTYXR1cmF0aW5nIHRvIHRoZSBzaXplX3QgbWF4IHNpbmNlIHRoZSBjb3VudCBp
cyBncmVhdGVyIHRoYW4gdGhhdC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk7CisgICAgfQorCisgICAgY291bnRNaW51c09uZSAmPSB+c2l6ZVR5cGVN
YXNrOworICAgIGlmIChjb3VudE1pbnVzT25lLmFsbCgpKSB7CisgICAgICAgIC8vIEFzIGFsbCBi
aXRzIGFyZSBzZXQsIGFkZGluZyBvbmUgd291bGQgcmVzdWx0IGluIGFuIG92ZXJmbG93LgorICAg
ICAgICAvLyBSZXR1cm4gc2l6ZV90IG1heCBpbnN0ZWFkLgorICAgICAgICByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICB9CisKKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihzaXplX3QpIDw9IHNpemVvZih1aW50NjRfdCkpOworICAgIHJldHVybiBjb3VudE1p
bnVzT25lLm1fbG8gKyAxOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpjb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpIGNv
bnN0Cit7CisgICAgdXNpbmcgbmFtZXNwYWNlIENyeXB0b0FsZ29yaXRobUFFU19DVFJJbnRlcm5h
bDsKKworICAgIENvdW50ZXJCbG9ja0JpdHMgbm9uY2VNYXNrOworICAgIG5vbmNlTWFzay5zZXQo
KTsKKyAgICBub25jZU1hc2sgPDw9IG1fY291bnRlckxlbmd0aDsKKyAgICBhdXRvIGJpdHMgPSBt
X2JpdHMgJiBub25jZU1hc2s7CisKKyAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOyAvLyBj
b3VudGVyVmVjdG9yIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuLgorICAgIFZlY3Rvcjx1aW50OF90
PiBjb3VudGVyVmVjdG9yKENvdW50ZXJTaXplKTsKKyAgICB1aW50NjRfdCBoaSA9IGZsaXBCeXRl
c0lmTGl0dGxlRW5kaWFuKGJpdHMubV9oaSwgbGl0dGxlRW5kaWFuKTsKKyAgICBtZW1jcHkoY291
bnRlclZlY3Rvci5kYXRhKCksICZoaSwgOCk7CisgICAgdWludDY0X3QgbG8gPSBmbGlwQnl0ZXNJ
ZkxpdHRsZUVuZGlhbihiaXRzLm1fbG8sIGxpdHRsZUVuZGlhbik7CisgICAgbWVtY3B5KGNvdW50
ZXJWZWN0b3IuZGF0YSgpICsgOCwgJmxvLCA4KTsKKworICAgIHJldHVybiBjb3VudGVyVmVjdG9y
OworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlcjo6
Q291bnRlckJsb2NrQml0czo6c2V0KCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUkludGVybmFsOworICAgIG1faGkgPSBBbGxCaXRzU2V0OworICAgIG1fbG8g
PSBBbGxCaXRzU2V0OworfQorCitib29sIENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJC
bG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0czo6YWxsKCkgY29uc3QKK3sKKyAgICB1c2luZyBu
YW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkludGVybmFsOworICAgIHJldHVybiBtX2hp
ID09IEFsbEJpdHNTZXQgJiYgbV9sbyA9PSBBbGxCaXRzU2V0OworfQorCitib29sIENyeXB0b0Fs
Z29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0czo6YW55
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oaSB8fCBtX2xvOworfQorCithdXRvIENyeXB0b0Fs
Z29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlcjo6Q291bnRlckJsb2NrQml0czo6b3Bl
cmF0b3ImKGNvbnN0IENvdW50ZXJCbG9ja0JpdHMmIHJocykgY29uc3QgLT4gQ291bnRlckJsb2Nr
Qml0cworeworICAgIHJldHVybiB7IG1faGkgJiByaHMubV9oaSwgbV9sbyAmIHJocy5tX2xvIH07
Cit9CisKK2F1dG8gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpD
b3VudGVyQmxvY2tCaXRzOjpvcGVyYXRvcn4oKSBjb25zdCAtPiBDb3VudGVyQmxvY2tCaXRzCit7
CisgICAgcmV0dXJuIHsgfm1faGksIH5tX2xvIH07Cit9CisKK2F1dG8gQ3J5cHRvQWxnb3JpdGht
QUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRzOjpvcGVyYXRvciA8
PD0odW5zaWduZWQgc2hpZnQpIC0+IENvdW50ZXJCbG9ja0JpdHMmCit7CisgICAgaWYgKHNoaWZ0
IDwgNjQpIHsKKyAgICAgICAgbV9oaSA9IChtX2hpIDw8IHNoaWZ0KSB8IG1fbG8gPj4gKDY0IC0g
c2hpZnQpOworICAgICAgICBtX2xvIDw8PSBzaGlmdDsKKyAgICB9IGVsc2UgaWYgKHNoaWZ0IDwg
MTI4KSB7CisgICAgICAgIHNoaWZ0IC09IDY0OworICAgICAgICBtX2hpID0gbV9sbyA8PCBzaGlm
dDsKKyAgICAgICAgbV9sbyA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9oaSA9IDA7Cisg
ICAgICAgIG1fbG8gPSAwOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2F1dG8gQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyOjpDb3VudGVyQmxvY2tCaXRz
OjpvcGVyYXRvciAmPShjb25zdCBDb3VudGVyQmxvY2tCaXRzJiByaHMpIC0+IENvdW50ZXJCbG9j
a0JpdHMmCit7CisgICAgbV9oaSAmPSByaHMubV9oaTsKKyAgICBtX2xvICY9IHJocy5tX2xvOwor
ICAgIHJldHVybiAqdGhpczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfQ1RSLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSLmgKaW5kZXggMWU3YmEwZjEyY2FiODQ3MTgyNzEwMzhjZGUzMDgxNDY5
N2IwNzI0OC4uNzE4ZjZlMGUzMzg2ZTZmZTYyNTM5NWFmYmI3OWFkMzBjNGZhNDE0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DVFIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM3LDMzIEBAIGNsYXNzIENyeXB0b0tleUFFUzsKIAogY2xhc3Mg
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUiBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewog
cHVibGljOgorICAgIGNsYXNzIENvdW50ZXJCbG9ja0hlbHBlciB7CisgICAgcHVibGljOgorICAg
ICAgICBDb3VudGVyQmxvY2tIZWxwZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyVmVj
dG9yLCBzaXplX3QgY291bnRlckxlbmd0aCk7CisKKyAgICAgICAgc2l6ZV90IGNvdW50VG9PdmVy
Zmxvd1NhdHVyYXRpbmcoKSBjb25zdDsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvdW50ZXJW
ZWN0b3JBZnRlck92ZXJmbG93KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyAx
MjggYml0cyBpbnRlZ2VyIHdpdGggbWltaW51bSByZXF1aXJlZCBvcGVyYXRvcnMuCisgICAgICAg
IHN0cnVjdCBDb3VudGVyQmxvY2tCaXRzIHsKKyAgICAgICAgICAgIHZvaWQgc2V0KCk7CisgICAg
ICAgICAgICBib29sIGFsbCgpIGNvbnN0OworICAgICAgICAgICAgYm9vbCBhbnkoKSBjb25zdDsK
KworICAgICAgICAgICAgQ291bnRlckJsb2NrQml0cyBvcGVyYXRvciYoY29uc3QgQ291bnRlckJs
b2NrQml0cyYpIGNvbnN0OworICAgICAgICAgICAgQ291bnRlckJsb2NrQml0cyBvcGVyYXRvcn4o
KSBjb25zdDsKKyAgICAgICAgICAgIENvdW50ZXJCbG9ja0JpdHMmIG9wZXJhdG9yIDw8PSh1bnNp
Z25lZCk7CisgICAgICAgICAgICBDb3VudGVyQmxvY2tCaXRzJiBvcGVyYXRvciAmPShjb25zdCBD
b3VudGVyQmxvY2tCaXRzJik7CisKKyAgICAgICAgICAgIHVpbnQ2NF90IG1faGkgeyAwIH07Cisg
ICAgICAgICAgICB1aW50NjRfdCBtX2xvIHsgMCB9OworICAgICAgICB9OworCisgICAgICAgIENv
dW50ZXJCbG9ja0JpdHMgbV9iaXRzOworICAgICAgICBjb25zdCBzaXplX3QgbV9jb3VudGVyTGVu
Z3RoOworICAgIH07CisKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9
ICJBRVMtQ1RSIjsKICAgICBzdGF0aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjsKICAg
ICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAppbmRl
eCBiOTk3MGU3ZTZlOWVlYjczNTM3YTI4YmQwMGJkYmNmZjYxNWJkOTUxLi5jZGI5ZGI3Y2M3NjA0
YTliYTFkYWU0NzNkMTdhNWQ5OGQzZWUwYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEl0IHRha2VzIHRoZSBsYXN0IFdPUkRTSVpF
LzggYnl0ZXMgb2YgdGhlIGJpZ0ludGVnZXIgYW5kIHRoZW4gY29udmVydCB0aGVtIGludG8gYSBz
aXplX3QgdmFsdWUKLXN0YXRpYyBzaXplX3QgYmlnSW50ZWdlclRvU2l6ZVQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBiaWdJbnRlZ2VyKQotewotICAgIHNpemVfdCByZXN1bHQgPSAwOwotICAgIGZv
ciAoc2l6ZV90IGkgPSBiaWdJbnRlZ2VyLnNpemUoKSAtIChfX1dPUkRTSVpFIC8gOCk7IGkgPCBi
aWdJbnRlZ2VyLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdCA8PD0gODsKLSAgICAgICAg
cmVzdWx0ICs9IGJpZ0ludGVnZXJbaV07Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NP
cGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVf
dCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBm
b2xsb3dpbmcgaGFjayBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCkBA
IC01MiwyMCArNDIsMTUgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJh
bnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnMKICAgICAvLyBDb21tb25D
cnlwdG8gY3VycmVudGx5IGNhbiBuZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5vciBkZXRlY3Qg
b3ZlcmZsb3cgb25jZSB0aGUgY291bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUgcmVzdHJpY3Rl
ZAogICAgIC8vIGJ5IHRoZSBjb3VudGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVudHMgdGhlIG5v
bmNlIHdoaWNoIHNob3VsZCBzdGF5IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRpb24uIFRvIHJl
bWVkeSB0aGlzIGlzc3VlLAogICAgIC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cgYWhlYWQgYW5k
IGRpdmlkZSB0aGUgb3BlcmF0aW9uIGludG8gdHdvIHBhcnRzLgotICAgIC8vIElnbm9yZSB0aGUg
Y2FzZTogY291bnRlckxlbmd0aCA+IF9fV09SRFNJWkUuCiAgICAgc2l6ZV90IG51bWJlck9mQmxv
Y2tzID0gZGF0YS5zaXplKCkgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtD
Q0Jsb2NrU2l6ZUFFUzEyOCArIDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsK
KwogICAgIC8vIERldGVjdCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBfX1dPUkRTSVpF
ICYmIG51bWJlck9mQmxvY2tzID4gKDEgPDwgY291bnRlckxlbmd0aCkpCisgICAgaWYgKGNvdW50
ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVtYmVyT2ZCbG9ja3MgPiAoMSA8PCBj
b3VudGVyTGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKICAgICAvLyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgc2l6
ZV90IHJpZ2h0TW9zdCA9IGJpZ0ludGVnZXJUb1NpemVUKGNvdW50ZXIpOyAvLyBjb252ZXJ0IHJp
Z2h0IG1vc3QgX19XT1JEU0laRSBiaXRzIGludG8gYSBzaXplX3QgdmFsdWUsIHdoaWNoIGlzIHRo
ZSBsb25nZXN0IGNvdW50ZXIgd2UgY291bGQgcG9zc2libHkgdXNlLgotICAgIHNpemVfdCBjYXBh
Y2l0eSA9IG51bWJlck9mQmxvY2tzOyAvLyBTSVpFX01BWCAtIGNvdW50ZXIKLSAgICBpZiAoY291
bnRlckxlbmd0aCA8IF9fV09SRFNJWkUpIHsKLSAgICAgICAgc2l6ZV90IG1hc2sgPSBTSVpFX01B
WCA8PCBjb3VudGVyTGVuZ3RoOyAvLyBVc2VkIHRvIHNldCBub25jZSBpbiByaWdodE1vc3Qobm9u
Y2UgKyBjb3VudGVyKSB0byAxcwotICAgICAgICBjYXBhY2l0eSA9IFNJWkVfTUFYIC0gKHJpZ2h0
TW9zdHwgbWFzaykgKyAxOwotICAgIH0KLSAgICBpZiAoY291bnRlckxlbmd0aCA9PSBfX1dPUkRT
SVpFKQotICAgICAgICBjYXBhY2l0eSA9IFNJWkVfTUFYIC0gcmlnaHRNb3N0ICsgMTsKKyAgICBD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVs
cGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50
ZXJCbG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCk7CiAKICAgICAvLyBEaXZp
ZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCiAgICAgc2l6ZV90IGhlYWRTaXpl
ID0gZGF0YS5zaXplKCk7CkBAIC0xMDEsMTcgKzg2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNv
bnMKIAogICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQg
YXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCiAgICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZlY3Rv
cjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyKGNvdW50ZXIuc2l6ZSgpKTsKLSAgICBzaXplX3Qg
Y291bnRlck9mZnNldCA9IGNvdW50ZXJMZW5ndGggJSA4OwotICAgIHNpemVfdCBub25jZU9mZnNl
dCA9IGNvdW50ZXIuc2l6ZSgpIC0gY291bnRlckxlbmd0aCAvIDggLSAhIWNvdW50ZXJPZmZzZXQ7
Ci0gICAgbWVtY3B5KHJlbWFpbmluZ0NvdW50ZXIuZGF0YSgpLCBjb3VudGVyLmRhdGEoKSwgbm9u
Y2VPZmZzZXQpOyAvLyBjb3B5IHRoZSBub25jZQotICAgIC8vIHNldCB0aGUgbWlkZGxlIGJ5dGUK
LSAgICBpZiAoISFjb3VudGVyT2Zmc2V0KSB7Ci0gICAgICAgIHNpemVfdCBtYXNrID0gU0laRV9N
QVggPDwgY291bnRlck9mZnNldDsKLSAgICAgICAgcmVtYWluaW5nQ291bnRlcltub25jZU9mZnNl
dF0gPSBjb3VudGVyW25vbmNlT2Zmc2V0XSAmIG1hc2s7Ci0gICAgfQotICAgIG1lbXNldChyZW1h
aW5pbmdDb3VudGVyLmRhdGEoKSArIG5vbmNlT2Zmc2V0ICsgISFjb3VudGVyT2Zmc2V0LCAwLCBj
b3VudGVyTGVuZ3RoIC8gOCk7IC8vIHJlc2V0IHRoZSBjb3VudGVyCi0KKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9y
QWZ0ZXJPdmVyZmxvdygpOwogICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9w
ZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVt
YWluaW5nQ291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtD
Q01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKICAgICBpZiAoc3RhdHVzKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMjExYzhjOWNhMGZk
MWY2ZjcyMzVlOWYyZTU3NDQ3MGIwZWZjYTI4Li4xNWYwNmM4MjIyY2Q1YTQ1ZTgzY2U4ZDRlZmUx
ZWQxNDUzNDc5ZjEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMTIgIFlvc2hpYWtp
IEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbV2Vi
Q3J5cHRvXVtDb21tb25DcnlwdG9dIEluY29ycmVjdCBBRVMtQ1RSIHdpdGggY291bnRlckxlbmd0
aCBsb25nZXIgdGhhbiA2NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3QgY2FzZXMgd2hlcmUgdGhlIGNvdW50ZXIgbGVuZ3RoIGlzIDY2IGFu
ZCAxMjgsIGFuZCB0aGUgY291bnRlciBjYXBhY2l0eQorICAgICAgICB0byBvdmVyZmxvdyBpcyAx
IGFuZCAyLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5
cHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQt
a2V5LWVuY3J5cHQuaHRtbDoKKwogMjAyMC0wMi0xMiAgU3VubnkgSGUgIDxzdW5ueV9oZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIGN1cnJlbnRT
dHlsZSBpbiBDU1NUcmFuc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3Vi
dGxlL2Flcy1jdHItaW1wb3J0LWtleS1lbmNyeXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZlNDI5MTI2ZjYwYjIyYTAyZmE5ZjZlNTVmNTQzY2NkYTkxYTMyNzMuLjBiMDNjZjY3OTRi
NDRhNDMzYmU3OWM3Yjc1Y2E2OWM0NGE4OWYzZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0ci1pbXBvcnQta2V5LWVuY3J5cHQtZXhw
ZWN0ZWQudHh0CkBAIC0xMSw4ICsxMSwyNCBAQCBMZW5ndGggPSA2NQogUEFTUyBieXRlc1RvSGV4
U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4cGVjdGVkQ2lwaGVyVGV4dAogTGVuZ3RoID0gMiwgb3Zl
cmZsb3cKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhl
clRleHQ0Ci1MZW5ndGggPSA4LCBvdmVyZmxvdworTGVuZ3RoID0gMiwgb3ZlcmZsb3cKIFBBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBleHBlY3RlZENpcGhlclRleHQ1CitMZW5n
dGggPSA4LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIGlzIGV4
cGVjdGVkQ2lwaGVyVGV4dDYKK0xlbmd0aCA9IDgsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhT
dHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0NworTGVuZ3RoID0gNjQsIG92
ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBo
ZXJUZXh0OAorTGVuZ3RoID0gNjQsIG92ZXJmbG93CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lw
aGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0OQorTGVuZ3RoID0gNjYsIG92ZXJmbG93CitQ
QVNTIGJ5dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0MTAK
K0xlbmd0aCA9IDY2LCBvdmVyZmxvdworUEFTUyBieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQp
IGlzIGV4cGVjdGVkQ2lwaGVyVGV4dDExCitMZW5ndGggPSAxMjgsIG92ZXJmbG93CitQQVNTIGJ5
dGVzVG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkgaXMgZXhwZWN0ZWRDaXBoZXJUZXh0MTIKK0xlbmd0
aCA9IDEyOCwgb3ZlcmZsb3cKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSBpcyBl
eHBlY3RlZENpcGhlclRleHQxMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1j
dHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Fl
cy1jdHItaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwKaW5kZXggMzcwMTQ1OGM3MTZkMTk1MDc3ZWRl
NWNkMzk3MDI1NjQzMzYzMWMzOS4uOWZiYzdlMDBmYTVmMjY2YzgwMzIxOWI0ZGRmNTc1MzgwYzNi
MzFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY3RyLWltcG9y
dC1rZXktZW5jcnlwdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWN0
ci1pbXBvcnQta2V5LWVuY3J5cHQuaHRtbApAQCAtMzIsMTggKzMyLDY2IEBAIHZhciBhZXNDdHJQ
YXJhbXMzID0gewogfQogdmFyIGFlc0N0clBhcmFtczQ9IHsKICAgICBuYW1lOiAiYWVzLWN0ciIs
Ci0gICAgY291bnRlcjogYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PWkZMSUVQTXIiKSwKKyAg
ICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGY1YTQ2NGM0
OTQ1NTA0ZGZmIiksCiAgICAgbGVuZ3RoOiAyLAogfQogdmFyIGFlc0N0clBhcmFtczU9IHsKKyAg
ICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50OEFycmF5KCI2
YTZlNGY3NzM5Mzk2ZjRmNWE0NjRjNDk0NTUwNGRmZSIpLAorICAgIGxlbmd0aDogMiwKK30KK3Zh
ciBhZXNDdHJQYXJhbXM2PSB7CiAgICAgbmFtZTogImFlcy1jdHIiLAogICAgIGNvdW50ZXI6IGhl
eFN0cmluZ1RvVWludDhBcnJheSgiNmE2ZTRmNzczOTM5NmY0ZjVhNDY0YzQ5NDU1MDRkZmYiKSwK
ICAgICBsZW5ndGg6IDgsCiB9Cit2YXIgYWVzQ3RyUGFyYW1zNz0geworICAgIG5hbWU6ICJhZXMt
Y3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZm
NGY1YTQ2NGM0OTQ1NTA0ZGZlIiksCisgICAgbGVuZ3RoOiA4LAorfQordmFyIGFlc0N0clBhcmFt
czg9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5nVG9VaW50
OEFycmF5KCI2YTZlNGY3NzM5Mzk2ZjRmZmZmZmZmZmZmZmZmZmZmZiIpLAorICAgIGxlbmd0aDog
NjQsCit9Cit2YXIgYWVzQ3RyUGFyYW1zOT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBj
b3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmNGZmZmZmZmZmZmZm
ZmZmZmZlIiksCisgICAgbGVuZ3RoOiA2NCwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMD0geworICAg
IG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZh
NmU0Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiA2NiwKK30KK3Zh
ciBhZXNDdHJQYXJhbXMxMT0geworICAgIG5hbWU6ICJhZXMtY3RyIiwKKyAgICBjb3VudGVyOiBo
ZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjZhNmU0Zjc3MzkzOTZmN2ZmZmZmZmZmZmZmZmZmZmZlIiks
CisgICAgbGVuZ3RoOiA2NiwKK30KK3ZhciBhZXNDdHJQYXJhbXMxMj0geworICAgIG5hbWU6ICJh
ZXMtY3RyIiwKKyAgICBjb3VudGVyOiBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoImZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksCisgICAgbGVuZ3RoOiAxMjgsCit9Cit2YXIgYWVzQ3Ry
UGFyYW1zMTM9IHsKKyAgICBuYW1lOiAiYWVzLWN0ciIsCisgICAgY291bnRlcjogaGV4U3RyaW5n
VG9VaW50OEFycmF5KCJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZSIpLAorICAgIGxl
bmd0aDogMTI4LAorfQogdmFyIHJhd0tleSA9IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlvT1pG
TElFUE1yIik7CiB2YXIgZXhwZWN0ZWRDaXBoZXJUZXh0ID0gImE1Zjk0MGU5MzQwNmQ0YmQ5Yjcz
MThlNjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhlNzExZThiZDYxZmI0ODYzOTMxZDI1OTEx
ZTJlOWZmMzBjZjM3ZWMyN2RkODEzYTYyODMwIjsKLXZhciBleHBlY3RlZENpcGhlclRleHQ0ID0g
ImE1Zjk0MGU5MzQwNmQ0YmQ5YjczMThlNjUzZDRjYjlkMWFmNDk3ZjUyZmNiYjY1OWEwMzhlNzEx
ZThiZDYxZmI5NmZlZDdmYTViZjc1ZDI4MmE1NDc3NTgzYjk3MGIxNzE3NDBhMmZhIjsKLXZhciBl
eHBlY3RlZENpcGhlclRleHQ1ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3YTk1MTJiZjIy
NDA1MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2ZiZWIyNzU3Njhm
NGQ3MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ0ID0gIjZhNDYxZWIzZjY0ZWY0
YzQ2NjU5N2JhODc3YTk1MTJiNWFiNDFiNDMzOGVkYzI4MjJkMWYwZGZhYzBjZWMwNzE0OTc2NmUx
ODlmYTQyNmQ1ZWEzMGZlNTQxMDE4MzYyMDg4ZGIyMTE3IjsKK3ZhciBleHBlY3RlZENpcGhlclRl
eHQ1ID0gImIyZDIyOTVhMmZhMDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZmZjZk
MGE1ZmE5M2E4ZDViNmIxNjhjNTgxMTAzZTY5MWE2MmM1MjI5ZjA4MDgyZjgzMjFiNGQ2NTRiIjsK
K3ZhciBleHBlY3RlZENpcGhlclRleHQ2ID0gIjZhNDYxZWIzZjY0ZWY0YzQ2NjU5N2JhODc3YTk1
MTJiZjIyNDA1MWM4OGFlODg1YzU2NWE3YWRhNTY4NDNmM2I4NGVjNzU5NmRmNjdjYmZkY2ZiZWIy
NzU3NjhmNGQ3MjcwY2U3ZGRmIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ3ID0gImIyZDIyOTVh
MmZhMDZlZjU3MDc1MmM3ZDFiYzA4ZmM2NGU0YzVlZmZjZTBkYTZmZjZkMGE1ZmE5M2E4ZDViNmJi
ZTFjNDY0ZWIzYTVkYjc4NTcxNzVlZDAxNmM4MDc3OGQ2ZDc3ZWM1IjsKK3ZhciBleHBlY3RlZENp
cGhlclRleHQ4ID0gIjNjMzdjNWVhMDE3ZDIwMWJmNjA4Zjg2YjAyMjVjMGQ2MTZkMGU0ZjBkZGQ3
YWJhOTZkNGJiNGVlM2I4Mjk4MzJiNWFiMmMyOTYzZDFkNmIzMmVmM2RiNTk5NTZiYzE1MjQ1YjEw
MWM5IjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQ5ID0gIjg2MjUzMjUyMDI3ZDJiNmZkNmM5NWQ3
ODQ5ZjUxYWJjMTgzZDg1YTYzOTNlNzIyMGZkNWJkYzZhNGYwMWNhOTY1YWU4YTdhMmU2ZGNmODhk
NmMwNjkwZTQ3YmNlYTA3MWU3OTAyNzdhIjsKK3ZhciBleHBlY3RlZENpcGhlclRleHQxMCA9ICJi
ZTA2MTVjODQ4NWUyZTdhZGM0ZTU0N2I2YWVhOThmNTkwOTU1NDdkNDJmOWIxNDcxZWRmZTQ2NDE1
MmIxMjk0ZjU2NWIzMmM5ZWQzODUwNDIyOTFiZWMzZTRhZTMxMmMzZjMyMDgwYiI7Cit2YXIgZXhw
ZWN0ZWRDaXBoZXJUZXh0MTEgPSAiNDhlZWYyZGZlN2MyZDQxZDkzNzQ3YTJjOWY1YTUwYWQ5YTBj
NTU4NDcwMWQ3YzQxZDcxZDcwN2EyN2NlOTJiNWRjYWQxNzJmNzlmMmUyNjMxZjkyYzA2ZTU1Njcy
YWQ3YTc1ZWI4N2YiOwordmFyIGV4cGVjdGVkQ2lwaGVyVGV4dDEyID0gIjEwNjVjNzEwN2ZkMzNh
M2YxZTA1NjI3MjM4ZDMwOTU1MDU1Mjc0ZjUwN2M4MjcxNmNjZmI3N2Y2MDk0NDZjMDdiMWYwN2I4
MGZjOTg5Yjk3YmU0OTAwNzEzMzk1M2FkMTczYTExY2Q3IjsKK3ZhciBleHBlY3RlZENpcGhlclRl
eHQxMyA9ICJiOTM2NDI2Njg2ZjlkNzliZjUzY2Y5YmI2YTgxMDk5NzM0NmY4NzVjNDc5MDY4MDQx
NTU2NDY3Mzc1ZjcwMzE1NDk2YTM3YTczY2MzNzQzMmNkYjY1M2ZjNDkwODU0NDRlM2NiNzBkMyI7
CiAKIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJhZXMtY3RyIiwgZXh0
cmFjdGFibGUsIFsiZW5jcnlwdCJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGtleSA9
IHJlc3VsdDsKQEAgLTc2LDEzICsxMjQsNjkgQEAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIHJhd0tleSwgImFlcy1jdHIiLCBleHRyYWN0YWJsZSwgWyJlbmNyeXB0Il0pLnRoZW4KIAog
ICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lw
aGVyVGV4dDQiKTsKIAotICAgIGRlYnVnKCJMZW5ndGggPSA4LCBvdmVyZmxvdyIpOworICAgIGRl
YnVnKCJMZW5ndGggPSAyLCBvdmVyZmxvdyIpOwogICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVu
Y3J5cHQoYWVzQ3RyUGFyYW1zNSwga2V5LCBwbGFpblRleHQpOwogfSkudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKICAgICBjaXBoZXJUZXh0ID0gcmVzdWx0OwogCiAgICAgc2hvdWxkQmUoImJ5dGVz
VG9IZXhTdHJpbmcoY2lwaGVyVGV4dCkiLCAiZXhwZWN0ZWRDaXBoZXJUZXh0NSIpOwogCisgICAg
ZGVidWcoIkxlbmd0aCA9IDgsIG92ZXJmbG93Iik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUu
ZW5jcnlwdChhZXNDdHJQYXJhbXM2LCBrZXksIHBsYWluVGV4dCk7Cit9KS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgiYnl0
ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRleHQ2Iik7CisKKyAg
ICBkZWJ1ZygiTGVuZ3RoID0gOCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRs
ZS5lbmNyeXB0KGFlc0N0clBhcmFtczcsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJi
eXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDciKTsKKwor
ICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczgsIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3VsZEJl
KCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDgiKTsK
KworICAgIGRlYnVnKCJMZW5ndGggPSA2NCwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczksIGtleSwgcGxhaW5UZXh0KTsKK30pLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKworICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lwaGVyVGV4dDki
KTsKKworICAgIGRlYnVnKCJMZW5ndGggPSA2Niwgb3ZlcmZsb3ciKTsKKyAgICByZXR1cm4gY3J5
cHRvLnN1YnRsZS5lbmNyeXB0KGFlc0N0clBhcmFtczEwLCBrZXksIHBsYWluVGV4dCk7Cit9KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGNpcGhlclRleHQgPSByZXN1bHQ7CisKKyAgICBz
aG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhjaXBoZXJUZXh0KSIsICJleHBlY3RlZENpcGhlclRl
eHQxMCIpOworCisgICAgZGVidWcoIkxlbmd0aCA9IDY2LCBvdmVyZmxvdyIpOworICAgIHJldHVy
biBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTEsIGtleSwgcGxhaW5UZXh0KTsK
K30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3VsdDsKKwor
ICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVjdGVkQ2lw
aGVyVGV4dDExIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxvdyIpOworICAg
IHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTIsIGtleSwgcGxhaW5U
ZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9IHJlc3Vs
dDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwgImV4cGVj
dGVkQ2lwaGVyVGV4dDEyIik7CisKKyAgICBkZWJ1ZygiTGVuZ3RoID0gMTI4LCBvdmVyZmxvdyIp
OworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoYWVzQ3RyUGFyYW1zMTMsIGtleSwg
cGxhaW5UZXh0KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgY2lwaGVyVGV4dCA9
IHJlc3VsdDsKKworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKGNpcGhlclRleHQpIiwg
ImV4cGVjdGVkQ2lwaGVyVGV4dDEzIik7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>