<?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>168567</bug_id>
          
          <creation_ts>2017-02-18 19:15:12 -0800</creation_ts>
          <short_desc>CachedCall should let GC know to keep its arguments alive.</short_desc>
          <delta_ts>2017-02-20 17:52:57 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>168609</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278691</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-18 19:15:12 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278692</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-18 19:18:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/30475767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278695</commentid>
    <comment_count>2</comment_count>
      <attachid>302066</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-18 20:56:27 -0800</bug_when>
    <thetext>Created attachment 302066
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278698</commentid>
    <comment_count>3</comment_count>
      <attachid>302066</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-18 23:17:40 -0800</bug_when>
    <thetext>Comment on attachment 302066
proposed patch.

The assertion I added turned out to be prohibitively expensive and makes debug build tests timeout.  I&apos;m going to re-work the solution so that we don&apos;t need the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278702</commentid>
    <comment_count>4</comment_count>
      <attachid>302069</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 00:02:28 -0800</bug_when>
    <thetext>Created attachment 302069
proposed patch: improved and simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278705</commentid>
    <comment_count>5</comment_count>
      <attachid>302069</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-19 00:23:38 -0800</bug_when>
    <thetext>Comment on attachment 302069
proposed patch: improved and simpler.

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

r=me

&gt; Source/JavaScriptCore/interpreter/CachedCall.h:41
&gt; +        WTF_FORBID_HEAP_ALLOCATION;

I&apos;m not a huge fan of this macro given the downsides to enforcement you listed inside the WTF changelog. That said, if you keep it, it&apos;s definitely worth also putting it on MarkedArgumentsBuffer

&gt; Source/WTF/wtf/ForbidHeapAllocation.h:37
&gt; +    typedef int __thisIsHereToForceASemicolonAfterThisForbidHeapAllocationMacro

Why is this important?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278706</commentid>
    <comment_count>6</comment_count>
      <attachid>302069</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 00:31:44 -0800</bug_when>
    <thetext>Comment on attachment 302069
proposed patch: improved and simpler.

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

Thanks, but I just discovered a logical bug: we need to pre-allocate the MarkedArgumentBuffer&apos;s m_buffer before I call prepareForRepeatCall() which caches that buffer.  I will need to upload a patch with that fix shortly.

&gt;&gt; Source/JavaScriptCore/interpreter/CachedCall.h:41
&gt;&gt; +        WTF_FORBID_HEAP_ALLOCATION;
&gt; 
&gt; I&apos;m not a huge fan of this macro given the downsides to enforcement you listed inside the WTF changelog. That said, if you keep it, it&apos;s definitely worth also putting it on MarkedArgumentsBuffer

Ideally, we should put this on MarkedArgumentBuffer as well, but the VM is malloc&apos;ing a MarkedArgumentBuffer for its emptyList.  It just so happens to work out because that list is never populated with args.  It&apos;s bad form, but beyond the scope of the bug I&apos;m trying to fox.  Will look into fixing that at a later time (since it&apos;s benign for now).

&gt;&gt; Source/WTF/wtf/ForbidHeapAllocation.h:37
&gt;&gt; +    typedef int __thisIsHereToForceASemicolonAfterThisForbidHeapAllocationMacro
&gt; 
&gt; Why is this important?

So that we can declare &quot;WTF_FORBID_HEAP_ALLOCATION;&quot; instead of just &quot;WTF_FORBID_HEAP_ALLOCATION&quot; which would look weird in the code that uses this macro.  This is consistent with how WTF_MAKE_FAST_ALLOCATED does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278707</commentid>
    <comment_count>7</comment_count>
      <attachid>302069</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 00:32:20 -0800</bug_when>
    <thetext>Comment on attachment 302069
proposed patch: improved and simpler.

I have a bug I need to fix (as mentioned previously).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278730</commentid>
    <comment_count>8</comment_count>
      <attachid>302080</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 08:13:32 -0800</bug_when>
    <thetext>Created attachment 302080
proposed patch.

I&apos;m still doing some local testing on this, but lets get the EWS on it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278737</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 09:09:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt;&gt; Source/JavaScriptCore/interpreter/CachedCall.h:41
&gt; &gt;&gt; +        WTF_FORBID_HEAP_ALLOCATION;
&gt; &gt; 
&gt; &gt; I&apos;m not a huge fan of this macro given the downsides to enforcement you listed inside the WTF changelog. That said, if you keep it, it&apos;s definitely worth also putting it on MarkedArgumentsBuffer
&gt; 
&gt; Ideally, we should put this on MarkedArgumentBuffer as well, but the VM is
&gt; malloc&apos;ing a MarkedArgumentBuffer for its emptyList.  It just so happens to
&gt; work out because that list is never populated with args.  It&apos;s bad form, but
&gt; beyond the scope of the bug I&apos;m trying to fox.  Will look into fixing that
&gt; at a later time (since it&apos;s benign for now).

Scratch that.  I figured how to fix this on the cheap.  I&apos;ll add it to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278740</commentid>
    <comment_count>10</comment_count>
      <attachid>302082</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 09:36:06 -0800</bug_when>
    <thetext>Created attachment 302082
proposed patch.

Tests are passing.  This is ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278745</commentid>
    <comment_count>11</comment_count>
      <attachid>302082</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-19 10:14:29 -0800</bug_when>
    <thetext>Comment on attachment 302082
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/ArgList.cpp:70
&gt; +    if (requestedCapacity != UnspecifiedCapacity) {

This feels like a weird way to expand for the use case of asking for a specific size. Why not just allocate the exact desired capacity?

&gt; Source/JavaScriptCore/runtime/ArgList.cpp:71
&gt; +        int safeRequestedCapacity = Checked&lt;int&gt;(requestedCapacity).unsafeGet();

This does what you want?

&gt; Source/JavaScriptCore/runtime/ArgList.h:106
&gt; +    static const size_t UnspecifiedCapacity = 0;

Same comment about this being a weird way to overload. My suggestion would be to have two versions of expanding that both call into the same after expansion helper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278777</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 15:33:35 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/JavaScriptCore/runtime/ArgList.cpp:70
&gt; &gt; +    if (requestedCapacity != UnspecifiedCapacity) {
&gt; 
&gt; This feels like a weird way to expand for the use case of asking for a
&gt; specific size. Why not just allocate the exact desired capacity?

Technically, the client can still append more arguments after ensureCapacity() is called, thereby necessitating more expansion.  So, I tried to stay consistent with the original behavior of doubling the sizes from the initial inlined capacity.  That said, in practice, if the client wants to ensureCapacity first, then it usually means that the client already knows what the final needed capacity is.  I&apos;ll change the implementation to allocate the exact requested capacity after the needed overflow checks.

&gt; &gt; Source/JavaScriptCore/runtime/ArgList.cpp:71
&gt; &gt; +        int safeRequestedCapacity = Checked&lt;int&gt;(requestedCapacity).unsafeGet();
&gt; 
&gt; This does what you want?

Yes, I&apos;m invoking this constructor that ensure that the requestedCapacity does not overflow an int:

    template &lt;typename U&gt; Checked(U value)
    {
        if (!isInBounds&lt;T&gt;(value))
            this-&gt;overflowed();
        m_value = static_cast&lt;T&gt;(value);
    }

... and the default behavior of overflowed() is to crash.

&gt; &gt; Source/JavaScriptCore/runtime/ArgList.h:106
&gt; &gt; +    static const size_t UnspecifiedCapacity = 0;
&gt; 
&gt; Same comment about this being a weird way to overload. My suggestion would
&gt; be to have two versions of expanding that both call into the same after
&gt; expansion helper.

This is a good idea.  I will apply this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278779</commentid>
    <comment_count>13</comment_count>
      <attachid>302098</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 16:18:09 -0800</bug_when>
    <thetext>Created attachment 302098
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278791</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-19 17:48:32 -0800</bug_when>
    <thetext>Thanks for the reviews.  Landed in r212618: &lt;http://trac.webkit.org/r212618&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279024</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 12:30:26 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 168609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279054</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-20 14:28:08 -0800</bug_when>
    <thetext>FYI, this patch was rolled out in r212665: &lt;http://trac.webkit.org/changeset/212665&gt;.

I&apos;ve found an issue in MarkedArgumentBuffer::expandCapacity() that may result in random crashes.  The issue is that MarkedArgumentBuffer::expandCapacity() is copying JSValues from the old buffer to the new buffer, and uses m_capacity as the number of values to copy.  It should actually be using m_size.  As a result, depending on what values are present in the old m_buffer, addMarkSet() may crash on a bad heap pointer value computed from the bad JSValue in the old buffer entries beyond m_size.

I will upload a new patch for landing with the fix applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279069</commentid>
    <comment_count>17</comment_count>
      <attachid>302176</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-20 15:01:39 -0800</bug_when>
    <thetext>Created attachment 302176
patch for re-landing.

Let&apos;s get some EWS testing on it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279073</commentid>
    <comment_count>18</comment_count>
      <attachid>302177</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-20 15:07:37 -0800</bug_when>
    <thetext>Created attachment 302177
patch for re-landing: with a slightly improved ChangeLog comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279151</commentid>
    <comment_count>19</comment_count>
      <attachid>302177</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-20 17:26:40 -0800</bug_when>
    <thetext>Comment on attachment 302177
patch for re-landing: with a slightly improved ChangeLog comment.

All tests are passing.  Let&apos;s re-land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279164</commentid>
    <comment_count>20</comment_count>
      <attachid>302177</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 17:52:50 -0800</bug_when>
    <thetext>Comment on attachment 302177
patch for re-landing: with a slightly improved ChangeLog comment.

Clearing flags on attachment: 302177

Committed r212692: &lt;http://trac.webkit.org/changeset/212692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279165</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 17:52:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302066</attachid>
            <date>2017-02-18 20:56:27 -0800</date>
            <delta_ts>2017-02-19 00:02:28 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>14560</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE3LTAyLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFjaGlldmUgdGhpcyBieSB1c2luZyBhIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIHRvIHN0b3JlIHRoZSBhcmd1bWVudHMgaW5zdGVhZAorICAgICAg
ICBvZiBhIFZlY3Rvci4KKworICAgICAgICBBbHNvIGVuaGFuY2VkIHRoZSBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBjbGFzcyB0byBzdXBwb3J0IHByZS1zaXppbmcgZm9sbG93ZWQgYnkKKyAgICAgICAg
aW5kZXhlZCBzZXR0aW5nIG9mIGFyZ3VtZW50cyBzdWJzZXF1ZW50bHkuICBQcmV2aW91c2x5LCBh
cmd1bWVudHMgd2VyZSBhcHBlbmRlZAorICAgICAgICB0byB0aGUgTWFya2VkQXJndW1lbnRCdWZm
ZXIsIGFuZCBpdCBhdXRvLXJlc2l6ZXMgb24gZWFjaCBhcHBlbmQuCisKKyAgICAgICAgVGhlIG5l
dyByZXNpemUoKSwgc2V0QXJndW1lbnQoKSwgYW5kIHNsb3dTZXRBcmd1bWVudCgpIHdpbGwgZW5z
dXJlIHRoYXQKKyAgICAgICAgdW5pbml0aWFsaXplZCBhcmd1bWVudHMgZW50cmllcyBjb250YWlu
IHRoZSBlbXB0eSBKU1ZhbHVlIGZvciBkZWJ1ZyBhc3NlcnRpb25zLgorCisgICAgICAgIEFkZGVk
IGFuIGFzc2VydGlvbiBpbiBDYWNoZWRDYWxsIHRvIG1ha2Ugc3VyZSBhbGwgYXJndW1lbnRzIGVu
dHJpZXMgYXJlCisgICAgICAgIGluaXRpYWxpemVkIGJlZm9yZSBhIGNhbGwgaXMgbWFkZS4KKwor
ICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q2FsbDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OnNldEFyZ3VtZW50KToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6aGFzSG9sZXNJbkFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6
OmV4cGFuZENhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6OnNs
b3dTZXRBcmd1bWVudCk6CisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpsYXN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXI6OnJlc2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
OjpkYXRhKToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6OnNldEFyZ3VtZW50
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6OmZpbGxBcmd1bWVudHNXaXRo
SG9sZXMpOgorCiAyMDE3LTAyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIEltcHJvdmUgQVJNNjQgZGlzYXNzZW1ibGVyIGhhbmRsaW5nIG9mIHBzZXVk
byBvcHMsIHVuc3VwcG9ydGVkIG9wY29kZXMgYW5kIHplcm8gcmVnCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDIxMjYw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5jbHVkZSAiUHJvdG9D
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRlICJWTUlubGlu
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgQ2FjaGVkQ2FsbCB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENhY2hlZENhbGwpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ2FjaGVkQ2FsbCk7CisgICAgICAgIFdURl9GT1JCSURfSEVBUF9BTExP
Q0FUSU9OOwogICAgIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkQ2FsbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50KQogICAgICAgICAg
ICAgOiBtX3ZhbGlkKGZhbHNlKQpAQCAtNTksMTggKzYxLDI4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU1ZhbHVlIGNhbGwoKQogICAgICAgICB7IAogICAgICAgICAgICAgQVNTRVJUKG1f
dmFsaWQpOworICAgICAgICAgICAgQVNTRVJUKCFoYXNIb2xlc0luQXJndW1lbnRzKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG1faW50ZXJwcmV0ZXItPmV4ZWN1dGUobV9jbG9zdXJlKTsKICAgICAg
ICAgfQogICAgICAgICB2b2lkIHNldFRoaXMoSlNWYWx1ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUu
c2V0VGhpc1ZhbHVlKHYpOyB9Ci0gICAgICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG4sIEpTVmFs
dWUgdikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldEFyZ3VtZW50KG4sIHYpOyB9CisgICAgICAgIHZv
aWQgc2V0QXJndW1lbnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX2FyZ3VtZW50cy5zZXRBcmd1bWVu
dChuLCB2KTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBoYXNIb2xlc0luQXJndW1l
bnRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChtX2FyZ3Vt
ZW50cy5hdChpKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAg
ICAgICAgYm9vbCBtX3ZhbGlkOwogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsK
ICAgICAgICAgVk0mIG1fdm07CiAgICAgICAgIFZNRW50cnlTY29wZSBtX2VudHJ5U2NvcGU7CiAg
ICAgICAgIFByb3RvQ2FsbEZyYW1lIG1fcHJvdG9DYWxsRnJhbWU7Ci0gICAgICAgIFZlY3RvcjxK
U1ZhbHVlPiBtX2FyZ3VtZW50czsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1
bWVudHM7CiAgICAgICAgIENhbGxGcmFtZUNsb3N1cmUgbV9jbG9zdXJlOwogICAgIH07CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkocmV2aXNpb24g
MjEyNjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYzLDkgKzYzLDE2IEBAIHZv
aWQgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhTbG8KICAgICB9CiB9CiAKLXZvaWQg
TWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KCkKK3ZvaWQgTWFya2VkQXJndW1l
bnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSkKIHsKKyAg
ICBBU1NFUlQocmVxdWVzdGVkQ2FwYWNpdHkgPT0gVW5zcGVjaWZpZWROZXdDYXBhY2l0eSB8fCBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpIDwgcmVxdWVzdGVkQ2FwYWNpdHkpOwogICAg
IGludCBuZXdDYXBhY2l0eSA9IChDaGVja2VkPGludD4obV9jYXBhY2l0eSkgKiAyKS51bnNhZmVH
ZXQoKTsKKyAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgIT0gVW5zcGVjaWZpZWROZXdDYXBhY2l0
eSkgeworICAgICAgICBpbnQgc2FmZVJlcXVlc3RlZENhcGFjaXR5ID0gQ2hlY2tlZDxpbnQ+KHJl
cXVlc3RlZENhcGFjaXR5KS51bnNhZmVHZXQoKTsKKyAgICAgICAgd2hpbGUgKG5ld0NhcGFjaXR5
IDwgc2FmZVJlcXVlc3RlZENhcGFjaXR5KQorICAgICAgICAgICAgbmV3Q2FwYWNpdHkgPSAoQ2hl
Y2tlZDxpbnQ+KG5ld0NhcGFjaXR5KSAqIDIpLnVuc2FmZUdldCgpOworICAgIH0KKwogICAgIHNp
emVfdCBzaXplID0gKENoZWNrZWQ8c2l6ZV90PihuZXdDYXBhY2l0eSkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKS51bnNhZmVHZXQoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSogbmV3QnVmZmVyID0g
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihmYXN0TWFsbG9jKHNpemUpKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsraSkgewpAQCAtOTAsNCArOTcsMTggQEAgdm9p
ZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2xvd0FwcGVuZChKUwogICAgIGFkZE1hcmtTZXQodik7
CiB9CiAKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OnNsb3dTZXRBcmd1bWVudChpbnQgaW5k
ZXgsIEpTVmFsdWUgdikKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9jYXBhY2l0eSkKKyAgICAgICAg
ZXhwYW5kQ2FwYWNpdHkoaW5kZXggKyAxKTsKKworICAgIHNsb3RGb3IoaW5kZXgpID0gSlNWYWx1
ZTo6ZW5jb2RlKHYpOworICAgIGlmIChtX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICBmaWxsQXJndW1lbnRzV2l0aEhvbGVzKG1fc2l6
ZSwgaW5kZXggLSBtX3NpemUpOworICAgICAgICBtX3NpemUgPSBpbmRleCArIDE7CisgICAgfQor
ICAgIGFkZE1hcmtTZXQodik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjEyNjA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAw
OSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTg2LDIxICs4Niw1MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2l6ZS0tOwog
ICAgIH0KIAotICAgIEpTVmFsdWUgbGFzdCgpIAorICAgIEpTVmFsdWUgbGFzdCgpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9zaXplKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShz
bG90Rm9yKG1fc2l6ZSAtIDEpKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgdm9pZCByZXNpemUo
c2l6ZV90IG5ld1NpemUpCisgICAgeworICAgICAgICBpZiAobmV3U2l6ZSA+IHN0YXRpY19jYXN0
PHNpemVfdD4obV9jYXBhY2l0eSkpCisgICAgICAgICAgICBleHBhbmRDYXBhY2l0eShuZXdTaXpl
KTsKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICBmaWxsQXJndW1l
bnRzV2l0aEhvbGVzKG1fc2l6ZSwgbmV3U2l6ZSAtIG1fc2l6ZSk7CisgICAgICAgIG1fc2l6ZSA9
IG5ld1NpemU7CisgICAgfQorCisgICAgSlNWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KG1fYnVmZmVyKTsgfQorCisgICAgdm9pZCBzZXRBcmd1
bWVudChpbnQgaW5kZXgsIEpTVmFsdWUgdikKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBt
X2NhcGFjaXR5IHx8IG1hbGxvY0Jhc2UoKSkKKyAgICAgICAgICAgIHJldHVybiBzbG93U2V0QXJn
dW1lbnQoaW5kZXgsIHYpOworICAgICAgICBzbG90Rm9yKGluZGV4KSA9IEpTVmFsdWU6OmVuY29k
ZSh2KTsKKyAgICAgICAgaWYgKG1fc2l6ZSA8PSBpbmRleCkgeworICAgICAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICAgICAgZmlsbEFyZ3VtZW50c1dpdGhIb2xlcyht
X3NpemUsIGluZGV4IC0gbV9zaXplKTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IGluZGV4ICsgMTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhTbG90VmlzaXRv
ciYsIExpc3RTZXQmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGV4cGFuZENhcGFjaXR5KCk7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBVbnNwZWNpZmllZE5ld0NhcGFjaXR5ID0gMDsKKyAgICB2
b2lkIGV4cGFuZENhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSA9IFVuc3BlY2lmaWVk
TmV3Q2FwYWNpdHkpOwogCiAgICAgdm9pZCBhZGRNYXJrU2V0KEpTVmFsdWUpOwogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwotICAgICAgICAKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dTZXRBcmd1bWVudChpbnQgaW5kZXgsIEpTVmFsdWUp
OworCisgICAgdm9pZCBmaWxsQXJndW1lbnRzV2l0aEhvbGVzKGludCBzdGFydEluZGV4LCBpbnQg
bnVtYmVyT2ZBcmd1bWVudHMpCisgICAgeworICAgICAgICBpbnQgZW5kSW5kZXggPSBzdGFydElu
ZGV4ICsgbnVtYmVyT2ZBcmd1bWVudHM7CisgICAgICAgIHdoaWxlIChzdGFydEluZGV4IDwgZW5k
SW5kZXgpCisgICAgICAgICAgICBtX2J1ZmZlcltzdGFydEluZGV4XSA9IGVuY29kZWRKU1ZhbHVl
KCk7CisgICAgfQorCiAgICAgRW5jb2RlZEpTVmFsdWUmIHNsb3RGb3IoaW50IGl0ZW0pIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXJbaXRlbV07CkluZGV4OiBTb3VyY2UvV1RG
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24g
MjEyNjA5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxNy0wMi0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ2FjaGVkQ2FsbCBzaG91bGQgbGV0IEdDIGtub3cgdG8ga2VlcCBpdHMgYXJndW1lbnRz
IGFsaXZlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4NTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDQ3NTc2Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIFdURl9GT1JCSURfSEVB
UF9BTExPQ0FUSU9OIHRoYXQgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGZhaWx1cmUgaWYKKyAg
ICAgICAgYSBjbGFzcyBkZWNsYXJlZCB3aXRoIGl0IGlzIG1hbGxvY2VkLgorCisgICAgICAgIFdo
aWxlIHRoaXMgZG9lc24ndCBwcmV2ZW50IHRoYXQgY2xhc3MgZGVjbGFyZWQgV1RGX0ZPUkJJRF9I
RUFQX0FMTE9DQVRJT04gZnJvbQorICAgICAgICBiZWluZyBlbWJlZGRlZCBpbiBhbm90aGVyIGNs
YXNzIHRoYXQgaXMgaGVhcCBhbGxvY2F0ZWQsIGl0IGRvZXMgYXQgbWluaW11bQorICAgICAgICBk
b2N1bWVudCB0aGUgaW50ZW50IGFuZCBnaXZlcyB0aGUgdXNlcnMgb2YgdGhpcyBjbGFzcyBhIGNo
YW5jZSB0byBkbyB0aGUKKyAgICAgICAgcmlnaHQgdGhpbmcuCisKKyAgICAgICAgKiBXVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yYmlkSGVhcEFsbG9jYXRp
b24uaDogQWRkZWQuCisKIDIwMTctMDItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWN1cnNpdmUgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSBjYWxscyBj
YXVzZXMgdGFiIHRvIGJlY29tZSB1bnJlc3BvbnNpdmUKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEyNjA3KQorKysgU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2
OCw3IEBACiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFB
OTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2
MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVy
LmggKi87IH07CiAJCUZFODIyNTMxMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MjI1MzAxQjJBMUU1
QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi87IH07CisJCUZFODZBODc1MUU1OTQ0MDIwMDExMUJC
RiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBB
bGxvY2F0aW9uLmggKi87IH07CiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4OTI1
QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFDRDNEMTYzMEY4
M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNDMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC03NTEsNiArNzUyLDcgQEAK
IAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVh
cEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yYmlkSGVh
cEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1QUYxRDAw
REFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05NjIsNiArOTY0LDcgQEAKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyog
RmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyog
RmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZs
aXBCeXRlcy5oICovLAorCQkJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFw
QWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJk
LmggKi8sCiAJCQkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJ
CQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8s
CkBAIC0xNDE4LDYgKzE0MjEsNyBAQAogCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDhCOUMxNzMxODZDRTAwMTQxREE0IC8q
IEZ1bmN0aW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQ0ExNTFBODI1
QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4NkE4NzUxRTU5NDQw
MjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3Vu
dGVkU2V0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZvcmJpZEhlYXBB
bGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRm9yYmlkSGVhcEFsbG9j
YXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Gb3JiaWRIZWFwQWxsb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBXVEZf
Rk9SQklEX0hFQVBfQUxMT0NBVElPTiBcCitwcml2YXRlOiBcCisgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
KSA9IGRlbGV0ZTsgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSA9IGRlbGV0ZTsg
XAorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAorICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0gZGVsZXRlOyBc
CisgICAgdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNG
b3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvCg==
</data>
<flag name="review"
          id="323809"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302069</attachid>
            <date>2017-02-19 00:02:28 -0800</date>
            <delta_ts>2017-02-19 08:13:32 -0800</delta_ts>
            <desc>proposed patch: improved and simpler.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>13828</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE3LTAyLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGZpeCB0aGlzIGJ5IGhhdmluZyBDYWNoZWRD
YWxsIHVzZSBhIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHRvIHN0b3JlIGl0cworICAgICAgICBhcmd1
bWVudHMgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKworICAgICAgICAqIGludGVycHJldGVyL0NhY2hl
ZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAg
IChKU0M6OkNhY2hlZENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpjbGVh
ckFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmFwcGVuZEFyZ3VtZW50KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6c2V0QXJndW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZl
cjo6ZGF0YSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2gpOgorCiAyMDE3LTAyLTE3ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgQVJNNjQgZGlz
YXNzZW1ibGVyIGhhbmRsaW5nIG9mIHBzZXVkbyBvcHMsIHVuc3VwcG9ydGVkIG9wY29kZXMgYW5k
IHplcm8gcmVnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVk
Q2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWNoZWRDYWxsLmgJKHJldmlzaW9uIDIxMjYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTAg
KzMzLDEyIEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTUVudHJ5
U2NvcGUuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVh
cEFsbG9jYXRpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ2FjaGVkQ2FsbCB7
Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZENhbGwpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkQ2FsbCk7Cisg
ICAgICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogICAgIHB1YmxpYzoKICAgICAgICAg
Q2FjaGVkQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGlu
dCBhcmd1bWVudENvdW50KQogICAgICAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQpAQCAtNDksNyAr
NTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJl
c2l6ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVy
cHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNh
bGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwg
ZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKQEAgLTU5LDEwICs2MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1
ZSBjYWxsKCkKICAgICAgICAgeyAKICAgICAgICAgICAgIEFTU0VSVChtX3ZhbGlkKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
X3Byb3RvQ2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1f
aW50ZXJwcmV0ZXItPmV4ZWN1dGUobV9jbG9zdXJlKTsKICAgICAgICAgfQogICAgICAgICB2b2lk
IHNldFRoaXMoSlNWYWx1ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUuc2V0VGhpc1ZhbHVlKHYpOyB9
Ci0gICAgICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX3Byb3RvQ2Fs
bEZyYW1lLnNldEFyZ3VtZW50KG4sIHYpOyB9CisKKyAgICAgICAgdm9pZCBjbGVhckFyZ3VtZW50
cygpIHsgbV9hcmd1bWVudHMuY2xlYXIoKTsgfQorICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50
KEpTVmFsdWUgdikgeyBtX2FyZ3VtZW50cy5hcHBlbmQodik7IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgbV92YWxpZDsKQEAgLTcwLDcgKzc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZNJiBtX3ZtOwogICAgICAgICBWTUVudHJ5U2NvcGUgbV9lbnRyeVNjb3BlOwogICAg
ICAgICBQcm90b0NhbGxGcmFtZSBtX3Byb3RvQ2FsbEZyYW1lOwotICAgICAgICBWZWN0b3I8SlNW
YWx1ZT4gbV9hcmd1bWVudHM7CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1fYXJndW1l
bnRzOwogICAgICAgICBDYWxsRnJhbWVDbG9zdXJlIG1fY2xvc3VyZTsKICAgICB9OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjEyNjA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywg
MjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkxLDcgKzkxLDkgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobV9zaXplKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShzbG90Rm9yKG1fc2l6
ZSAtIDEpKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgSlNWYWx1ZSogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KG1fYnVmZmVyKTsgfQorCiAgICAgc3Rh
dGljIHZvaWQgbWFya0xpc3RzKFNsb3RWaXNpdG9yJiwgTGlzdFNldCYpOwogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyMTI2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSwgSW5jLgogICogIENvcHlyaWdodCAoQykgMjAxNSBKb3JkYW4gSGFyYmFuZCAobGpoYXJiQGdt
YWlsLmNvbSkKICAqCkBAIC01MzksMTggKzUzOSwxOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSByZXBsCiAgICAgICAgICAgICAgICAgICAgIE9VVF9PRl9NRU1PUlkoZXhl
Yywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5jbGVhckFyZ3VtZW50cygpOwogICAgICAgICAgICAgICAgIGZvciAo
OyBpIDwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBtYXRjaFN0YXJ0ID0gb3ZlY3RvcltpICogMl07CiAgICAgICAgICAgICAgICAg
ICAgIGludCBtYXRjaExlbiA9IG92ZWN0b3JbaSAqIDIgKyAxXSAtIG1hdGNoU3RhcnQ7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoU3RhcnQgPCAwKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNVbmRlZmluZWQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0QXJndW1lbnQoaSwganNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNoU3RhcnQs
IG1hdGNoTGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmFwcGVuZEFy
Z3VtZW50KGpzU3Vic3RyaW5nKCZ2bSwgc291cmNlLCBtYXRjaFN0YXJ0LCBtYXRjaExlbikpOwog
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1l
bnQoaSsrLCBqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKLSAgICAgICAgICAgICAgICBjYWNoZWRD
YWxsLnNldEFyZ3VtZW50KGkrKywgc3RyaW5nKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxs
LmFwcGVuZEFyZ3VtZW50KGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOworICAgICAgICAgICAgICAg
IGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoc3RyaW5nKTsKIAogICAgICAgICAgICAgICAgIGNh
Y2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVl
IGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CkBAIC01NzgsMTggKzU3OSwxOSBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsCiAgICAgICAgICAgICAgICAgICAg
IE9VVF9PRl9NRU1PUlkoZXhlYywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aSA9IDA7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5jbGVhckFyZ3VtZW50cygpOwogICAg
ICAgICAgICAgICAgIGZvciAoOyBpIDwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMTsgKytp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBtYXRjaFN0YXJ0ID0gb3ZlY3RvcltpICogMl07
CiAgICAgICAgICAgICAgICAgICAgIGludCBtYXRjaExlbiA9IG92ZWN0b3JbaSAqIDIgKyAxXSAt
IG1hdGNoU3RhcnQ7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoU3RhcnQgPCAwKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1l
bnQoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSwganNTdWJzdHJpbmcoJnZtLCBz
b3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YWNoZWRDYWxsLmFwcGVuZEFyZ3VtZW50KGpzU3Vic3RyaW5nKCZ2bSwgc291cmNlLCBtYXRjaFN0
YXJ0LCBtYXRjaExlbikpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGNh
Y2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKLSAgICAg
ICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGkrKywgc3RyaW5nKTsKKyAgICAgICAg
ICAgICAgICBjYWNoZWRDYWxsLmFwcGVuZEFyZ3VtZW50KGpzTnVtYmVyKHJlc3VsdC5zdGFydCkp
OworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoc3RyaW5nKTsKIAog
ICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CkluZGV4OiBT
b3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
cmV2aXNpb24gMjEyNjA5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxNy0wMi0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgQ2FjaGVkQ2FsbCBzaG91bGQgbGV0IEdDIGtub3cgdG8ga2VlcCBpdHMg
YXJndW1lbnRzIGFsaXZlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4NTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDQ3NTc2Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIFdURl9G
T1JCSURfSEVBUF9BTExPQ0FUSU9OIHRoYXQgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGZhaWx1
cmUgaWYKKyAgICAgICAgYSBjbGFzcyBkZWNsYXJlZCB3aXRoIGl0IGlzIG1hbGxvY2VkLgorCisg
ICAgICAgIFdoaWxlIHRoaXMgZG9lc24ndCBwcmV2ZW50IHRoYXQgY2xhc3MgZGVjbGFyZWQgV1RG
X0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gZnJvbQorICAgICAgICBiZWluZyBlbWJlZGRlZCBpbiBh
bm90aGVyIGNsYXNzIHRoYXQgaXMgaGVhcCBhbGxvY2F0ZWQsIGl0IGRvZXMgYXQgbWluaW11bQor
ICAgICAgICBkb2N1bWVudCB0aGUgaW50ZW50IGFuZCBnaXZlcyB0aGUgdXNlcnMgb2YgdGhpcyBj
bGFzcyBhIGNoYW5jZSB0byBkbyB0aGUKKyAgICAgICAgcmlnaHQgdGhpbmcuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yYmlkSGVh
cEFsbG9jYXRpb24uaDogQWRkZWQuCisKIDIwMTctMDItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWN1cnNpdmUgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2Uo
KSBjYWxscyBjYXVzZXMgdGFiIHRvIGJlY29tZSB1bnJlc3BvbnNpdmUKSW5kZXg6IFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEyNjA3KQorKysgU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzY4LDYgKzM2OCw3IEBACiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVD
b2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlF
Qjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyog
Qnl0ZU9yZGVyLmggKi87IH07CiAJCUZFODIyNTMxMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MjI1
MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi87IH07CisJCUZFODZBODc1MUU1OTQ0
MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZv
cmJpZEhlYXBBbGxvY2F0aW9uLmggKi87IH07CiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFD
RDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC03NTEsNiAr
NzUyLDcgQEAKIAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBO
YWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyog
Rm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4
OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
REFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05NjIsNiArOTY0LDcgQEAKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdB
RTNGIC8qIEZsaXBCeXRlcy5oICovLAorCQkJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBG
b3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAv
KiBGb3J3YXJkLmggKi8sCiAJCQkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9u
LmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hl
ci5jcHAgKi8sCkBAIC0xNDE4LDYgKzE0MjEsNyBAQAogCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNF
OTlDMyAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDhCOUMxNzMxODZDRTAw
MTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
Q0ExNTFBODI1QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4NkE4
NzUxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5E
YXRlVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8q
IEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zv
cmJpZEhlYXBBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRm9yYmlk
SGVhcEFsbG9jYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Gb3JiaWRI
ZWFwQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2Rl
ZmluZSBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBcCitwcml2YXRlOiBcCisgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90KSA9IGRlbGV0ZTsgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSA9
IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0
ZTsgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopID0gZGVsZXRlOyBcCisgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0g
ZGVsZXRlOyBcCisgICAgdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25B
ZnRlclRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvCg==
</data>
<flag name="review"
          id="323813"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302080</attachid>
            <date>2017-02-19 08:13:32 -0800</date>
            <delta_ts>2017-02-19 09:36:06 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>18135</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE3LTAyLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGZpeCB0aGlzIGJ5IGhhdmluZyBDYWNoZWRD
YWxsIHVzZSBhIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHRvIHN0b3JlIGl0cworICAgICAgICBhcmd1
bWVudHMgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKworICAgICAgICAqIGludGVycHJldGVyL0NhY2hl
ZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAg
IChKU0M6OkNhY2hlZENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpjbGVh
ckFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmFwcGVuZEFyZ3VtZW50KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6c2V0QXJndW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSk6CisgICAgICAgICogcnVudGltZS9B
cmdMaXN0Lmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjplbnN1cmVDYXBh
Y2l0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2gpOgorCiAyMDE3LTAyLTE3ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgQVJNNjQgZGlzYXNz
ZW1ibGVyIGhhbmRsaW5nIG9mIHBzZXVkbyBvcHMsIHVuc3VwcG9ydGVkIG9wY29kZXMgYW5kIHpl
cm8gcmVnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2Fs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNo
ZWRDYWxsLmgJKHJldmlzaW9uIDIxMjYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTAgKzMz
LDEyIEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTUVudHJ5U2Nv
cGUuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFs
bG9jYXRpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ2FjaGVkQ2FsbCB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZENhbGwpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkQ2FsbCk7CisgICAg
ICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogICAgIHB1YmxpYzoKICAgICAgICAgQ2Fj
aGVkQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBh
cmd1bWVudENvdW50KQogICAgICAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQpAQCAtNDksOCArNTEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6
ZShhcmd1bWVudENvdW50KTsKLSAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJl
dGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxG
cmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVu
Y3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9h
cmd1bWVudHMuZW5zdXJlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAg
bV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwg
YXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cyk7CiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgICAgIG1fdmFsaWQgPSAhc2NvcGUuZXhjZXB0aW9u
KCk7CkBAIC01OSwxMCArNjEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUg
Y2FsbCgpCiAgICAgICAgIHsgCiAgICAgICAgICAgICBBU1NFUlQobV92YWxpZCk7CisgICAgICAg
ICAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9w
cm90b0NhbGxGcmFtZS5hcmd1bWVudENvdW50KCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2lu
dGVycHJldGVyLT5leGVjdXRlKG1fY2xvc3VyZSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBz
ZXRUaGlzKEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldFRoaXNWYWx1ZSh2KTsgfQot
ICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGludCBuLCBKU1ZhbHVlIHYpIHsgbV9wcm90b0NhbGxG
cmFtZS5zZXRBcmd1bWVudChuLCB2KTsgfQorCisgICAgICAgIHZvaWQgY2xlYXJBcmd1bWVudHMo
KSB7IG1fYXJndW1lbnRzLmNsZWFyKCk7IH0KKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChK
U1ZhbHVlIHYpIHsgbV9hcmd1bWVudHMuYXBwZW5kKHYpOyB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBib29sIG1fdmFsaWQ7CkBAIC03MCw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBWTSYgbV92bTsKICAgICAgICAgVk1FbnRyeVNjb3BlIG1fZW50cnlTY29wZTsKICAgICAg
ICAgUHJvdG9DYWxsRnJhbWUgbV9wcm90b0NhbGxGcmFtZTsKLSAgICAgICAgVmVjdG9yPEpTVmFs
dWU+IG1fYXJndW1lbnRzOworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50
czsKICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMjEyNjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgSlNP
YmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKGFzT2JqZWN0KHJlc3VsdCkpOwogfQogCi1DYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxG
cmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUqIGFyZ3MpCitDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0Nh
bGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgSlNTY29wZSogc2NvcGUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZt
ID0gKnNjb3BlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRl
cjo6cHJlcGFyZUZvcgogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOwogCi0gICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29kZUJsb2NrLCBmdW5j
dGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdzKTsKKyAgICBwcm90b0NhbGxGcmFt
ZS0+aW5pdChuZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQs
IGFyZ3MuZGF0YSgpKTsKICAgICAvLyBSZXR1cm4gdGhlIHN1Y2Nlc3NmdWwgY2xvc3VyZToKICAg
ICBDYWxsRnJhbWVDbG9zdXJlIHJlc3VsdCA9IHsgY2FsbEZyYW1lLCBwcm90b0NhbGxGcmFtZSwg
ZnVuY3Rpb24sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgJnZtLCBzY29wZSwgbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH07CiAgICAgcmV0dXJu
IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCShyZXZpc2lvbiAyMTI2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gRXhlY3V0aW9u
RmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwogCi0gICAgICAgIENhbGxGcmFt
ZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZy
YW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiwgSlNWYWx1ZSopOworICAgICAgICBDYWxsRnJhbWVDbG9zdXJl
IHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFBy
b3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSlNTY29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUo
Q2FsbEZyYW1lQ2xvc3VyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcAkocmV2aXNpb24gMjEyNjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTYzLDkgKzYzLDE2IEBAIHZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0
cyhTbG8KICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFj
aXR5KCkKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KHNpemVfdCBy
ZXF1ZXN0ZWRDYXBhY2l0eSkKIHsKKyAgICBBU1NFUlQocmVxdWVzdGVkQ2FwYWNpdHkgPT0gVW5z
cGVjaWZpZWRDYXBhY2l0eSB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpIDwgcmVx
dWVzdGVkQ2FwYWNpdHkpOwogICAgIGludCBuZXdDYXBhY2l0eSA9IChDaGVja2VkPGludD4obV9j
YXBhY2l0eSkgKiAyKS51bnNhZmVHZXQoKTsKKyAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgIT0g
VW5zcGVjaWZpZWRDYXBhY2l0eSkgeworICAgICAgICBpbnQgc2FmZVJlcXVlc3RlZENhcGFjaXR5
ID0gQ2hlY2tlZDxpbnQ+KHJlcXVlc3RlZENhcGFjaXR5KS51bnNhZmVHZXQoKTsKKyAgICAgICAg
d2hpbGUgKG5ld0NhcGFjaXR5IDwgc2FmZVJlcXVlc3RlZENhcGFjaXR5KQorICAgICAgICAgICAg
bmV3Q2FwYWNpdHkgPSAoQ2hlY2tlZDxpbnQ+KG5ld0NhcGFjaXR5KSAqIDIpLnVuc2FmZUdldCgp
OworICAgIH0KKwogICAgIHNpemVfdCBzaXplID0gKENoZWNrZWQ8c2l6ZV90PihuZXdDYXBhY2l0
eSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKS51bnNhZmVHZXQoKTsKICAgICBFbmNvZGVkSlNW
YWx1ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihmYXN0TWFsbG9j
KHNpemUpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsraSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjEyNjA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywg
MjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk0LDggKzk0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKFNsb3RWaXNpdG9yJiwgTGlzdFNldCYpOwogCisgICAg
dm9pZCBlbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNp
dHkpKQorICAgICAgICAgICAgZXhwYW5kQ2FwYWNpdHkocmVxdWVzdGVkQ2FwYWNpdHkpOworICAg
IH0KKwogcHJpdmF0ZToKLSAgICB2b2lkIGV4cGFuZENhcGFjaXR5KCk7CisgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBVbnNwZWNpZmllZENhcGFjaXR5ID0gMDsKKyAgICB2b2lkIGV4cGFuZENhcGFj
aXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSA9IFVuc3BlY2lmaWVkQ2FwYWNpdHkpOwogCiAg
ICAgdm9pZCBhZGRNYXJrU2V0KEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIxMjYwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDE1IEpvcmRhbiBIYXJiYW5kIChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTUzOSwxOCAr
NTM5LDE5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAg
ICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmNsZWFyQXJn
dW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRl
cm5zKCkgKyAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBv
dmVjdG9yW2kgKiAyXTsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoTGVuID0gb3ZlY3Rv
cltpICogMiArIDFdIC0gbWF0Y2hTdGFydDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobWF0
Y2hTdGFydCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5hcHBlbmRBcmd1bWVudChqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1
YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNTdWJzdHJpbmcoJnZtLCBz
b3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKHJlc3VsdC5z
dGFydCkpOwotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzdHJp
bmcpOworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNOdW1iZXIo
cmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVu
dChzdHJpbmcpOwogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNh
bGwoKTsKQEAgLTU3OCwxOCArNTc5LDE5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29w
ZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAgICBj
YWNoZWRDYWxsLmNsZWFyQXJndW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBy
ZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAg
aW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAyXTsKICAgICAgICAgICAgICAgICAgICAgaW50
IG1hdGNoTGVuID0gb3ZlY3RvcltpICogMiArIDFdIC0gbWF0Y2hTdGFydDsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBj
YWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hM
ZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQo
anNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyss
IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0
QXJndW1lbnQoaSsrLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5k
QXJndW1lbnQoanNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY2FjaGVk
Q2FsbC5hcHBlbmRBcmd1bWVudChzdHJpbmcpOwogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1
bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTI2MDkpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAy
LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWRDYWxs
IHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gdGhh
dCB3aWxsIGNhdXNlIGEgY29tcGlsYXRpb24gZmFpbHVyZSBpZgorICAgICAgICBhIGNsYXNzIGRl
Y2xhcmVkIHdpdGggaXQgaXMgbWFsbG9jZWQuCisKKyAgICAgICAgV2hpbGUgdGhpcyBkb2Vzbid0
IHByZXZlbnQgdGhhdCBjbGFzcyBkZWNsYXJlZCBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBm
cm9tCisgICAgICAgIGJlaW5nIGVtYmVkZGVkIGluIGFub3RoZXIgY2xhc3MgdGhhdCBpcyBoZWFw
IGFsbG9jYXRlZCwgaXQgZG9lcyBhdCBtaW5pbXVtCisgICAgICAgIGRvY3VtZW50IHRoZSBpbnRl
bnQgYW5kIGdpdmVzIHRoZSB1c2VycyBvZiB0aGlzIGNsYXNzIGEgY2hhbmNlIHRvIGRvIHRoZQor
ICAgICAgICByaWdodCB0aGluZy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oOiBBZGRlZC4KKwog
MjAxNy0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
Y3Vyc2l2ZSBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpIGNhbGxzIGNhdXNlcyB0YWIgdG8gYmVj
b21lIHVucmVzcG9uc2l2ZQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMTI2MDcpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNiArMzY4LDcgQEAKIAkJRTRBMEFE
M0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAv
KiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsgfTsKIAkJRkU4
MjI1MzExQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFr
ZWRQdHIuaCAqLzsgfTsKKwkJRkU4NkE4NzUxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBB
bGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLzsg
fTsKIAkJRkU4OTI1QjAxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg5MjVBRjFEMDBEQUVDMDA0Njkw
N0UgLyogSW5kZW50ZXIuaCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlG
RURBQ0QzRTE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8q
IFN0YWNrU3RhdHMuaCAqLzsgfTsKQEAgLTc1MSw2ICs3NTIsNyBAQAogCQlFQjk1RTFFRjE2MUE3
MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJCQkRCMTA3
RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyog
SW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8q
IFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rh
Y2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4
M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2Miw2ICs5
NjQsNyBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0u
Y3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0u
aCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCisJ
CQkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8s
CiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQk4M0Yy
QkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24uaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4
Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLywKQEAgLTE0MTgsNiArMTQy
MSw3IEBACiAJCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTFEOEI5QzE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRj
aGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0
UHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTg2QTg3NTFFNTk0NDAyMDAxMTFCQkYgLyogRm9y
YmlkSGVhcEFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NEFGMUJEODI1MzEw
MDgwRkY3NCAvKiBHcmFwaE5vZGVXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkMwNTM4
NTQxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNEMzE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaENvdW50ZWRTZXQuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL1dURi93dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjZGVmaW5lIFdURl9GT1JCSURfSEVBUF9BTExP
Q0FUSU9OIFwKK3ByaXZhdGU6IFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqKSA9
IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpID0gZGVsZXRlOyBcCisg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCisgICAgdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IFwKKyAgICB0eXBlZGVmIGlu
dCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc0ZvcmJpZEhlYXBBbGxvY2F0
aW9uTWFjcm8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302082</attachid>
            <date>2017-02-19 09:36:06 -0800</date>
            <delta_ts>2017-02-19 16:18:09 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>22836</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE3LTAyLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGZpeCB0aGlzIGJ5IGhhdmluZyBDYWNoZWRD
YWxsIHVzZSBhIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHRvIHN0b3JlIGl0cworICAgICAgICBhcmd1
bWVudHMgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKworICAgICAgICBBbHNvIGRlY2xhcmVkIENhY2hl
ZENhbGwsIE1hcmtlZEFyZ3VtZW50QnVmZmVyLCBhbmQgUHJvdG9DYWxsRnJhbWUgYXMKKyAgICAg
ICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gYmVjYXVzZSB0aGV5IHJlbHkgb24gYmVpbmcg
c3RhY2sgYWxsb2NhdGVkIGZvcgorICAgICAgICBjb3JyZWN0bmVzcy4KKworICAgICAgICAqIGlu
dGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVk
Q2FsbCk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpD
YWNoZWRDYWxsOjpjbGVhckFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmFw
cGVuZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6c2V0QXJndW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OmVtcHR5TGlzdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1
ZmZlcjo6ZW5zdXJlQ2FwYWNpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisKIDIwMTctMDItMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wcm92ZSBBUk02NCBkaXNhc3NlbWJsZXIgaGFuZGxpbmcgb2YgcHNl
dWRvIG9wcywgdW5zdXBwb3J0ZWQgb3Bjb2RlcyBhbmQgemVybyByZWcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkocmV2aXNpb24gMjEy
NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywxMCArMzMsMTIgQEAKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogI2luY2x1ZGUgIlZNSW5s
aW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBDYWNoZWRDYWxsIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ2FjaGVkQ2FsbCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDYWNoZWRDYWxsKTsKKyAgICAgICAgV1RGX0ZPUkJJRF9IRUFQX0FM
TE9DQVRJT047CiAgICAgcHVibGljOgogICAgICAgICBDYWNoZWRDYWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnQpCiAgICAgICAg
ICAgICA6IG1fdmFsaWQoZmFsc2UpCkBAIC00OSw4ICs1MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbk5vbklubGluZSgp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgbV9hcmd1bWVudHMucmVzaXplKGFyZ3VtZW50Q291bnQpOwotICAg
ICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRD
YWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCAmbV9wcm90b0NhbGxGcmFt
ZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUoKSwgbV9hcmd1
bWVudHMuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5lbnN1cmVDYXBhY2l0
eShhcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJl
dGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxG
cmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVu
Y3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAg
ICAgICAgICAgbV92YWxpZCA9ICFzY29wZS5leGNlcHRpb24oKTsKQEAgLTU5LDEwICs2MSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBjYWxsKCkKICAgICAgICAgeyAKICAg
ICAgICAgICAgIEFTU0VSVChtX3ZhbGlkKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50
cy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3Byb3RvQ2FsbEZyYW1lLmFyZ3VtZW50
Q291bnQoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1faW50ZXJwcmV0ZXItPmV4ZWN1dGUobV9j
bG9zdXJlKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldFRoaXMoSlNWYWx1ZSB2KSB7IG1f
cHJvdG9DYWxsRnJhbWUuc2V0VGhpc1ZhbHVlKHYpOyB9Ci0gICAgICAgIHZvaWQgc2V0QXJndW1l
bnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldEFyZ3VtZW50KG4sIHYp
OyB9CisKKyAgICAgICAgdm9pZCBjbGVhckFyZ3VtZW50cygpIHsgbV9hcmd1bWVudHMuY2xlYXIo
KTsgfQorICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgdikgeyBtX2FyZ3VtZW50
cy5hcHBlbmQodik7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgbV92YWxpZDsKQEAg
LTcwLDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZNJiBtX3ZtOwogICAgICAg
ICBWTUVudHJ5U2NvcGUgbV9lbnRyeVNjb3BlOwogICAgICAgICBQcm90b0NhbGxGcmFtZSBtX3By
b3RvQ2FsbEZyYW1lOwotICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gbV9hcmd1bWVudHM7CisgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1fYXJndW1lbnRzOwogICAgICAgICBDYWxsRnJhbWVD
bG9zdXJlIG1fY2xvc3VyZTsKICAgICB9OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjEyNjA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDExLCAy
MDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKTsgfQogICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVy
cyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICp2bSgpLnByb3BlcnR5TmFtZXM7IH0K
LSAgICAgICAgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGVtcHR5TGlzdCgpIGNvbnN0IHsg
cmV0dXJuICp2bSgpLmVtcHR5TGlzdDsgfQorICAgICAgICBjb25zdCBBcmdMaXN0JiBlbXB0eUxp
c3QoKSBjb25zdCB7IHJldHVybiAqdm0oKS5lbXB0eUxpc3Q7IH0KICAgICAgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyKCkgeyByZXR1cm4gdm0oKS5pbnRlcnByZXRlcjsgfQogICAgICAgICBI
ZWFwKiBoZWFwKCkgeyByZXR1cm4gJnZtKCkuaGVhcDsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIx
MjYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMTAsIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9v
LmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgSlNPYmplY3QqIElu
dGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGFz
T2JqZWN0KHJlc3VsdCkpOwogfQogCi1DYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVw
YXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSwgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNTY29w
ZSogc2NvcGUsIEpTVmFsdWUqIGFyZ3MpCitDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpw
cmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSwg
SlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNT
Y29wZSogc2NvcGUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0gKnNjb3Bl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtMTAyNSw3ICsxMDI1LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFy
ZUZvcgogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OwogCi0gICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwganNV
bmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdzKTsKKyAgICBwcm90b0NhbGxGcmFtZS0+aW5pdChu
ZXdDb2RlQmxvY2ssIGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MuZGF0
YSgpKTsKICAgICAvLyBSZXR1cm4gdGhlIHN1Y2Nlc3NmdWwgY2xvc3VyZToKICAgICBDYWxsRnJh
bWVDbG9zdXJlIHJlc3VsdCA9IHsgY2FsbEZyYW1lLCBwcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24s
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgJnZtLCBzY29wZSwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH07CiAgICAgcmV0dXJuIHJlc3VsdDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAyMTI2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNTQsNyAr
MTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZW51bSBFeGVj
dXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07CiAKLSAgICAgICAgQ2Fs
bEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBD
YWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBKU1ZhbHVlKik7CisgICAgICAgIENhbGxGcmFtZUNs
b3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1l
KiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBKU1Njb3BlKiwgY29uc3QgQXJnTGlzdCYpOwogCiAgICAgICAgIEpTVmFsdWUgZXhl
Y3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyMTI2MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiwxMCArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVn
aXN0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7Cisg
ICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CitwdWJsaWM6CiAgICAgUmVnaXN0ZXIgY29k
ZUJsb2NrVmFsdWU7CiAgICAgUmVnaXN0ZXIgY2FsbGVlVmFsdWU7CiAgICAgUmVnaXN0ZXIgYXJn
Q291bnRBbmRDb2RlT3JpZ2luVmFsdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmNwcAkocmV2aXNpb24gMjEyNjA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTYzLDkgKzYzLDE2IEBAIHZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtM
aXN0cyhTbG8KICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENh
cGFjaXR5KCkKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KHNpemVf
dCByZXF1ZXN0ZWRDYXBhY2l0eSkKIHsKKyAgICBBU1NFUlQocmVxdWVzdGVkQ2FwYWNpdHkgPT0g
VW5zcGVjaWZpZWRDYXBhY2l0eSB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpIDwg
cmVxdWVzdGVkQ2FwYWNpdHkpOwogICAgIGludCBuZXdDYXBhY2l0eSA9IChDaGVja2VkPGludD4o
bV9jYXBhY2l0eSkgKiAyKS51bnNhZmVHZXQoKTsKKyAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkg
IT0gVW5zcGVjaWZpZWRDYXBhY2l0eSkgeworICAgICAgICBpbnQgc2FmZVJlcXVlc3RlZENhcGFj
aXR5ID0gQ2hlY2tlZDxpbnQ+KHJlcXVlc3RlZENhcGFjaXR5KS51bnNhZmVHZXQoKTsKKyAgICAg
ICAgd2hpbGUgKG5ld0NhcGFjaXR5IDwgc2FmZVJlcXVlc3RlZENhcGFjaXR5KQorICAgICAgICAg
ICAgbmV3Q2FwYWNpdHkgPSAoQ2hlY2tlZDxpbnQ+KG5ld0NhcGFjaXR5KSAqIDIpLnVuc2FmZUdl
dCgpOworICAgIH0KKwogICAgIHNpemVfdCBzaXplID0gKENoZWNrZWQ8c2l6ZV90PihuZXdDYXBh
Y2l0eSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKS51bnNhZmVHZXQoKTsKICAgICBFbmNvZGVk
SlNWYWx1ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihmYXN0TWFs
bG9jKHNpemUpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsraSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjEy
NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NywgMjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDEyICsyMiwxNCBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgTWFya2VkQXJndW1lbnRCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtl
ZEFyZ3VtZW50QnVmZmVyKTsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICBm
cmllbmQgY2xhc3MgVk07CiAgICAgZnJpZW5kIGNsYXNzIEFyZ0xpc3Q7CiAKQEAgLTk0LDggKzk2
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKFNsb3RW
aXNpdG9yJiwgTGlzdFNldCYpOwogCisgICAgdm9pZCBlbnN1cmVDYXBhY2l0eShzaXplX3QgcmVx
dWVzdGVkQ2FwYWNpdHkpCisgICAgeworICAgICAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpKQorICAgICAgICAgICAgZXhwYW5kQ2FwYWNp
dHkocmVxdWVzdGVkQ2FwYWNpdHkpOworICAgIH0KKwogcHJpdmF0ZToKLSAgICB2b2lkIGV4cGFu
ZENhcGFjaXR5KCk7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBVbnNwZWNpZmllZENhcGFjaXR5
ID0gMDsKKyAgICB2b2lkIGV4cGFuZENhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSA9
IFVuc3BlY2lmaWVkQ2FwYWNpdHkpOwogCiAgICAgdm9pZCBhZGRNYXJrU2V0KEpTVmFsdWUpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIxMjYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChsamhhcmJA
Z21haWwuY29tKQogICoKQEAgLTUzOSwxOCArNTM5LDE5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShl
eGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAg
ICAgICAgICBjYWNoZWRDYWxsLmNsZWFyQXJndW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgZm9y
ICg7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAyXTsKICAgICAgICAgICAgICAg
ICAgICAgaW50IG1hdGNoTGVuID0gb3ZlY3RvcltpICogMiArIDFdIC0gbWF0Y2hTdGFydDsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDApCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2Fj
aGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFy
dCwgbWF0Y2hMZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5k
QXJndW1lbnQoanNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudChpKyssIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIGNhY2hlZENh
bGwuYXBwZW5kQXJndW1lbnQoanNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAg
ICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChzdHJpbmcpOwogCiAgICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFs
dWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKQEAgLTU3OCwxOCArNTc5LDE5IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICAg
ICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmNsZWFyQXJndW1lbnRzKCk7CiAg
ICAgICAgICAgICAgICAgZm9yICg7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOyAr
K2kpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAy
XTsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoTGVuID0gb3ZlY3RvcltpICogMiArIDFd
IC0gbWF0Y2hTdGFydDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1
bWVudChqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZygmdm0s
IHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNo
U3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzdHJpbmcpOworICAgICAg
ICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNOdW1iZXIocmVzdWx0LnN0YXJ0
KSk7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChzdHJpbmcpOwog
CiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIxMjYwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgw
LDcgKzE4MCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZShudWxscHRyKQogICAgICwgbV9hdG9taWNTdHJp
bmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxs
cHRyKQotICAgICwgZW1wdHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKKyAgICAsIGVt
cHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdv
cmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwg
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgq
dGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjEyNjA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtMzg1LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3lt
Ym9sUmVnaXN0cnk7CiAgICAgVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlIG1fdGVtcGxhdGVSZWdp
c3RyeUtleXRhYmxlOwogICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwotICAg
IGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3RzIGFyZSBzdXBw
b3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIgZWxlbWVudHMg
cHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1dCB0aGlzIGxp
c3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KKyAgICBjb25zdCBBcmdMaXN0KiBlbXB0eUxpc3Q7CiAg
ICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKICAgICBOdW1lcmljU3RyaW5ncyBudW1lcmlj
U3RyaW5nczsKICAgICBEYXRlSW5zdGFuY2VDYWNoZSBkYXRlSW5zdGFuY2VDYWNoZTsKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTI2MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAyLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBDYWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0
cyBhcmd1bWVudHMgYWxpdmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjg1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgV1RG
X0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gdGhhdCB3aWxsIGNhdXNlIGEgY29tcGlsYXRpb24gZmFp
bHVyZSBpZgorICAgICAgICBhIGNsYXNzIGRlY2xhcmVkIHdpdGggaXQgaXMgbWFsbG9jZWQuCisK
KyAgICAgICAgV2hpbGUgdGhpcyBkb2Vzbid0IHByZXZlbnQgdGhhdCBjbGFzcyBkZWNsYXJlZCBX
VEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBmcm9tCisgICAgICAgIGJlaW5nIGVtYmVkZGVkIGlu
IGFub3RoZXIgY2xhc3MgdGhhdCBpcyBoZWFwIGFsbG9jYXRlZCwgaXQgZG9lcyBhdCBtaW5pbXVt
CisgICAgICAgIGRvY3VtZW50IHRoZSBpbnRlbnQgYW5kIGdpdmVzIHRoZSB1c2VycyBvZiB0aGlz
IGNsYXNzIGEgY2hhbmNlIHRvIGRvIHRoZQorICAgICAgICByaWdodCB0aGluZy4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9Gb3JiaWRI
ZWFwQWxsb2NhdGlvbi5oOiBBZGRlZC4KKwogMjAxNy0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlY3Vyc2l2ZSBNZXNzYWdlUG9ydC5wb3N0TWVzc2Fn
ZSgpIGNhbGxzIGNhdXNlcyB0YWIgdG8gYmVjb21lIHVucmVzcG9uc2l2ZQpJbmRleDogU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI2MDcpCisrKyBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjgsNiArMzY4LDcgQEAKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJ
CUVCOTVFMUYwMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCAqLzsgfTsKIAkJRkU4MjI1MzExQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2Vk
UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgy
MjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLzsgfTsKKwkJRkU4NkE4NzUxRTU5
NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyog
Rm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLzsgfTsKIAkJRkU4OTI1QjAxRDAwREFFQzAwNDY5MDdF
IC8qIEluZGVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLzsgfTsKIAkJRkVE
QUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8q
IFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsgfTsKQEAgLTc1MSw2
ICs3NTIsNyBAQAogCQlFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNzJCQkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8q
IE5ha2VkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAv
KiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk2Miw2ICs5NjQsNyBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMw
MDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMw
MDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3MDBB
N0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCisJCQkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8q
IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZG
IC8qIEZvcndhcmQuaCAqLywKIAkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rp
b24uaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRj
aGVyLmNwcCAqLywKQEAgLTE0MTgsNiArMTQyMSw3IEBACiAJCQkJODNGMkJBREYxQ0Y5NTI0RTAw
M0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5QzE3MzE4NkNF
MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTg2
QTg3NTFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NEFGMUJEODI1MzEwMDgwRkY3NCAvKiBHcmFwaE5vZGVXb3JrbGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkMwNTM4NTQxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlh
bkRhdGVUaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEMzE1MUE4MjVCMDA0MTIzRkYg
LyogSGFzaENvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dURi93dGYv
Rm9yYmlkSGVhcEFsbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3Ji
aWRIZWFwQWxsb2NhdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcmJp
ZEhlYXBBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
ZGVmaW5lIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OIFwKK3ByaXZhdGU6IFwKKyAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqKSA9IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QpID0gZGVsZXRlOyBcCisgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCop
ID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVs
ZXRlOyBcCisgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKikgPSBkZWxldGU7IFwKKyAg
ICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
PSBkZWxldGU7IFwKKyAgICB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc0ZvcmJpZEhlYXBBbGxvY2F0aW9uTWFjcm8K
</data>
<flag name="review"
          id="323825"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302098</attachid>
            <date>2017-02-19 16:18:09 -0800</date>
            <delta_ts>2017-02-20 15:01:39 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>22603</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE3LTAyLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFdlIGZpeCB0aGlzIGJ5IGhhdmluZyBDYWNoZWRDYWxs
IHVzZSBhIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHRvIHN0b3JlIGl0cworICAgICAgICBhcmd1bWVu
dHMgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKworICAgICAgICBBbHNvIGRlY2xhcmVkIENhY2hlZENh
bGwsIE1hcmtlZEFyZ3VtZW50QnVmZmVyLCBhbmQgUHJvdG9DYWxsRnJhbWUgYXMKKyAgICAgICAg
V1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gYmVjYXVzZSB0aGV5IHJlbHkgb24gYmVpbmcgc3Rh
Y2sgYWxsb2NhdGVkIGZvcgorICAgICAgICBjb3JyZWN0bmVzcy4KKworICAgICAgICAqIGludGVy
cHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpDYWNo
ZWRDYWxsOjpjbGVhckFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmFwcGVu
ZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6c2V0QXJndW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpF
eGVjU3RhdGU6OmVtcHR5TGlzdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZl
cjo6ZW5zdXJlQ2FwYWNpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMTctMDItMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTI0NjYuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlz
aW9uIDIxMjYxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRD
YWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5jbHVk
ZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRl
ICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ2FjaGVkQ2FsbCB7Ci0gICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhY2hlZENhbGwpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkQ2FsbCk7CisgICAgICAgIFdURl9GT1JCSURf
SEVBUF9BTExPQ0FUSU9OOwogICAgIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkQ2FsbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50KQog
ICAgICAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQpAQCAtNDksOCArNTEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb25Ob25J
bmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50
KTsKLSAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9y
UmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9D
YWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCks
IG1fYXJndW1lbnRzLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMuZW5zdXJl
Q2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9p
bnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCAr
IDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cyk7CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
KTsKICAgICAgICAgICAgIG1fdmFsaWQgPSAhc2NvcGUuZXhjZXB0aW9uKCk7CkBAIC01OSwxMCAr
NjEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgY2FsbCgpCiAgICAgICAg
IHsgCiAgICAgICAgICAgICBBU1NFUlQobV92YWxpZCk7CisgICAgICAgICAgICBBU1NFUlQobV9h
cmd1bWVudHMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9wcm90b0NhbGxGcmFtZS5h
cmd1bWVudENvdW50KCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2ludGVycHJldGVyLT5leGVj
dXRlKG1fY2xvc3VyZSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRUaGlzKEpTVmFsdWUg
dikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldFRoaXNWYWx1ZSh2KTsgfQotICAgICAgICB2b2lkIHNl
dEFyZ3VtZW50KGludCBuLCBKU1ZhbHVlIHYpIHsgbV9wcm90b0NhbGxGcmFtZS5zZXRBcmd1bWVu
dChuLCB2KTsgfQorCisgICAgICAgIHZvaWQgY2xlYXJBcmd1bWVudHMoKSB7IG1fYXJndW1lbnRz
LmNsZWFyKCk7IH0KKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU1ZhbHVlIHYpIHsgbV9h
cmd1bWVudHMuYXBwZW5kKHYpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIG1fdmFs
aWQ7CkBAIC03MCw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWTSYgbV92bTsK
ICAgICAgICAgVk1FbnRyeVNjb3BlIG1fZW50cnlTY29wZTsKICAgICAgICAgUHJvdG9DYWxsRnJh
bWUgbV9wcm90b0NhbGxGcmFtZTsKLSAgICAgICAgVmVjdG9yPEpTVmFsdWU+IG1fYXJndW1lbnRz
OworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKICAgICAgICAgQ2Fs
bEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDIxMjYxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwg
MjAxMSwgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE5LDcgKzExOSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAog
ICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKSBjb25zdCB7IHJl
dHVybiB2bSgpLmF0b21pY1N0cmluZ1RhYmxlKCk7IH0KICAgICAgICAgY29uc3QgQ29tbW9uSWRl
bnRpZmllcnMmIHByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqdm0oKS5wcm9wZXJ0eU5h
bWVzOyB9Ci0gICAgICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBlbXB0eUxpc3QoKSBj
b25zdCB7IHJldHVybiAqdm0oKS5lbXB0eUxpc3Q7IH0KKyAgICAgICAgY29uc3QgQXJnTGlzdCYg
ZW1wdHlMaXN0KCkgY29uc3QgeyByZXR1cm4gKnZtKCkuZW1wdHlMaXN0OyB9CiAgICAgICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlcigpIHsgcmV0dXJuIHZtKCkuaW50ZXJwcmV0ZXI7IH0KICAg
ICAgICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuICZ2bSgpLmhlYXA7IH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAyMTI2MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDEwLCAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEwMDUsNyArMTAwNSw3IEBAIEpTT2Jq
ZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihhc09iamVjdChyZXN1bHQpKTsKIH0KIAotQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJh
bWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQorQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnBy
ZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxs
RnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9
ICpzY29wZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6
OnByZXBhcmVGb3IKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKIAotICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rp
b24sIGpzVW5kZWZpbmVkKCksIGFyZ3NDb3VudCwgYXJncyk7CisgICAgcHJvdG9DYWxsRnJhbWUt
PmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBh
cmdzLmRhdGEoKSk7CiAgICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CiAgICAg
Q2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1
bmN0aW9uLCBmdW5jdGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9OwogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjEyNjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MTU0LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGVu
dW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwogCi0gICAg
ICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRh
YmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwgSlNWYWx1ZSopOworICAgICAgICBDYWxs
RnJhbWVDbG9zdXJlIHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSosIENh
bGxGcmFtZSosIFByb3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgSlNTY29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAogICAgICAgICBKU1Zh
bHVlIGV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjEy
NjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIlJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxsRnJh
bWUgeworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOworcHVibGljOgogICAgIFJlZ2lz
dGVyIGNvZGVCbG9ja1ZhbHVlOwogICAgIFJlZ2lzdGVyIGNhbGxlZVZhbHVlOwogICAgIFJlZ2lz
dGVyIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAJKHJldmlzaW9uIDIxMjYxNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC02Myw5ICs2MywyMSBAQCB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVy
OjptYXJrTGlzdHMoU2xvCiAgICAgfQogfQogCit2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpz
bG93RW5zdXJlQ2FwYWNpdHkoc2l6ZV90IHJlcXVlc3RlZENhcGFjaXR5KQoreworICAgIGludCBu
ZXdDYXBhY2l0eSA9IENoZWNrZWQ8aW50PihyZXF1ZXN0ZWRDYXBhY2l0eSkudW5zYWZlR2V0KCk7
CisgICAgZXhwYW5kQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOworfQorCiB2b2lkIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSgpCiB7CiAgICAgaW50IG5ld0NhcGFjaXR5ID0gKENo
ZWNrZWQ8aW50PihtX2NhcGFjaXR5KSAqIDIpLnVuc2FmZUdldCgpOworICAgIGV4cGFuZENhcGFj
aXR5KG5ld0NhcGFjaXR5KTsKK30KKwordm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5k
Q2FwYWNpdHkoaW50IG5ld0NhcGFjaXR5KQoreworICAgIEFTU0VSVChtX2NhcGFjaXR5IDwgbmV3
Q2FwYWNpdHkpOwogICAgIHNpemVfdCBzaXplID0gKENoZWNrZWQ8c2l6ZV90PihuZXdDYXBhY2l0
eSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKS51bnNhZmVHZXQoKTsKICAgICBFbmNvZGVkSlNW
YWx1ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihmYXN0TWFsbG9j
KHNpemUpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsraSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjEyNjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywg
MjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDEyICsyMiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
TWFya2VkQXJndW1lbnRCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtlZEFy
Z3VtZW50QnVmZmVyKTsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICBmcmll
bmQgY2xhc3MgVk07CiAgICAgZnJpZW5kIGNsYXNzIEFyZ0xpc3Q7CiAKQEAgLTk0LDggKzk2LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKFNsb3RWaXNp
dG9yJiwgTGlzdFNldCYpOwogCisgICAgdm9pZCBlbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVz
dGVkQ2FwYWNpdHkpCisgICAgeworICAgICAgICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgPiBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpKQorICAgICAgICAgICAgc2xvd0Vuc3VyZUNhcGFj
aXR5KHJlcXVlc3RlZENhcGFjaXR5KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBleHBh
bmRDYXBhY2l0eSgpOworICAgIHZvaWQgZXhwYW5kQ2FwYWNpdHkoaW50IG5ld0NhcGFjaXR5KTsK
KyAgICB2b2lkIHNsb3dFbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpOwog
CiAgICAgdm9pZCBhZGRNYXJrU2V0KEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIxMjYx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTUzOSwx
OCArNTM5LDE5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAg
ICAgICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmNsZWFy
QXJndW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCByZWdFeHAtPm51bVN1YnBh
dHRlcm5zKCkgKyAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQg
PSBvdmVjdG9yW2kgKiAyXTsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoTGVuID0gb3Zl
Y3RvcltpICogMiArIDFdIC0gbWF0Y2hTdGFydDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2hTdGFydCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVk
Q2FsbC5hcHBlbmRBcmd1bWVudChqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBq
c1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNTdWJzdHJpbmcoJnZt
LCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKHJlc3Vs
dC5zdGFydCkpOwotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBz
dHJpbmcpOworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNOdW1i
ZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1
bWVudChzdHJpbmcpOwogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxs
LmNhbGwoKTsKQEAgLTU3OCwxOCArNTc5LDE5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBz
Y29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAg
ICBjYWNoZWRDYWxsLmNsZWFyQXJndW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IGkg
PCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAg
ICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAyXTsKICAgICAgICAgICAgICAgICAgICAg
aW50IG1hdGNoTGVuID0gb3ZlY3RvcltpICogMiArIDFdIC0gbWF0Y2hTdGFydDsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc1VuZGVmaW5lZCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0
Y2hMZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1l
bnQoanNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChp
KyssIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoaSsrLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBw
ZW5kQXJndW1lbnQoanNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY2Fj
aGVkQ2FsbC5hcHBlbmRBcmd1bWVudChzdHJpbmcpOwogCiAgICAgICAgICAgICAgICAgY2FjaGVk
Q2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNS
ZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHJldmlzaW9uIDIxMjYxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZShudWxscHRyKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVs
dCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmlu
Z1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQotICAgICwgZW1wdHlMaXN0KG5l
dyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKKyAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAg
ICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1h
a2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjEyNjE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHB1Ymxp
YzoKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7CiAgICAgVGVtcGxh
dGVSZWdpc3RyeUtleVRhYmxlIG1fdGVtcGxhdGVSZWdpc3RyeUtleXRhYmxlOwogICAgIENvbW1v
bklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwotICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3RzIGFyZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24g
dGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIgZWxlbWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBp
cyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1dCB0aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4K
KyAgICBjb25zdCBBcmdMaXN0KiBlbXB0eUxpc3Q7CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3Ry
aW5nczsKICAgICBOdW1lcmljU3RyaW5ncyBudW1lcmljU3RyaW5nczsKICAgICBEYXRlSW5zdGFu
Y2VDYWNoZSBkYXRlSW5zdGFuY2VDYWNoZTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTI2MTYpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3
LTAyLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWRD
YWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0cyBhcmd1bWVudHMgYWxpdmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1NjcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpLgorCisgICAgICAgIEFkZGVkIGEgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gdGhh
dCB3aWxsIGNhdXNlIGEgY29tcGlsYXRpb24gZmFpbHVyZSBpZgorICAgICAgICBhIGNsYXNzIGRl
Y2xhcmVkIHdpdGggaXQgaXMgbWFsbG9jZWQuCisKKyAgICAgICAgV2hpbGUgdGhpcyBkb2Vzbid0
IHByZXZlbnQgdGhhdCBjbGFzcyBkZWNsYXJlZCBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBm
cm9tCisgICAgICAgIGJlaW5nIGVtYmVkZGVkIGluIGFub3RoZXIgY2xhc3MgdGhhdCBpcyBoZWFw
IGFsbG9jYXRlZCwgaXQgZG9lcyBhdCBtaW5pbXVtCisgICAgICAgIGRvY3VtZW50IHRoZSBpbnRl
bnQgYW5kIGdpdmVzIHRoZSB1c2VycyBvZiB0aGlzIGNsYXNzIGEgY2hhbmNlIHRvIGRvIHRoZQor
ICAgICAgICByaWdodCB0aGluZy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oOiBBZGRlZC4KKwog
MjAxNy0wMi0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMjQ2Ni4KSW5kZXg6IFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEyNjE2KQorKysgU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4
LDYgKzM2OCw3IEBACiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEw
QUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1
RTFGMDE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0
ZU9yZGVyLmggKi87IH07CiAJCUZFODIyNTMxMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MjI1MzAx
QjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi87IH07CisJCUZFODZBODc1MUU1OTQ0MDIw
MDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJp
ZEhlYXBBbGxvY2F0aW9uLmggKi87IH07CiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAvKiBJ
bmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFDRDNE
MTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3Rh
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFD
RDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC03NTEsNiArNzUy
LDcgQEAKIAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtl
ZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9y
YmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9y
YmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1
QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFD
RDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NjIsNiArOTY0LDcgQEAKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNG
IC8qIEZsaXBCeXRlcy5oICovLAorCQkJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3Ji
aWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBG
b3J3YXJkLmggKi8sCiAJCQkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmgg
Ki8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5j
cHAgKi8sCkBAIC0xNDE4LDYgKzE0MjEsNyBAQAogCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlD
MyAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDhCOUMxNzMxODZDRTAwMTQx
REE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQ0Ex
NTFBODI1QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4NkE4NzUx
RTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRl
VGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhh
c2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZvcmJp
ZEhlYXBBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRm9yYmlkSGVh
cEFsbG9jYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Gb3JiaWRIZWFw
QWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmlu
ZSBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBcCitwcml2YXRlOiBcCisgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90KSA9IGRlbGV0ZTsgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSA9IGRl
bGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsg
XAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0gZGVs
ZXRlOyBcCisgICAgdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRl
clRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302176</attachid>
            <date>2017-02-20 15:01:39 -0800</date>
            <delta_ts>2017-02-20 15:07:37 -0800</delta_ts>
            <desc>patch for re-landing.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>24128</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDE3LTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gQ2FjaGVkQ2FsbCBzaG91bGQgbGV0IEdDIGtub3cgdG8ga2VlcCBpdHMgYXJn
dW1lbnRzIGFsaXZlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4NTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDQ3NTc2Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXZSBmaXggdGhpcyBieSBoYXZp
bmcgQ2FjaGVkQ2FsbCB1c2UgYSBNYXJrZWRBcmd1bWVudEJ1ZmZlciB0byBzdG9yZSBpdHMKKyAg
ICAgICAgYXJndW1lbnRzIGluc3RlYWQgb2YgYSBWZWN0b3IuCisKKyAgICAgICAgQWxzbyBkZWNs
YXJlZCBDYWNoZWRDYWxsLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciwgYW5kIFByb3RvQ2FsbEZyYW1l
IGFzCisgICAgICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OIGJlY2F1c2UgdGhleSByZWx5
IG9uIGJlaW5nIHN0YWNrIGFsbG9jYXRlZCBmb3IKKyAgICAgICAgY29ycmVjdG5lc3MuCisKKyAg
ICAgICAgVXBkYXRlOiB0aGUgb3JpZ2luYWwgcGF0Y2ggaGFzIGEgYnVnIGluIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSgpCisgICAgICAgIHdoZXJlIGl0IHdhcyBjb3B5aW5n
IHZhbHVlcyBpbiBtX2J1ZmZlciBiZXlvbmQgbV9zaXplICh1cCB0byBtX2NhcGFjaXR5KS4gIEFz
IGEKKyAgICAgICAgcmVzdWx0LCBkZXBlbmRpbmcgb24gdGhlIHByZS1leGlzdGluZyB2YWx1ZXMg
aW4gbV9pbmxpbmVCdWZmZXIsIHRoaXMgbWF5IHJlc3VsdAorICAgICAgICBpbiBhIGNvbXB1dGVk
IEhlYXAgcG9pbnRlciB0aGF0IGlzIHdyb25nLCBhbmQgc3Vic2VxdWVudGx5LCBtYW5pZmVzdCBh
cyBhIGNyYXNoLgorICAgICAgICBUaGlzIGlzIGxpa2VseSB0byBiZSB0aGUgY2F1c2Ugb2YgdGhl
IFBMVCByZWdyZXNzaW9uLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBhIG5ldyB0ZXN0IGZvciB0
aGlzIGZpeCBiZWNhdXNlIHRoZSBpc3N1ZSByZWxpZXMgb24gc3VmZmljaWVudGx5IGJhZAorICAg
ICAgICB2YWx1ZXMgcmFuZG9tbHkgc2hvd2luZyB1cCBpbiBtX2lubGluZUJ1ZmZlciB3aGVuIHdl
IGRvIGFuIGVuc3VyZUNhcGFjaXR5KCkgd2hpY2gKKyAgICAgICAgY2FsbHMgZXhwYW5kQ2FwYWNp
dHkoKS4KKworICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OmNh
bGwpOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpjbGVhckFyZ3VtZW50cyk6CisgICAgICAg
IChKU0M6OkNhY2hlZENhbGw6OmFwcGVuZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q2FsbDo6c2V0QXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmVtcHR5TGlzdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0FyZ0xpc3QuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6
c2xvd0Vuc3VyZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6
OmV4cGFuZENhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6OnNs
b3dBcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXI6OmVuc3VyZUNhcGFjaXR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDE3LTAyLTIwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjEyNjE4LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5o
CShyZXZpc2lvbiAyMTI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FjaGVkQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEwICszMywxMiBAQAog
I2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAj
aW5jbHVkZSAiVk1JbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9u
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENhY2hlZENhbGwgewotICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRDYWxsKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZENhbGwpOworICAgICAgICBXVEZf
Rk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICBwdWJsaWM6CiAgICAgICAgIENhY2hlZENhbGwo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRD
b3VudCkKICAgICAgICAgICAgIDogbV92YWxpZChmYWxzZSkKQEAgLTQ5LDggKzUxLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0
aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1l
bnRDb3VudCk7Ci0gICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZt
X3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOworICAgICAgICAgICAgICAgIG1fYXJndW1lbnRz
LmVuc3VyZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgIG1fY2xvc3Vy
ZSA9IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1
dGFibGUoKSwgY2FsbEZyYW1lLCAmbV9wcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50
Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUoKSwgbV9hcmd1bWVudHMpOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
LCBzY29wZSk7CiAgICAgICAgICAgICBtX3ZhbGlkID0gIXNjb3BlLmV4Y2VwdGlvbigpOwpAQCAt
NTksMTAgKzYxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGNhbGwoKQog
ICAgICAgICB7IAogICAgICAgICAgICAgQVNTRVJUKG1fdmFsaWQpOworICAgICAgICAgICAgQVNT
RVJUKG1fYXJndW1lbnRzLnNpemUoKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcHJvdG9DYWxs
RnJhbWUuYXJndW1lbnRDb3VudCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRlcnByZXRl
ci0+ZXhlY3V0ZShtX2Nsb3N1cmUpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0VGhpcyhK
U1ZhbHVlIHYpIHsgbV9wcm90b0NhbGxGcmFtZS5zZXRUaGlzVmFsdWUodik7IH0KLSAgICAgICAg
dm9pZCBzZXRBcmd1bWVudChpbnQgbiwgSlNWYWx1ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUuc2V0
QXJndW1lbnQobiwgdik7IH0KKworICAgICAgICB2b2lkIGNsZWFyQXJndW1lbnRzKCkgeyBtX2Fy
Z3VtZW50cy5jbGVhcigpOyB9CisgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNWYWx1ZSB2
KSB7IG1fYXJndW1lbnRzLmFwcGVuZCh2KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCBtX3ZhbGlkOwpAQCAtNzAsNyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVk0m
IG1fdm07CiAgICAgICAgIFZNRW50cnlTY29wZSBtX2VudHJ5U2NvcGU7CiAgICAgICAgIFByb3Rv
Q2FsbEZyYW1lIG1fcHJvdG9DYWxsRnJhbWU7Ci0gICAgICAgIFZlY3RvcjxKU1ZhbHVlPiBtX2Fy
Z3VtZW50czsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1bWVudHM7CiAgICAg
ICAgIENhbGxGcmFtZUNsb3N1cmUgbV9jbG9zdXJlOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyMTI2
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3
LTIwMDgsIDIwMTEsIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgSlND
ICB7CiAKICAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkgY29u
c3QgeyByZXR1cm4gdm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpOyB9CiAgICAgICAgIGNvbnN0IENv
bW1vbklkZW50aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKnZtKCkucHJv
cGVydHlOYW1lczsgfQotICAgICAgICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgZW1wdHlM
aXN0KCkgY29uc3QgeyByZXR1cm4gKnZtKCkuZW1wdHlMaXN0OyB9CisgICAgICAgIGNvbnN0IEFy
Z0xpc3QmIGVtcHR5TGlzdCgpIGNvbnN0IHsgcmV0dXJuICp2bSgpLmVtcHR5TGlzdDsgfQogICAg
ICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIoKSB7IHJldHVybiB2bSgpLmludGVycHJldGVy
OyB9CiAgICAgICAgIEhlYXAqIGhlYXAoKSB7IHJldHVybiAmdm0oKS5oZWFwOyB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMjEyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endh
cmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDA1LDcgKzEwMDUsNyBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oYXNPYmplY3QocmVzdWx0KSk7CiB9CiAKLUNhbGxGcmFtZUNsb3N1cmUgSW50
ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3Rv
Q2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSogYXJncykKK0NhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHBy
b3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBW
TSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yCiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CiAKLSAgICBwcm90b0NhbGxGcmFtZS0+aW5pdChuZXdDb2RlQmxvY2ss
IGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MpOworICAgIHByb3RvQ2Fs
bEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIGpzVW5kZWZpbmVkKCksIGFyZ3ND
b3VudCwgYXJncy5kYXRhKCkpOwogICAgIC8vIFJldHVybiB0aGUgc3VjY2Vzc2Z1bCBjbG9zdXJl
OgogICAgIENhbGxGcmFtZUNsb3N1cmUgcmVzdWx0ID0geyBjYWxsRnJhbWUsIHByb3RvQ2FsbEZy
YW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlLCAmdm0sIHNjb3BlLCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgfTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDIxMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTE1NCw3ICsxNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRSZXR1cm4gfTsK
IAotICAgICAgICBDYWxsRnJhbWVDbG9zdXJlIHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9u
RXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFByb3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNTY29wZSosIEpTVmFsdWUqKTsKKyAgICAg
ICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKICAgICAg
ICAgSlNWYWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgJKHJldmlz
aW9uIDIxMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxMyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlv
bi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIFByb3Rv
Q2FsbEZyYW1lIHsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKK3B1YmxpYzoKICAg
ICBSZWdpc3RlciBjb2RlQmxvY2tWYWx1ZTsKICAgICBSZWdpc3RlciBjYWxsZWVWYWx1ZTsKICAg
ICBSZWdpc3RlciBhcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCShyZXZpc2lvbiAyMTI2NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsMTIgKzYzLDI0IEBAIHZvaWQgTWFya2VkQXJndW1l
bnRCdWZmZXI6Om1hcmtMaXN0cyhTbG8KICAgICB9CiB9CiAKK3ZvaWQgTWFya2VkQXJndW1lbnRC
dWZmZXI6OnNsb3dFbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpCit7Cisg
ICAgaW50IG5ld0NhcGFjaXR5ID0gQ2hlY2tlZDxpbnQ+KHJlcXVlc3RlZENhcGFjaXR5KS51bnNh
ZmVHZXQoKTsKKyAgICBleHBhbmRDYXBhY2l0eShuZXdDYXBhY2l0eSk7Cit9CisKIHZvaWQgTWFy
a2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KCkKIHsKICAgICBpbnQgbmV3Q2FwYWNp
dHkgPSAoQ2hlY2tlZDxpbnQ+KG1fY2FwYWNpdHkpICogMikudW5zYWZlR2V0KCk7CisgICAgZXhw
YW5kQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOworfQorCit2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVy
OjpleHBhbmRDYXBhY2l0eShpbnQgbmV3Q2FwYWNpdHkpCit7CisgICAgQVNTRVJUKG1fY2FwYWNp
dHkgPCBuZXdDYXBhY2l0eSk7CiAgICAgc2l6ZV90IHNpemUgPSAoQ2hlY2tlZDxzaXplX3Q+KG5l
d0NhcGFjaXR5KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLnVuc2FmZUdldCgpOwogICAgIEVu
Y29kZWRKU1ZhbHVlKiBuZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGZh
c3RNYWxsb2Moc2l6ZSkpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9jYXBhY2l0eTsgKytp
KSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkgewogICAgICAgICBuZXdC
dWZmZXJbaV0gPSBtX2J1ZmZlcltpXTsKICAgICAgICAgYWRkTWFya1NldChKU1ZhbHVlOjpkZWNv
ZGUobV9idWZmZXJbaV0pKTsKICAgICB9CkBAIC04Miw3ICs5NCw4IEBAIHZvaWQgTWFya2VkQXJn
dW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXQKIAogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6
c2xvd0FwcGVuZChKU1ZhbHVlIHYpCiB7Ci0gICAgaWYgKG1fc2l6ZSA+PSBtX2NhcGFjaXR5KQor
ICAgIEFTU0VSVChtX3NpemUgPD0gbV9jYXBhY2l0eSk7CisgICAgaWYgKG1fc2l6ZSA9PSBtX2Nh
cGFjaXR5KQogICAgICAgICBleHBhbmRDYXBhY2l0eSgpOwogCiAgICAgc2xvdEZvcihtX3NpemUp
ID0gSlNWYWx1ZTo6ZW5jb2RlKHYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaAkocmV2aXNpb24gMjEyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDEyICsy
MiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1hcmtlZEFyZ3VtZW50QnVmZmVyKTsKKyAgICBXVEZfRk9SQklE
X0hFQVBfQUxMT0NBVElPTjsKICAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgZnJpZW5kIGNsYXNz
IEFyZ0xpc3Q7CiAKQEAgLTczLDcgKzc1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQo
SlNWYWx1ZSB2KQogICAgIHsKLSAgICAgICAgaWYgKG1fc2l6ZSA+PSBtX2NhcGFjaXR5IHx8IG1h
bGxvY0Jhc2UoKSkKKyAgICAgICAgQVNTRVJUKG1fc2l6ZSA8PSBtX2NhcGFjaXR5KTsKKyAgICAg
ICAgaWYgKG1fc2l6ZSA9PSBtX2NhcGFjaXR5IHx8IG1hbGxvY0Jhc2UoKSkKICAgICAgICAgICAg
IHJldHVybiBzbG93QXBwZW5kKHYpOwogCiAgICAgICAgIHNsb3RGb3IobV9zaXplKSA9IEpTVmFs
dWU6OmVuY29kZSh2KTsKQEAgLTk0LDggKzk3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
c3RhdGljIHZvaWQgbWFya0xpc3RzKFNsb3RWaXNpdG9yJiwgTGlzdFNldCYpOwogCisgICAgdm9p
ZCBlbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpCisgICAgeworICAgICAg
ICBpZiAocmVxdWVzdGVkQ2FwYWNpdHkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkp
KQorICAgICAgICAgICAgc2xvd0Vuc3VyZUNhcGFjaXR5KHJlcXVlc3RlZENhcGFjaXR5KTsKKyAg
ICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBleHBhbmRDYXBhY2l0eSgpOworICAgIHZvaWQgZXhw
YW5kQ2FwYWNpdHkoaW50IG5ld0NhcGFjaXR5KTsKKyAgICB2b2lkIHNsb3dFbnN1cmVDYXBhY2l0
eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpOwogCiAgICAgdm9pZCBhZGRNYXJrU2V0KEpTVmFs
dWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIxMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChs
amhhcmJAZ21haWwuY29tKQogICoKQEAgLTUzOSwxOCArNTM5LDE5IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAgICAgICAgICAgT1VUX09GX01F
TU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAg
ICAgICAgICAgICAgICBjYWNoZWRDYWxsLmNsZWFyQXJndW1lbnRzKCk7CiAgICAgICAgICAgICAg
ICAgZm9yICg7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOyArK2kpIHsKICAgICAg
ICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAyXTsKICAgICAgICAg
ICAgICAgICAgICAgaW50IG1hdGNoTGVuID0gb3ZlY3RvcltpICogMiArIDFdIC0gbWF0Y2hTdGFy
dDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDApCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0
Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZENhbGwu
YXBwZW5kQXJndW1lbnQoanNTdWJzdHJpbmcoJnZtLCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNo
TGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAgICAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIGNh
Y2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgICAg
ICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChzdHJpbmcpOwogCiAgICAgICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAg
IEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKQEAgLTU3OCwxOCArNTc5LDE5
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGwKICAgICAgICAgICAg
ICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmNsZWFyQXJndW1lbnRz
KCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkg
KyAxOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9y
W2kgKiAyXTsKICAgICAgICAgICAgICAgICAgICAgaW50IG1hdGNoTGVuID0gb3ZlY3RvcltpICog
MiArIDFdIC0gbWF0Y2hTdGFydDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFy
dCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGks
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBl
bmRBcmd1bWVudChqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmlu
Zygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNTdWJzdHJpbmcoJnZtLCBzb3VyY2Us
IG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkp
OwotICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzdHJpbmcpOwor
ICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuYXBwZW5kQXJndW1lbnQoanNOdW1iZXIocmVzdWx0
LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChzdHJp
bmcpOwogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIxMjY3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgwLDcgKzE4MCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZShudWxscHRyKQogICAgICwgbV9hdG9t
aWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1l
cyhudWxscHRyKQotICAgICwgZW1wdHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKKyAg
ICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRl
Y29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQog
ICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdD
YWNoZSgqdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MjEyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5
IG1fc3ltYm9sUmVnaXN0cnk7CiAgICAgVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlIG1fdGVtcGxh
dGVSZWdpc3RyeUtleXRhYmxlOwogICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVz
OwotICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3RzIGFy
ZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIgZWxl
bWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1dCB0
aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KKyAgICBjb25zdCBBcmdMaXN0KiBlbXB0eUxp
c3Q7CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKICAgICBOdW1lcmljU3RyaW5ncyBu
dW1lcmljU3RyaW5nczsKICAgICBEYXRlSW5zdGFuY2VDYWNoZSBkYXRlSW5zdGFuY2VDYWNoZTsK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTI2NzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbUmUtbGFuZGluZ10gQ2FjaGVkQ2FsbCBzaG91bGQgbGV0
IEdDIGtub3cgdG8ga2VlcCBpdHMgYXJndW1lbnRzIGFsaXZlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NTY3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDQ3NTc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAg
ICAgICBBZGRlZCBhIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OIHRoYXQgd2lsbCBjYXVzZSBh
IGNvbXBpbGF0aW9uIGZhaWx1cmUgaWYKKyAgICAgICAgYSBjbGFzcyBkZWNsYXJlZCB3aXRoIGl0
IGlzIG1hbGxvY2VkLgorCisgICAgICAgIFdoaWxlIHRoaXMgZG9lc24ndCBwcmV2ZW50IHRoYXQg
Y2xhc3MgZGVjbGFyZWQgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04gZnJvbQorICAgICAgICBi
ZWluZyBlbWJlZGRlZCBpbiBhbm90aGVyIGNsYXNzIHRoYXQgaXMgaGVhcCBhbGxvY2F0ZWQsIGl0
IGRvZXMgYXQgbWluaW11bQorICAgICAgICBkb2N1bWVudCB0aGUgaW50ZW50IGFuZCBnaXZlcyB0
aGUgdXNlcnMgb2YgdGhpcyBjbGFzcyBhIGNoYW5jZSB0byBkbyB0aGUKKyAgICAgICAgcmlnaHQg
dGhpbmcuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiB3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaDogQWRkZWQuCisKIDIwMTctMDItMjAgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyMTI2MTguCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMjY3NykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgsNyBAQAog
CQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2MjUzQzAw
NTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI5NUUxRjAxNjFBNzI0MTAw
ODlBMkY1IC8qIEJ5dGVPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovOyB9
OwogCQlGRTgyMjUzMTFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODIyNTMwMUIyQTFFNUIwMEJBNjhG
RCAvKiBOYWtlZFB0ci5oICovOyB9OworCQlGRTg2QTg3NTFFNTk0NDAyMDAxMTFCQkYgLyogRm9y
YmlkSGVhcEFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oICovOyB9OwogCQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODkyNUFGMUQwMERB
RUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87
IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OwpAQCAtNzUxLDYgKzc1Miw3IEBACiAJCUVCOTVF
MUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZU9yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY3
MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2
OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRl
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTYyLDYgKzk2NCw3IEBACiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5oICovLAogCQkJCTBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMu
aCAqLywKKwkJCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRp
b24uaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLAog
CQkJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5oICovLAogCQkJCTFBMUQ4
QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLApAQCAtMTQx
OCw2ICsxNDIxLDcgQEAKIAkJCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUQ4QjlDMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlv
bkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0NBMTUxQTgyNUIwMDQxMjNG
RiAvKiBHZXRQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODZBODc1MUU1OTQ0MDIwMDExMUJC
RiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg0QUYx
QkQ4MjUzMTAwODBGRjc0IC8qIEdyYXBoTm9kZVdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQzA1Mzg1NDE1QkM4MTkwMDBGMjFCOTYgLyogR3JlZ29yaWFuRGF0ZVRpbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3M0QzMTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoQ291bnRlZFNldC5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNkZWZpbmUgV1RGX0ZPUkJJRF9I
RUFQX0FMTE9DQVRJT04gXAorcHJpdmF0ZTogXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIHZvaWQqKSA9IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgPSBkZWxl
dGU7IFwKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKikgPSBkZWxldGU7IFwKKyAgICB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKKyAgICB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqKSA9IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSA9IGRlbGV0ZTsgXAorICAgIHR5
cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVh
cEFsbG9jYXRpb25NYWNybwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302177</attachid>
            <date>2017-02-20 15:07:37 -0800</date>
            <delta_ts>2017-02-20 17:52:50 -0800</delta_ts>
            <desc>patch for re-landing: with a slightly improved ChangeLog comment.</desc>
            <filename>bug-168567.patch</filename>
            <type>text/plain</type>
            <size>24166</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNjc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE3LTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gQ2FjaGVkQ2FsbCBzaG91bGQgbGV0IEdDIGtub3cgdG8ga2VlcCBpdHMgYXJn
dW1lbnRzIGFsaXZlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4NTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDQ3NTc2Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXZSBmaXggdGhpcyBieSBoYXZp
bmcgQ2FjaGVkQ2FsbCB1c2UgYSBNYXJrZWRBcmd1bWVudEJ1ZmZlciB0byBzdG9yZSBpdHMKKyAg
ICAgICAgYXJndW1lbnRzIGluc3RlYWQgb2YgYSBWZWN0b3IuCisKKyAgICAgICAgQWxzbyBkZWNs
YXJlZCBDYWNoZWRDYWxsLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciwgYW5kIFByb3RvQ2FsbEZyYW1l
IGFzCisgICAgICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OIGJlY2F1c2UgdGhleSByZWx5
IG9uIGJlaW5nIHN0YWNrIGFsbG9jYXRlZCBmb3IKKyAgICAgICAgY29ycmVjdG5lc3MuCisKKyAg
ICAgICAgVXBkYXRlOiB0aGUgb3JpZ2luYWwgcGF0Y2ggaGFzIGEgYnVnIGluIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSgpCisgICAgICAgIHdoZXJlIGl0IHdhcyBjb3B5aW5n
IGFuZCBjYWxsaW5nIGFkZE1hcmtTZXQoKSBvbiB2YWx1ZXMgaW4gbV9idWZmZXIgYmV5b25kIG1f
c2l6ZQorICAgICAgICAodXAgdG8gbV9jYXBhY2l0eSkuICBBcyBhIHJlc3VsdCwgZGVwZW5kaW5n
IG9uIHRoZSBwcmUtZXhpc3RpbmcgdmFsdWVzIGluCisgICAgICAgIG1faW5saW5lQnVmZmVyLCB0
aGlzIG1heSByZXN1bHQgaW4gYSBjb21wdXRlZCBIZWFwIHBvaW50ZXIgdGhhdCBpcyB3cm9uZywg
YW5kCisgICAgICAgIHN1YnNlcXVlbnRseSwgbWFuaWZlc3QgYXMgYSBjcmFzaC4gIFRoaXMgaXMg
bGlrZWx5IHRvIGJlIHRoZSBjYXVzZSBvZiB0aGUgUExUCisgICAgICAgIHJlZ3Jlc3Npb24uCisK
KyAgICAgICAgSSBkb24ndCBoYXZlIGEgbmV3IHRlc3QgZm9yIHRoaXMgZml4IGJlY2F1c2UgdGhl
IGlzc3VlIHJlbGllcyBvbiBzdWZmaWNpZW50bHkgYmFkCisgICAgICAgIHZhbHVlcyByYW5kb21s
eSBzaG93aW5nIHVwIGluIG1faW5saW5lQnVmZmVyIHdoZW4gd2UgZG8gYW4gZW5zdXJlQ2FwYWNp
dHkoKSB3aGljaAorICAgICAgICBjYWxscyBleHBhbmRDYXBhY2l0eSgpLgorCisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpDYWNo
ZWRDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Y2FsbCk6CisgICAgICAgIChKU0M6
OkNhY2hlZENhbGw6OmNsZWFyQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6
YXBwZW5kQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpzZXRBcmd1bWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6ZW1wdHlMaXN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2Fs
bCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpzbG93RW5zdXJlQ2FwYWNpdHkp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2xvd0FwcGVuZCk6CisgICAgICAg
ICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZW5zdXJlQ2Fw
YWNpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTctMDItMjAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTI2MTguCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDIxMjY3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5jbHVkZSAiUHJvdG9DYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRlICJWTUlubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ2FjaGVkQ2FsbCB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENhY2hlZENhbGwpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ2FjaGVkQ2FsbCk7CisgICAgICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FU
SU9OOwogICAgIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50KQogICAgICAgICAgICAg
OiBtX3ZhbGlkKGZhbHNlKQpAQCAtNDksOCArNTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAg
ICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKLSAgICAgICAg
ICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1
bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRz
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMuZW5zdXJlQ2FwYWNpdHkoYXJn
dW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+
cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUs
ICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9u
LT5zY29wZSgpLCBtX2FyZ3VtZW50cyk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAg
ICAgIG1fdmFsaWQgPSAhc2NvcGUuZXhjZXB0aW9uKCk7CkBAIC01OSwxMCArNjEsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgY2FsbCgpCiAgICAgICAgIHsgCiAgICAgICAg
ICAgICBBU1NFUlQobV92YWxpZCk7CisgICAgICAgICAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6
ZSgpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9wcm90b0NhbGxGcmFtZS5hcmd1bWVudENvdW50
KCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2ludGVycHJldGVyLT5leGVjdXRlKG1fY2xvc3Vy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRUaGlzKEpTVmFsdWUgdikgeyBtX3Byb3Rv
Q2FsbEZyYW1lLnNldFRoaXNWYWx1ZSh2KTsgfQotICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGlu
dCBuLCBKU1ZhbHVlIHYpIHsgbV9wcm90b0NhbGxGcmFtZS5zZXRBcmd1bWVudChuLCB2KTsgfQor
CisgICAgICAgIHZvaWQgY2xlYXJBcmd1bWVudHMoKSB7IG1fYXJndW1lbnRzLmNsZWFyKCk7IH0K
KyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU1ZhbHVlIHYpIHsgbV9hcmd1bWVudHMuYXBw
ZW5kKHYpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIG1fdmFsaWQ7CkBAIC03MCw3
ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWTSYgbV92bTsKICAgICAgICAgVk1F
bnRyeVNjb3BlIG1fZW50cnlTY29wZTsKICAgICAgICAgUHJvdG9DYWxsRnJhbWUgbV9wcm90b0Nh
bGxGcmFtZTsKLSAgICAgICAgVmVjdG9yPEpTVmFsdWU+IG1fYXJndW1lbnRzOworICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKICAgICAgICAgQ2FsbEZyYW1lQ2xvc3Vy
ZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDIxMjY3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAxMSwgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTE5LDcgKzExOSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBBdG9t
aWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiB2bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCk7IH0KICAgICAgICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHBy
b3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqdm0oKS5wcm9wZXJ0eU5hbWVzOyB9Ci0gICAg
ICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBlbXB0eUxpc3QoKSBjb25zdCB7IHJldHVy
biAqdm0oKS5lbXB0eUxpc3Q7IH0KKyAgICAgICAgY29uc3QgQXJnTGlzdCYgZW1wdHlMaXN0KCkg
Y29uc3QgeyByZXR1cm4gKnZtKCkuZW1wdHlMaXN0OyB9CiAgICAgICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlcigpIHsgcmV0dXJuIHZtKCkuaW50ZXJwcmV0ZXI7IH0KICAgICAgICAgSGVhcCog
aGVhcCgpIHsgcmV0dXJuICZ2bSgpLmhlYXA7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMTI2Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDEwLCAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEwMDUsNyArMTAwNSw3IEBAIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihhc09iamVj
dChyZXN1bHQpKTsKIH0KIAotQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZv
clJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWUsIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqIHNj
b3BlLCBKU1ZhbHVlKiBhcmdzKQorQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFy
ZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWUsIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEw
MjUsNyArMTAyNSw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IK
IAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIAot
ICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIGpzVW5kZWZp
bmVkKCksIGFyZ3NDb3VudCwgYXJncyk7CisgICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29k
ZUJsb2NrLCBmdW5jdGlvbiwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7
CiAgICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CiAgICAgQ2FsbEZyYW1lQ2xv
c3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5j
dGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9OwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMjEyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTU0LDcgKzE1NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gRXhlY3V0aW9u
RmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwogCi0gICAgICAgIENhbGxGcmFt
ZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZy
YW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiwgSlNWYWx1ZSopOworICAgICAgICBDYWxsRnJhbWVDbG9zdXJl
IHByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIFBy
b3RvQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSlNTY29wZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUo
Q2FsbEZyYW1lQ2xvc3VyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjEyNjc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTAgKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlZ2lzdGVy
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxsRnJhbWUgeworICAgIFdU
Rl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOworcHVibGljOgogICAgIFJlZ2lzdGVyIGNvZGVCbG9j
a1ZhbHVlOwogICAgIFJlZ2lzdGVyIGNhbGxlZVZhbHVlOwogICAgIFJlZ2lzdGVyIGFyZ0NvdW50
QW5kQ29kZU9yaWdpblZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAJKHJldmlzaW9uIDIxMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC02MywxMiArNjMsMjQgQEAgdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3Rz
KFNsbwogICAgIH0KIH0KIAordm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2xvd0Vuc3VyZUNh
cGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRDYXBhY2l0eSkKK3sKKyAgICBpbnQgbmV3Q2FwYWNpdHkg
PSBDaGVja2VkPGludD4ocmVxdWVzdGVkQ2FwYWNpdHkpLnVuc2FmZUdldCgpOworICAgIGV4cGFu
ZENhcGFjaXR5KG5ld0NhcGFjaXR5KTsKK30KKwogdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6
ZXhwYW5kQ2FwYWNpdHkoKQogewogICAgIGludCBuZXdDYXBhY2l0eSA9IChDaGVja2VkPGludD4o
bV9jYXBhY2l0eSkgKiAyKS51bnNhZmVHZXQoKTsKKyAgICBleHBhbmRDYXBhY2l0eShuZXdDYXBh
Y2l0eSk7Cit9CisKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KGlu
dCBuZXdDYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQobV9jYXBhY2l0eSA8IG5ld0NhcGFjaXR5KTsK
ICAgICBzaXplX3Qgc2l6ZSA9IChDaGVja2VkPHNpemVfdD4obmV3Q2FwYWNpdHkpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkudW5zYWZlR2V0KCk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG5ld0J1
ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oZmFzdE1hbGxvYyhzaXplKSk7Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2NhcGFjaXR5OyArK2kpIHsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7CiAgICAgICAgIG5ld0J1ZmZlcltpXSA9IG1fYnVmZmVy
W2ldOwogICAgICAgICBhZGRNYXJrU2V0KEpTVmFsdWU6OmRlY29kZShtX2J1ZmZlcltpXSkpOwog
ICAgIH0KQEAgLTgyLDcgKzk0LDggQEAgdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5k
Q2FwYWNpdAogCiB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpzbG93QXBwZW5kKEpTVmFsdWUg
dikKIHsKLSAgICBpZiAobV9zaXplID49IG1fY2FwYWNpdHkpCisgICAgQVNTRVJUKG1fc2l6ZSA8
PSBtX2NhcGFjaXR5KTsKKyAgICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCiAgICAgICAgIGV4
cGFuZENhcGFjaXR5KCk7CiAKICAgICBzbG90Rm9yKG1fc2l6ZSkgPSBKU1ZhbHVlOjplbmNvZGUo
dik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCShyZXZpc2lv
biAyMTI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTIgKzIyLDE0IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxs
b2NhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWFya2VkQXJndW1lbnRCdWZmZXIpOworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwog
ICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICBmcmllbmQgY2xhc3MgQXJnTGlzdDsKIApAQCAtNzMs
NyArNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlIHYpCiAgICAgewot
ICAgICAgICBpZiAobV9zaXplID49IG1fY2FwYWNpdHkgfHwgbWFsbG9jQmFzZSgpKQorICAgICAg
ICBBU1NFUlQobV9zaXplIDw9IG1fY2FwYWNpdHkpOworICAgICAgICBpZiAobV9zaXplID09IG1f
Y2FwYWNpdHkgfHwgbWFsbG9jQmFzZSgpKQogICAgICAgICAgICAgcmV0dXJuIHNsb3dBcHBlbmQo
dik7CiAKICAgICAgICAgc2xvdEZvcihtX3NpemUpID0gSlNWYWx1ZTo6ZW5jb2RlKHYpOwpAQCAt
OTQsOCArOTcsMTYgQEAgcHVibGljOgogICAgICAgICAKICAgICBzdGF0aWMgdm9pZCBtYXJrTGlz
dHMoU2xvdFZpc2l0b3ImLCBMaXN0U2V0Jik7CiAKKyAgICB2b2lkIGVuc3VyZUNhcGFjaXR5KHNp
emVfdCByZXF1ZXN0ZWRDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
Y2l0eSA+IHN0YXRpY19jYXN0PHNpemVfdD4obV9jYXBhY2l0eSkpCisgICAgICAgICAgICBzbG93
RW5zdXJlQ2FwYWNpdHkocmVxdWVzdGVkQ2FwYWNpdHkpOworICAgIH0KKwogcHJpdmF0ZToKICAg
ICB2b2lkIGV4cGFuZENhcGFjaXR5KCk7CisgICAgdm9pZCBleHBhbmRDYXBhY2l0eShpbnQgbmV3
Q2FwYWNpdHkpOworICAgIHZvaWQgc2xvd0Vuc3VyZUNhcGFjaXR5KHNpemVfdCByZXF1ZXN0ZWRD
YXBhY2l0eSk7CiAKICAgICB2b2lkIGFkZE1hcmtTZXQoSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjEyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMTUgSm9yZGFuIEhhcmJhbmQgKGxqaGFyYkBnbWFpbC5jb20pCiAg
KgpAQCAtNTM5LDE4ICs1MzksMTkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFs
dWUgcmVwbAogICAgICAgICAgICAgICAgICAgICBPVVRfT0ZfTUVNT1JZKGV4ZWMsIHNjb3BlKTsK
IAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuY2xlYXJBcmd1bWVudHMoKTsKICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHJlZ0V4
cC0+bnVtU3VicGF0dGVybnMoKSArIDE7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBpbnQg
bWF0Y2hTdGFydCA9IG92ZWN0b3JbaSAqIDJdOwogICAgICAgICAgICAgICAgICAgICBpbnQgbWF0
Y2hMZW4gPSBvdmVjdG9yW2kgKiAyICsgMV0gLSBtYXRjaFN0YXJ0OwogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXRjaFN0YXJ0IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0QXJndW1lbnQoaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYWNoZWRDYWxsLmFwcGVuZEFyZ3VtZW50KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KGksIGpzU3Vic3RyaW5nKCZ2bSwgc291cmNlLCBtYXRjaFN0YXJ0LCBtYXRjaExlbikp
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc1N1
YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGkrKywganNO
dW1iZXIocmVzdWx0LnN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudChpKyssIHN0cmluZyk7CisgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5hcHBlbmRBcmd1
bWVudChqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRDYWxs
LmFwcGVuZEFyZ3VtZW50KHN0cmluZyk7CiAKICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBqc1Jlc3VsdCA9
IGNhY2hlZENhbGwuY2FsbCgpOwpAQCAtNTc4LDE4ICs1NzksMTkgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbAogICAgICAgICAgICAgICAgICAgICBPVVRfT0ZfTUVN
T1JZKGV4ZWMsIHNjb3BlKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuY2xlYXJBcmd1bWVudHMoKTsKICAgICAgICAgICAgICAg
ICBmb3IgKDsgaSA8IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDE7ICsraSkgewogICAgICAg
ICAgICAgICAgICAgICBpbnQgbWF0Y2hTdGFydCA9IG92ZWN0b3JbaSAqIDJdOwogICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF0Y2hMZW4gPSBvdmVjdG9yW2kgKiAyICsgMV0gLSBtYXRjaFN0YXJ0
OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0IDwgMCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLmFwcGVuZEFyZ3VtZW50KGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzU3Vic3RyaW5nKCZ2bSwgc291cmNlLCBtYXRj
aFN0YXJ0LCBtYXRjaExlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5h
cHBlbmRBcmd1bWVudChqc1N1YnN0cmluZygmdm0sIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hM
ZW4pKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dEFyZ3VtZW50KGkrKywganNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIHN0cmluZyk7CisgICAgICAgICAgICAgICAgY2Fj
aGVkQ2FsbC5hcHBlbmRBcmd1bWVudChqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICBjYWNoZWRDYWxsLmFwcGVuZEFyZ3VtZW50KHN0cmluZyk7CiAKICAgICAgICAgICAg
ICAgICBjYWNoZWRDYWxsLnNldFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBqc1Jlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjEyNjc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgdG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlKG51bGxwdHIpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCi0gICAgLCBl
bXB0eUxpc3QobmV3IE1hcmtlZEFyZ3VtZW50QnVmZmVyKQorICAgICwgZW1wdHlMaXN0KG5ldyBB
cmdMaXN0KQogICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5l
SklUKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMTI2NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsNyArMzg1
LDcgQEAgcHVibGljOgogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsK
ICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5dGFibGU7
CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7Ci0gICAgY29uc3QgTWFya2Vk
QXJndW1lbnRCdWZmZXIqIGVtcHR5TGlzdDsgLy8gTGlzdHMgYXJlIHN1cHBvc2VkIHRvIGJlIGFs
bG9jYXRlZCBvbiB0aGUgc3RhY2sgdG8gaGF2ZSB0aGVpciBlbGVtZW50cyBwcm9wZXJseSBtYXJr
ZWQsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlIC0gYnV0IHRoaXMgbGlzdCBoYXMgbm90aGlu
ZyB0byBtYXJrLgorICAgIGNvbnN0IEFyZ0xpc3QqIGVtcHR5TGlzdDsKICAgICBTbWFsbFN0cmlu
Z3Mgc21hbGxTdHJpbmdzOwogICAgIE51bWVyaWNTdHJpbmdzIG51bWVyaWNTdHJpbmdzOwogICAg
IERhdGVJbnN0YW5jZUNhY2hlIGRhdGVJbnN0YW5jZUNhY2hlOwpJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
MjY3NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTctMDItMjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFtSZS1sYW5kaW5nXSBDYWNoZWRDYWxsIHNob3VsZCBsZXQgR0Mga25vdyB0byBrZWVwIGl0
cyBhcmd1bWVudHMgYWxpdmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjg1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNDc1NzY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIEFkZGVkIGEgV1RGX0ZP
UkJJRF9IRUFQX0FMTE9DQVRJT04gdGhhdCB3aWxsIGNhdXNlIGEgY29tcGlsYXRpb24gZmFpbHVy
ZSBpZgorICAgICAgICBhIGNsYXNzIGRlY2xhcmVkIHdpdGggaXQgaXMgbWFsbG9jZWQuCisKKyAg
ICAgICAgV2hpbGUgdGhpcyBkb2Vzbid0IHByZXZlbnQgdGhhdCBjbGFzcyBkZWNsYXJlZCBXVEZf
Rk9SQklEX0hFQVBfQUxMT0NBVElPTiBmcm9tCisgICAgICAgIGJlaW5nIGVtYmVkZGVkIGluIGFu
b3RoZXIgY2xhc3MgdGhhdCBpcyBoZWFwIGFsbG9jYXRlZCwgaXQgZG9lcyBhdCBtaW5pbXVtCisg
ICAgICAgIGRvY3VtZW50IHRoZSBpbnRlbnQgYW5kIGdpdmVzIHRoZSB1c2VycyBvZiB0aGlzIGNs
YXNzIGEgY2hhbmNlIHRvIGRvIHRoZQorICAgICAgICByaWdodCB0aGluZy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9Gb3JiaWRIZWFw
QWxsb2NhdGlvbi5oOiBBZGRlZC4KKwogMjAxNy0wMi0yMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIx
MjYxOC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjEyNjc3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCw3IEBACiAJCUU0QTBBRDNEMUE5NjI1M0Mw
MDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVl
Q29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjk1RTFF
RjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZFODIyNTMxMUIyQTFF
NUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi87
IH07CisJCUZFODZBODc1MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NkE4NzQx
RTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi87IH07CiAJCUZFODky
NUIwMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVu
dGVyLmggKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNC
MTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMw
RjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmggKi87IH07CkBAIC03NTEsNiArNzUyLDcgQEAKIAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1
IC8qIEJ5dGVPcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3Jk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4
QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMw
MUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTg2QTg3
NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0
YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjIsNiArOTY0LDcgQEAKIAkJ
CQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJ
CQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJ
MEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAorCQkJCUZFODZBODc0
MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3
MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCiAJCQkJODNGMkJBREUxQ0Y5NTI0
RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0
IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0xNDE4LDYgKzE0MjEsNyBAQAogCQkJ
CTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUExRDhCOUMxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4NkE4NzUxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyog
R3JhcGhOb2RlV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDMDUzODU0MTVCQzgxOTAw
MEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
RDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTiBcCitw
cml2YXRlOiBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRl
OyBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IFwK
KyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgXAorICAgIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlKHZvaWQqKSA9IGRlbGV0ZTsgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9p
ZCopID0gZGVsZXRlOyBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRh
Zywgdm9pZCogbG9jYXRpb24pID0gZGVsZXRlOyBcCisgICAgdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>