<?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>211809</bug_id>
          
          <creation_ts>2020-05-12 15:24:38 -0700</creation_ts>
          <short_desc>[bmalloc] Introduce lock-less ObjectType query</short_desc>
          <delta_ts>2020-05-13 18:17:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>211633</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651979</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-12 15:24:38 -0700</bug_when>
    <thetext>Talked with Phil, and we now agree that we will introduce this even if this is not the part of contention right now (not measured) as a pure improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652094</commentid>
    <comment_count>1</comment_count>
      <attachid>399230</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-12 19:20:50 -0700</bug_when>
    <thetext>Created attachment 399230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652095</commentid>
    <comment_count>2</comment_count>
      <attachid>399231</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-12 19:24:02 -0700</bug_when>
    <thetext>Created attachment 399231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652096</commentid>
    <comment_count>3</comment_count>
      <attachid>399231</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-12 19:30:15 -0700</bug_when>
    <thetext>Comment on attachment 399231
Patch

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

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:64
&gt; +        size_t size = vmSize(sizeof(Bits) + (roundUpToMultipleOf&lt;size_t&gt;(ObjectTypeTable::Bits::bitCountPerWord, count) / 8));
&gt; +        BASSERT(isPowerOf2(size));
&gt; +        size = roundUpToPowerOf2(size, vmPageSize());

Only thing I&apos;m not sure is whether I should use vmPageSizePhysical or vmPageSize here.
I&apos;m using vmPageSize() since bmalloc::Vector&lt;&gt; is using that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652097</commentid>
    <comment_count>4</comment_count>
      <attachid>399232</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-12 19:41:07 -0700</bug_when>
    <thetext>Created attachment 399232
Patch

Fix debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652112</commentid>
    <comment_count>5</comment_count>
      <attachid>399231</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-12 21:09:07 -0700</bug_when>
    <thetext>Comment on attachment 399231
Patch

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

r=me with suggested improvements.

&gt; Source/bmalloc/ChangeLog:9
&gt; +        This patch introduces ObjectTypeTable, which allows lock-less ObjectType query for Chunk*.
&gt; +        It has bit-vector to store ObjectType per address. And 1bit represents 1MB VA region since

Please add a comment somewhere around here to explain that the reason we can represent the ObjectType with a bit is because there only 2 ObjectTypes: Small and Large.

/1bit/each bit/
/1MB VA/1MB of VA/

&gt; Source/bmalloc/ChangeLog:12
&gt; +        is limited and it does not waste memory so much because Chunk&apos;s size is enough large (1MB). Since each

/waste memory so much/waste much memory/

&gt; Source/bmalloc/ChangeLog:14
&gt; +        happens. I ensured that 4KB page can handle memory allocation in JetStream2 and Gmail.

I think you meant &quot;verified&quot; instead of &quot;ensured&quot;.  I presume you confirmed that they already fit, and not that you changed anything to make them fit.  Is that right?
/allocation/allocations/

&gt; Source/bmalloc/bmalloc/Algorithm.h:224
&gt; +    return ((size + alignment - 1) &amp; -alignment);

Please add an assertion here that alignment isPowerOf2 since this algorithm depends on that for correctness.

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:45
&gt; +            // This is initial allocation of ObjectTypeTable. In this case, it would be possible that the first registration could be
&gt; +            // possible that some VAs are already allocated for different purpose, and later it will be reused for bmalloc. In that case,
&gt; +            // soon, we will see smaller index request than the initial one.
&gt; +            // We add 128MB offset to the initial newBegin to cover such patterns without extending table too quickly.

/it would be possible that the first registration could be possible that some VAs are already/it could be possible that for the first registration, some VAs are already/
/for different purpose/for a different purpose/
/add 128MB/subtract a 128MB/
/we see smaller index request than the initial one/we will see a smaller index request than this initial one/

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:51
&gt; +            newBegin = std::min&lt;unsigned&gt;(index, (bits-&gt;begin() - (bits-&gt;end() - bits-&gt;begin())));

I suggest you add:
    inline unsigned Bits::count() { return end() - begin(); }
... and express this line instead as:
    newBegin = std::min&lt;unsigned&gt;(index, bits-&gt;begin() - bits-&gt;count());

I think this reads clearer as doubling the Bits size below begin().  I would have used &quot;size&quot; over &quot;count&quot;, but you&apos;re using &quot;count&quot; in the local var below.  So, let&apos;s just keep it consistent.

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:57
&gt; +            newEnd = std::max&lt;unsigned&gt;(index + 1, bits-&gt;end() + (bits-&gt;end() - bits-&gt;begin()));

Ditto:
    newEnd = std::max&lt;unsigned&gt;(index + 1, bits-&gt;end() + bits-&gt;size());

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:71
&gt; +        for (unsigned index = bits-&gt;begin(); index &lt; bits-&gt;end(); ++index)
&gt; +            newBits-&gt;set(index, bits-&gt;get(index));

Above, you only round the size up.  Instead, why not round down newBegin to a WordType boundary first, and then round up newEnd as above.  By doing this, you guarantee that a Nth bit in a word will always be the Nth bit in some word no matter how many new empty words you grow on each end.

With that, you can compute how many words you added before the old begin, and how many words after.  With this info, you can do a memcpy of the old Bits words into the new one instead of this slow per bit iteration.

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:77
&gt; +    BASSERT(static_cast&lt;ObjectType&gt;(value) == objectType);

Nice.  I was wondering if there&apos;s a way to ensure that there can only be 2 ObjectTypes: Small and Large, so that if we ever add a Medium type, we would fail here.  This assertion is even better than the naive one I thought of.

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.h:57
&gt; +        return static_cast&lt;unsigned&gt;((address &amp; addressMask) &gt;&gt; shiftAmount);

Do we really need to &amp; with addressMask here?  By definition, chunk / address cannot have bits above BOS_EFFECTIVE_ADDRESS_WIDTH, right?  Or are we storing some bits there?

Secondly, why not shift first, and then mask against an indexMask (where indexMask = addressMask &gt;&gt; shiftAmount)?  The indexMask is a smaller constant and may allow for more efficient instruction encoding.  Additionally, the indexMask&apos;s low bit aligns perfectly on a 16-bit boundary.  For example, on ARM64, indexMask would be 16bits.  A single movz can initialize the constant in a register.  But for addressMask, because the low bit is bit 20, we all need at least to 1 movz + 1 movk to form the constant.

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.h:65
&gt; +    using WordType = unsigned;

How about using WordType = UCPURegister?  It&apos;s not a big advantage to do so, but will make the memcpy I suggested above just a bit faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652387</commentid>
    <comment_count>6</comment_count>
      <attachid>399231</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-13 14:04:03 -0700</bug_when>
    <thetext>Comment on attachment 399231
Patch

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

&gt;&gt; Source/bmalloc/ChangeLog:9
&gt;&gt; +        It has bit-vector to store ObjectType per address. And 1bit represents 1MB VA region since
&gt; 
&gt; Please add a comment somewhere around here to explain that the reason we can represent the ObjectType with a bit is because there only 2 ObjectTypes: Small and Large.
&gt; 
&gt; /1bit/each bit/
&gt; /1MB VA/1MB of VA/

Fixed.

&gt;&gt; Source/bmalloc/ChangeLog:12
&gt;&gt; +        is limited and it does not waste memory so much because Chunk&apos;s size is enough large (1MB). Since each
&gt; 
&gt; /waste memory so much/waste much memory/

Fixed.

&gt;&gt; Source/bmalloc/ChangeLog:14
&gt;&gt; +        happens. I ensured that 4KB page can handle memory allocation in JetStream2 and Gmail.
&gt; 
&gt; I think you meant &quot;verified&quot; instead of &quot;ensured&quot;.  I presume you confirmed that they already fit, and not that you changed anything to make them fit.  Is that right?
&gt; /allocation/allocations/

Right, fixed.

&gt;&gt; Source/bmalloc/bmalloc/Algorithm.h:224
&gt;&gt; +    return ((size + alignment - 1) &amp; -alignment);
&gt; 
&gt; Please add an assertion here that alignment isPowerOf2 since this algorithm depends on that for correctness.

Added.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:45
&gt;&gt; +            // We add 128MB offset to the initial newBegin to cover such patterns without extending table too quickly.
&gt; 
&gt; /it would be possible that the first registration could be possible that some VAs are already/it could be possible that for the first registration, some VAs are already/
&gt; /for different purpose/for a different purpose/
&gt; /add 128MB/subtract a 128MB/
&gt; /we see smaller index request than the initial one/we will see a smaller index request than this initial one/

Fixed.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:51
&gt;&gt; +            newBegin = std::min&lt;unsigned&gt;(index, (bits-&gt;begin() - (bits-&gt;end() - bits-&gt;begin())));
&gt; 
&gt; I suggest you add:
&gt;     inline unsigned Bits::count() { return end() - begin(); }
&gt; ... and express this line instead as:
&gt;     newBegin = std::min&lt;unsigned&gt;(index, bits-&gt;begin() - bits-&gt;count());
&gt; 
&gt; I think this reads clearer as doubling the Bits size below begin().  I would have used &quot;size&quot; over &quot;count&quot;, but you&apos;re using &quot;count&quot; in the local var below.  So, let&apos;s just keep it consistent.

Fixed.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:57
&gt;&gt; +            newEnd = std::max&lt;unsigned&gt;(index + 1, bits-&gt;end() + (bits-&gt;end() - bits-&gt;begin()));
&gt; 
&gt; Ditto:
&gt;     newEnd = std::max&lt;unsigned&gt;(index + 1, bits-&gt;end() + bits-&gt;size());

Fixed.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:71
&gt;&gt; +            newBits-&gt;set(index, bits-&gt;get(index));
&gt; 
&gt; Above, you only round the size up.  Instead, why not round down newBegin to a WordType boundary first, and then round up newEnd as above.  By doing this, you guarantee that a Nth bit in a word will always be the Nth bit in some word no matter how many new empty words you grow on each end.
&gt; 
&gt; With that, you can compute how many words you added before the old begin, and how many words after.  With this info, you can do a memcpy of the old Bits words into the new one instead of this slow per bit iteration.

Fixed.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.h:57
&gt;&gt; +        return static_cast&lt;unsigned&gt;((address &amp; addressMask) &gt;&gt; shiftAmount);
&gt; 
&gt; Do we really need to &amp; with addressMask here?  By definition, chunk / address cannot have bits above BOS_EFFECTIVE_ADDRESS_WIDTH, right?  Or are we storing some bits there?
&gt; 
&gt; Secondly, why not shift first, and then mask against an indexMask (where indexMask = addressMask &gt;&gt; shiftAmount)?  The indexMask is a smaller constant and may allow for more efficient instruction encoding.  Additionally, the indexMask&apos;s low bit aligns perfectly on a 16-bit boundary.  For example, on ARM64, indexMask would be 16bits.  A single movz can initialize the constant in a register.  But for addressMask, because the low bit is bit 20, we all need at least to 1 movz + 1 movk to form the constant.

Yeah, this addressMask is not necessary. Removed.

&gt;&gt; Source/bmalloc/bmalloc/ObjectTypeTable.h:65
&gt;&gt; +    using WordType = unsigned;
&gt; 
&gt; How about using WordType = UCPURegister?  It&apos;s not a big advantage to do so, but will make the memcpy I suggested above just a bit faster.

Since extension is extremely rare (never happens in practice), using UCPURegister does not matter. I keep using unsigned here because it is simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652388</commentid>
    <comment_count>7</comment_count>
      <attachid>399297</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-13 14:06:01 -0700</bug_when>
    <thetext>Created attachment 399297
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652390</commentid>
    <comment_count>8</comment_count>
      <attachid>399298</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-13 14:08:04 -0700</bug_when>
    <thetext>Created attachment 399298
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652392</commentid>
    <comment_count>9</comment_count>
      <attachid>399297</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-13 14:14:27 -0700</bug_when>
    <thetext>Comment on attachment 399297
Patch for landing

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

&gt; Source/bmalloc/bmalloc/ObjectTypeTable.cpp:56
&gt; +            newBegin = static_cast&lt;unsigned&gt;(roundDownToMultipleOf&lt;size_t&gt;(ObjectTypeTable::Bits::bitCountPerWord, bits-&gt;begin()));

This rounding doesn&apos;t hurt, but is not needed.  The old bits-&gt;begin() should already be properly aligned.  You can just assert it if you like.
Alternatively, instead of doing the rounding down in all 3 cases here, just do it below after this if else statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652415</commentid>
    <comment_count>10</comment_count>
      <attachid>399306</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-13 15:52:00 -0700</bug_when>
    <thetext>Created attachment 399306
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652421</commentid>
    <comment_count>11</comment_count>
      <attachid>399311</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-13 15:59:41 -0700</bug_when>
    <thetext>Created attachment 399311
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652465</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-13 18:09:24 -0700</bug_when>
    <thetext>Committed r261667: &lt;https://trac.webkit.org/changeset/261667&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399311.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652466</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-13 18:10:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63209056&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399230</attachid>
            <date>2020-05-12 19:20:50 -0700</date>
            <delta_ts>2020-05-12 19:24:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211809-20200512192049.patch</filename>
            <type>text/plain</type>
            <size>28299</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uNTEyN2I0NDg4M2QzOGNjOWY1Y2E4ZTBmNzlhNDZm
YTc3NzMyNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVU
YWJsZSwgd2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayou
CisgICAgICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJl
c3MuIEFuZCAxYml0IHJlcHJlc2VudHMgMU1CIFZBIHJlZ2lvbiBzaW5jZQorICAgICAgICBDaHVu
ayoncyBzaXplIGlzIGF0IGxlYXN0IDFNQi4gRXZlcnkgdGltZSB3ZSBleHRlbmQgdGhpcyBiaXQt
dmVjdG9yIHRvIHN1cHBvcnQgbGFyZ2VyIFZBIHJlZ2lvbiwKKyAgICAgICAgd2UgZG8gbm90IGZy
ZWUgdGhlIG9sZCBiaXQtdmVjdG9yLiBTaW5jZSB3ZSBhbHdheXMgYWxsb2NhdGUgcG93ZXItb2Yt
MiBzaXplZCBiaXQtdmVjdG9yLCAjIG9mIGV4dGVuc2lvbgorICAgICAgICBpcyBsaW1pdGVkIGFu
ZCBpdCBkb2VzIG5vdCB3YXN0ZSBtZW1vcnkgc28gbXVjaCBiZWNhdXNlIENodW5rJ3Mgc2l6ZSBp
cyBlbm91Z2ggbGFyZ2UgKDFNQikuIFNpbmNlIGVhY2gKKyAgICAgICAgNEtCIHBhZ2Ugb24gbWFj
T1MgY2FuIHJlcHJlc2VudCBhIGJpdC12ZWN0b3IgZm9yIDMyR0IgVkEgcmVnaW9uLCBpbiBwcmFj
dGljZSwgdGhpcyBleHRlbnNpb24gYWxtb3N0IG5ldmVyCisgICAgICAgIGhhcHBlbnMuIEkgZW5z
dXJlZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gaW4gSmV0U3Ry
ZWFtMiBhbmQgR21haWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBi
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYm1hbGxvYy9BbGdv
cml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OnJvdW5kVXBUb1Bvd2VyT2YyKToKKyAgICAgICAg
KiBibWFsbG9jL0RlYWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9y
OjpkZWFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRB
bmRBbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFy
Z2UpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChibWFsbG9j
OjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpzZXQpOgorICAgICAgICAq
IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2Jq
ZWN0VHlwZVRhYmxlOjpjb252ZXJ0VG9JbmRleCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RU
eXBlVGFibGU6OkJpdHM6OkJpdHMpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxl
OjpCaXRzOjpwcmV2aW91cyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFi
bGU6OkJpdHM6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJs
ZTo6Qml0czo6ZW5kIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6
Qml0czo6d29yZHMgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjp3b3Jkcyk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6Ok9iamVjdFR5
cGVUYWJsZSk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OmdldCk6CisgICAg
ICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmdldCk6CisgICAgICAgIChibWFs
bG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OnNldCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2
ZW5nZXIuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpzY2F2ZW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSk6CisgICAgICAgIChibWFs
bG9jOjpTY2F2ZW5nZXI6OmZyZWVhYmxlTWVtb3J5KToKKwogMjAyMC0wNS0xMSAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdW1dURl0g
QWRkIGNvbXB1dGluZyBtZW1vcnkgc2l6ZSBpbXBsZW1lbnRhdGlvbiBmb3IgRnJlZUJTRApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dAppbmRleCBhMjBkNjJlNWQ1Nzk0YWFiMTM0YWYzMDcwNDdlNmIyNWU5YzFj
MjkxLi4zZDk5MGViOWJhOGQzODljNDY0M2QxODAwZjUwMzU5ODRiZDdhODZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFr
ZUxpc3RzLnR4dApAQCAtMjksNiArMjksNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAgYm1h
bGxvYy9Mb2dnaW5nLmNwcAogICAgIGJtYWxsb2MvTXV0ZXguY3BwCiAgICAgYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcAorICAgIGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcAogICAgIGJtYWxsb2Mv
UGVyUHJvY2Vzcy5jcHAKICAgICBibWFsbG9jL1NjYXZlbmdlci5jcHAKICAgICBibWFsbG9jL2Jt
YWxsb2MuY3BwCkBAIC0xMTAsNiArMTExLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hFQURFUlMK
ICAgICBibWFsbG9jL011dGV4LmgKICAgICBibWFsbG9jL09iamVjdC5oCiAgICAgYm1hbGxvYy9P
YmplY3RUeXBlLmgKKyAgICBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5oCiAgICAgYm1hbGxvYy9Q
YWNrZWQuaAogICAgIGJtYWxsb2MvUGVySGVhcEtpbmQuaAogICAgIGJtYWxsb2MvUGVyUHJvY2Vz
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNWE1MzE0NTQ0Yjk0OGYyMmQyZWM2ODUyY2Y0OTdjZGJjYzUxNDMyNC4uNWMyYzNk
NTZkOTc1OWNjMTExZGIzYjNmOTRhZGQzNDg1Yzk2ZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSw4IEBA
CiAJCURFOEIxM0IzMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0Qg
LyogQlZNVGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMUU3NDgwMjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzFFNzQ3RjIyMzhD
QTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQ
YWNrZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc4QTlERjI0NkI2ODcyMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3Bw
ICovOyB9OworCQlFMzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc4QTlERDI0
NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNDEzQzkyMjYwNjExNDAwMzdGNDcwIC8q
IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0E0MTNDODIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0YyNDQwMjIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDEyMjVEMkMwMTAwQTBF
MEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwNDIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Yy
NDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi87IH07CkBAIC0yOTMs
NiArMjk1LDggQEAKIAkJREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQlZNVGFncy5oOyBwYXRoID0gYm1hbGxvYy9CVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQ
ZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0YXRpY1BlclBy
b2Nlc3MuaDsgcGF0aCA9IGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhY2tlZC5oOyBwYXRoID0gYm1hbGxvYy9Q
YWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3OEE5REQyNDZCNjg2QTAw
MjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3RUeXBlVGFi
bGUuaDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT2JqZWN0VHlwZVRhYmxlLmNwcDsgcGF0aCA9IGJtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNB
NDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHBhdGggPSBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2Mv
SXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMzIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmNwcDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hh
cmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTAsNiArNDk0LDgg
QEAKIAkJCQkxNDRCRTExRTFDQTM0NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggKi8sCiAJCQkJMTQx
MDVFODMxOEUxNDM3NDAwM0ExMDZFIC8qIE9iamVjdFR5cGUuY3BwICovLAogCQkJCTE0ODU2NTYw
MThBNDNEQkEwMEVENjk0MiAvKiBPYmplY3RUeXBlLmggKi8sCisJCQkJRTM3OEE5REUyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi8sCisJCQkJRTM3OEE5REQyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovLAogCQkJCTc5NUFCM0M2MjA2RTBEMjUw
MDc0RkU3NiAvKiBQaHlzaWNhbFBhZ2VNYXAuaCAqLywKIAkJCQlBRDE0QUQyNzIwMjUyOUE2MDA4
OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmggKi8sCiAJCQkJQUQxNEFEMjgyMDI1MjlCMDAwODkwRTNC
IC8qIFByb2Nlc3NDaGVjay5tbSAqLywKQEAgLTY0NSw2ICs2NTEsNyBAQAogCQkJCTE0M0NCODFE
MTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTMx
OEY0OEQwRjAwOTUwNzAyIC8qIE9iamVjdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzhB
OUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzc3LDYgKzc4NCw3IEBACiAJCQkJNDQyNkUyODAxQzgzOEVFMDAwOEVCMDQy
IC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzQ0I4MUMxOTAyMkJDOTAwQjE2
QTQ1IC8qIE11dGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM4MThFQTM5OTAwMDhD
MTUyRiAvKiBPYmplY3RUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNzhBOURGMjQ2QjY4
NzIwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NkE3QTUyMDU0ODMxMzAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQxNEFEMkEyMDI1MjlDNzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNUJGMTUyMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCBkMjJmM2NlMDU0NDk1
ZDAyYzBjNTQ5MzNkZDE4YTcxZjg3MDcwMGU5Li5jMzA1Y2Y4NzFmYTc5OWZmNDBlMTdlNWIzMGU5
ODQ5Zjk2YmY4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRo
bS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTIxOSw2ICsy
MTksMTEgQEAgY29uc3RleHByIHVuc2lnbmVkIGdldExTQlNldE5vblplcm9Db25zdGV4cHIoVCB0
KQogICAgIHJldHVybiBjdHpDb25zdGV4cHIodCk7CiB9CiAKK2NvbnN0ZXhwciBzaXplX3Qgcm91
bmRVcFRvUG93ZXJPZjIoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCit7CisgICAgcmV0
dXJuICgoc2l6ZSArIGFsaWdubWVudCAtIDEpICYgLWFsaWdubWVudCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRmMDJmYTg4NTczMGM2NDNm
ZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAxMjNhYzhiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwxNCArNjgsMTYgQEAgdm9p
ZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9iamVjdCkKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhl
YXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmplY3QpKSB7Cisg
ICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVhbGxvY2F0ZUxhcmdlKGxv
Y2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9vYmplY3RM
b2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAgaWYgKG1fb2JqZWN0TG9n
LnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAgICAgIFVuaXF1ZUxvY2tI
b2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vzc09iamVjdExvZyhsb2Nr
KTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNiODZmZTViYjVhNjEyZDE4
Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2FjYWdlU2l6ZSgp
CiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQpKTsKIH0KIAot
c2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQorc2l6ZV90IEhl
YXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIHJldHVybiBtX2Zy
ZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSGVhcDo6bWFya0FsbExh
cmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRpb24ubm90aWZ5
X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBMb2NrSG9s
ZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lk
IEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290cHJpbnQgLT0g
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdl
LnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAgdm9pZCBIZWFwOjpkZWNv
bW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxr
RGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikK
K3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IExvY2tIb2xk
ZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtE
ZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpCiAjZW5kaWYK
IHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29t
bWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2No
dW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0gJm1fY2h1bmtDYWNoZVsw
XSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2NrLCBsaXN0LnBvcCgpLCAm
bGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZvciAoTGFyZ2VSYW5nZSYg
cmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwg
c2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgdm9p
ZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJhbmdlJiByYW5n
ZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0
ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgRmFp
bHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9yeSkgQ2h1bmsocGFnZVNp
emUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RUeXBlOjpTbWFs
bCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5rLCBPYmplY3RUeXBlOjpT
bWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFibGUgPSAwOwogICAgICAg
ICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBhZ2UqIHBhZ2UpIHsKQEAg
LTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVMb2Nr
SG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAgICBtX2ZyZWVQ
YWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVT
bWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykKK3ZvaWQgSGVhcDo6ZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQ2h1bmsqIGNodW5rLCBz
aXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RU
eXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgY2h1bmssIE9iamVjdFR5
cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxvY2F0ZWQucmVt
b3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUgPSBzaXplOwpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShVbmlxdWVMb2NrSG9s
ZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAgICAgIG1fZnJlZVBhZ2Vz
W3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAoIW1fY2h1bmtDYWNoZVtw
YWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKG1f
Y2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOworICAgICAgICAgICAgZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucG9wKCksIHBh
Z2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucHVzaChjaHVuayk7
CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBS
YW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZChtX2tp
bmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhCiAgICAg
ICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBtX29iamVjdFR5cGVzLnNl
dChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9v
YmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdpbigpKSwgT2JqZWN0VHlw
ZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFuZ2UuYmVnaW4oKSwgcmFu
Z2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEgKzYyMSw2IEBAIExhcmdl
UmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgMCwgMCk7CiB9CiAK
LWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQotewot
ICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0KS5jaHVuaygpKSA9PSBP
YmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShVbmlxdWVMb2Nr
SG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdGVkLmdl
dChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2QyMGE2YTcxNzlhYTkwYTg3
NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYwNGQ4YzliNDllZjBjNzQ1
MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1h
cC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQuaCIKICNpbmNsdWRlICJQ
ZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCkBAIC02OSwxOSArNzAs
MTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9s
ZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKICAgICB2b2lk
IGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwogCi0gICAgYm9vbCBp
c0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9vbCBpc0xhcmdlKHZvaWQq
KTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CiAgICAg
dm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2UmLCBzaXplX3Qp
OwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hX
YXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwotICAgIHZvaWQgc2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAg
IHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwogI2Vsc2UK
LSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXpl
X3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKICNlbmRpZgot
ICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYsIHNpemVf
dCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CiAKLSAgICBz
aXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHNpemVfdCBmcmVl
YWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3RwcmludCgpOwog
CiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKQEAgLTkyLDcg
KzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShj
b25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1pdExhcmdlUmFu
Z2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKKyAgICB2
b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIEJ1
bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsxMTgsNyBAQCBjbGFzcyBI
ZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYsIE9i
amVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVM
b2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7Ci0gICAgdm9pZCBk
ZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xhc3MpOworICAgIHZvaWQg
ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwgc2l6ZV90IHBh
Z2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVuayhzaXplX3Qg
YWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxvY2F0ZShVbmlx
dWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CkBA
IC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZvaWQqLCBzaXplX3QsIExh
cmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJnZU1hcCBtX2xhcmdlRnJl
ZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFzaD4gbV9vYmplY3RUeXBl
czsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAogICAgIFNjYXZlbmdlciog
bV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjksMTEgQEAgaW5saW5lIHZv
aWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9i
amVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIG9iamVjdCwgbGlu
ZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2b2lkKiBvYmplY3QpCit7
CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNodW5rKCkpID09
IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRp
ZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlw
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmluZGV4IDFlMmZk
NTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZkMTc1OGQyNzg4YTJjNjYz
ZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNw
cApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYgaGVhcCwgdm9p
ZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBPYmpl
Y3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0
ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkKKyAgICAgICAg
aWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFR5cGU6
OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRh
YmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOTQ1MmU0MzUxYzZjMzYzMTBjMDNjNWI3NTFhMmIwMzg4ZDZh
OWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBl
VGFibGUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCisKKyNpbmNsdWRl
ICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworT2JqZWN0VHlwZVRhYmxl
OjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwordm9pZCBPYmplY3RUeXBl
VGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5rLCBPYmplY3RUeXBlIG9i
amVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0VG9JbmRleChjaHVuayk7
CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRzLT5iZWdpbigpIDw9IGlu
ZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIG5ld0JlZ2lu
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAgICAgaWYgKGJpdHMgPT0g
JnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBpbml0aWFsIGFsbG9jYXRp
b24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IHdvdWxkIGJlIHBvc3NpYmxl
IHRoYXQgdGhlIGZpcnN0IHJlZ2lzdHJhdGlvbiBjb3VsZCBiZQorICAgICAgICAgICAgLy8gcG9z
c2libGUgdGhhdCBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGRpZmZlcmVudCBw
dXJwb3NlLCBhbmQgbGF0ZXIgaXQgd2lsbCBiZSByZXVzZWQgZm9yIGJtYWxsb2MuIEluIHRoYXQg
Y2FzZSwKKyAgICAgICAgICAgIC8vIHNvb24sIHdlIHdpbGwgc2VlIHNtYWxsZXIgaW5kZXggcmVx
dWVzdCB0aGFuIHRoZSBpbml0aWFsIG9uZS4KKyAgICAgICAgICAgIC8vIFdlIGFkZCAxMjhNQiBv
ZmZzZXQgdG8gdGhlIGluaXRpYWwgbmV3QmVnaW4gdG8gY292ZXIgc3VjaCBwYXR0ZXJucyB3aXRo
b3V0IGV4dGVuZGluZyB0YWJsZSB0b28gcXVpY2tseS4KKyAgICAgICAgICAgIG5ld0JlZ2luID0g
c3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCBpbmRleCAtIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6
Yml0Q291bnRQZXJXb3JkICogNCk7CisgICAgICAgICAgICBuZXdFbmQgPSBpbmRleCArIDE7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCBiaXRzLT5iZWdpbigpKSB7CisgICAgICAgICAgICBC
QVNTRVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7
CisgICAgICAgICAgICBuZXdCZWdpbiA9IHN0ZDo6bWluPHVuc2lnbmVkPihpbmRleCwgKGJpdHMt
PmJlZ2luKCkgLSAoYml0cy0+ZW5kKCkgLSBiaXRzLT5iZWdpbigpKSkpOworICAgICAgICAgICAg
bmV3RW5kID0gYml0cy0+ZW5kKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBCQVNT
RVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7Cisg
ICAgICAgICAgICBuZXdCZWdpbiA9IGJpdHMtPmJlZ2luKCk7CisgICAgICAgICAgICBuZXdFbmQg
PSBzdGQ6Om1heDx1bnNpZ25lZD4oaW5kZXggKyAxLCBiaXRzLT5lbmQoKSArIChiaXRzLT5lbmQo
KSAtIGJpdHMtPmJlZ2luKCkpKTsKKyAgICAgICAgfQorICAgICAgICBCQVNTRVJUKG5ld0VuZCA+
IG5ld0JlZ2luKTsKKworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IG5ld0VuZCAtIG5ld0JlZ2lu
OworICAgICAgICBzaXplX3Qgc2l6ZSA9IHZtU2l6ZShzaXplb2YoQml0cykgKyAocm91bmRVcFRv
TXVsdGlwbGVPZjxzaXplX3Q+KE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3Jk
LCBjb3VudCkgLyA4KSk7CisgICAgICAgIEJBU1NFUlQoaXNQb3dlck9mMihzaXplKSk7CisgICAg
ICAgIHNpemUgPSByb3VuZFVwVG9Qb3dlck9mMihzaXplLCB2bVBhZ2VTaXplKCkpOworICAgICAg
ICBuZXdFbmQgPSBuZXdCZWdpbiArICgoc2l6ZSAtIHNpemVvZihCaXRzKSkgLyBzaXplb2YoT2Jq
ZWN0VHlwZVRhYmxlOjpCaXRzOjpXb3JkVHlwZSkpICogT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpi
aXRDb3VudFBlcldvcmQ7CisgICAgICAgIEJBU1NFUlQobmV3RW5kID4gbmV3QmVnaW4pOworICAg
ICAgICB2b2lkKiBhbGxvY2F0ZWQgPSB2bUFsbG9jYXRlKHNpemUpOworICAgICAgICBtZW1zZXQo
YWxsb2NhdGVkLCAwLCBzaXplKTsKKyAgICAgICAgYXV0byogbmV3Qml0cyA9IG5ldyAoYWxsb2Nh
dGVkKSBCaXRzKGJpdHMsIG5ld0JlZ2luLCBuZXdFbmQpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gYml0cy0+YmVnaW4oKTsgaW5kZXggPCBiaXRzLT5lbmQoKTsgKytpbmRleCkKKyAg
ICAgICAgICAgIG5ld0JpdHMtPnNldChpbmRleCwgYml0cy0+Z2V0KGluZGV4KSk7CisgICAgICAg
IHN0ZDo6YXRvbWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgLy8g
RW5zdXJlIHRhYmxlIGdldHMgdmFsaWQgd2hlbiBpdCBpcyB2aXNpYmxlIHRvIHRoZSBvdGhlciB0
aHJlYWRzIHNpbmNlIE9iamVjdFR5cGVUYWJsZTo6Z2V0IGRvZXMgbm90IHRha2UgYSBsb2NrLgor
ICAgICAgICBtX2JpdHMgPSBuZXdCaXRzOworICAgICAgICBiaXRzID0gbmV3Qml0czsKKyAgICB9
CisgICAgYm9vbCB2YWx1ZSA9ICEhc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxP
YmplY3RUeXBlPj4ob2JqZWN0VHlwZSk7CisgICAgQkFTU0VSVChzdGF0aWNfY2FzdDxPYmplY3RU
eXBlPih2YWx1ZSkgPT0gb2JqZWN0VHlwZSk7CisgICAgYml0cy0+c2V0KGluZGV4LCB2YWx1ZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGVUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MWZjNWQ1NDE2YTVmYTYzZTRlMWNmNzIxZjRkMDI4
YmQ5ZGIyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGVUYWJsZS5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNdXRleC5oIgor
I2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKKyNpbmNsdWRlICJTaXplcy5oIgorCituYW1lc3BhY2Ug
Ym1hbGxvYyB7CisKK2NsYXNzIENodW5rOworCisvLyBRdWVyeWluZyBPYmplY3RUeXBlIGZvciBD
aHVuayB3aXRob3V0IGxvY2tpbmcuCitjbGFzcyBPYmplY3RUeXBlVGFibGUgeworcHVibGljOgor
ICAgIE9iamVjdFR5cGVUYWJsZSgpOworCisgICAgc3RhdGljX2Fzc2VydChCT1NfRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEggIT0gNjQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hp
ZnRBbW91bnQgPSAyMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBhZGRyZXNzTWFz
ayA9ICgxVUxMIDw8IEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAxOworICAgIHN0YXRp
Y19hc3NlcnQoKDFVTEwgPDwgc2hpZnRBbW91bnQpID09IGNodW5rU2l6ZSk7CisgICAgc3RhdGlj
X2Fzc2VydCgoQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIC0gc2hpZnRBbW91bnQpIDw9IDMy
KTsKKworICAgIGNsYXNzIEJpdHM7CisKKyAgICBPYmplY3RUeXBlIGdldChDaHVuayopOworICAg
IHZvaWQgc2V0KFVuaXF1ZUxvY2tIb2xkZXImLCBDaHVuayosIE9iamVjdFR5cGUpOworCitwcml2
YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBjb252ZXJ0VG9JbmRleChDaHVuayogY2h1bmspCisg
ICAgeworICAgICAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjaHVuayk7CisgICAgICAgIEJBU1NFUlQoIShhZGRyZXNzICYgKH5jaHVua01hc2spKSk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKGFkZHJlc3MgJiBhZGRyZXNz
TWFzaykgPj4gc2hpZnRBbW91bnQpOworICAgIH0KKworICAgIEJpdHMqIG1fYml0czsKK307CisK
K2NsYXNzIE9iamVjdFR5cGVUYWJsZTo6Qml0cyB7CitwdWJsaWM6CisgICAgdXNpbmcgV29yZFR5
cGUgPSB1bnNpZ25lZDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdENvdW50UGVy
V29yZCA9IHNpemVvZihXb3JkVHlwZSkgKiA4OworICAgIHN0YXRpYyBjb25zdGV4cHIgV29yZFR5
cGUgb25lID0gMTsKKyAgICBjb25zdGV4cHIgQml0cyhCaXRzKiBwcmV2aW91cywgdW5zaWduZWQg
YmVnaW4sIHVuc2lnbmVkIGVuZCkKKyAgICAgICAgOiBtX3ByZXZpb3VzKHByZXZpb3VzKQorICAg
ICAgICAsIG1fYmVnaW4oYmVnaW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGdldCh1bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIGJvb2wpOworCisgICAgQml0cyogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3By
ZXZpb3VzOyB9CisgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9
CisgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKworcHJpdmF0ZToK
KyAgICBXb3JkVHlwZSogd29yZHMoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEJpdHMqPih0
aGlzKS0+d29yZHMoKTsgfQorICAgIFdvcmRUeXBlKiB3b3JkcygpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V29yZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBz
aXplb2YoQml0cykpOyB9CisKKyAgICBCaXRzKiBtX3ByZXZpb3VzIHsgbnVsbHB0ciB9OyAvLyBL
ZWVwaW5nIHRoZSBwcmV2aW91cyBCaXRzKiBqdXN0IHRvIHN1cHByZXNzIExlYWtzIHdhcm5pbmdz
LgorICAgIHVuc2lnbmVkIG1fYmVnaW4geyAwIH07CisgICAgdW5zaWduZWQgbV9lbmQgeyAwIH07
Cit9Oworc3RhdGljX2Fzc2VydCghKHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJpdHMpICUgc2l6
ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUpKSk7CisKK2V4dGVybiBCRVhQT1JU
IE9iamVjdFR5cGVUYWJsZTo6Qml0cyBzZW50aW5lbEJpdHM7CisKK2lubGluZSBPYmplY3RUeXBl
VGFibGU6Ok9iamVjdFR5cGVUYWJsZSgpCisgICAgOiBtX2JpdHMoJnNlbnRpbmVsQml0cykKK3sK
K30KKworaW5saW5lIE9iamVjdFR5cGUgT2JqZWN0VHlwZVRhYmxlOjpnZXQoQ2h1bmsqIGNodW5r
KQoreworICAgIEJpdHMqIGJpdHMgPSBtX2JpdHM7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252
ZXJ0VG9JbmRleChjaHVuayk7CisgICAgQkFTU0VSVChiaXRzKTsKKyAgICBpZiAoYml0cy0+YmVn
aW4oKSA8PSBpbmRleCAmJiBpbmRleCA8IGJpdHMtPmVuZCgpKQorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8T2JqZWN0VHlwZT4oYml0cy0+Z2V0KGluZGV4KSk7CisgICAgcmV0dXJuIHsgfTsK
K30KKworaW5saW5lIGJvb2wgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQodW5zaWduZWQgaW5k
ZXgpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICByZXR1cm4gd29y
ZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmIChvbmUgPDwgKG4gJSBiaXRDb3VudFBlcldvcmQp
KTsKK30KKworaW5saW5lIHZvaWQgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzZXQodW5zaWduZWQg
aW5kZXgsIGJvb2wgdmFsdWUpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsK
KyAgICBpZiAodmFsdWUpCisgICAgICAgIHdvcmRzKClbbiAvIGJpdENvdW50UGVyV29yZF0gfD0g
KG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29yZCkpOworICAgIGVsc2UKKyAgICAgICAgd29yZHMo
KVtuIC8gYml0Q291bnRQZXJXb3JkXSAmPSB+KG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29yZCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdl
ci5jcHAKaW5kZXggOTk2MjYxYWRlMWM2NDhkOTc1OTU2NDA0NzEwOTg0ZmQwMGI0N2RkNy4uNjEw
Njc4YTYxNTdjZTdmMjEzZmI2NmI4YzdlZTRhYWQxNzk0ZjEyNyAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvU2NhdmVuZ2VyLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpzY2F2
ZW5nZSgpCiAjaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICAgICAgICAgIHNpemVfdCBk
ZWZlcnJlZERlY29tbWl0cyA9IDA7CiAjZW5kaWYKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
ayhIZWFwOjptdXRleCgpKTsKKyAgICAgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFw
OjptdXRleCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBLaW5kKHN0YXRpY19jYXN0PEhl
YXBLaW5kPihpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk3LDcgKzI5
Nyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQogICAgICAgICBCdWxrRGVj
b21taXQgZGVjb21taXR0ZXI7CiAgICAgICAgIHsKICAgICAgICAgICAgIFByaW50VGltZSBwcmlu
dFRpbWUoIlxucGFydGlhbFNjYXZlbmdlIHVuZGVyIGxvY2sgdGltZSIpOwotICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVlTG9ja0hv
bGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtSGVhcHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQo
c3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC0zNTUsNyArMzU1LDcgQEAgc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFibGVNZW1vcnkoKQog
ewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KEhlYXA6Om11dGV4KCkpOworICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0
ZXgoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7CiAgICAg
ICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399231</attachid>
            <date>2020-05-12 19:24:02 -0700</date>
            <delta_ts>2020-05-12 19:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211809-20200512192402.patch</filename>
            <type>text/plain</type>
            <size>28305</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uNTEyN2I0NDg4M2QzOGNjOWY1Y2E4ZTBmNzlhNDZm
YTc3NzMyNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVU
YWJsZSwgd2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayou
CisgICAgICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJl
c3MuIEFuZCAxYml0IHJlcHJlc2VudHMgMU1CIFZBIHJlZ2lvbiBzaW5jZQorICAgICAgICBDaHVu
ayoncyBzaXplIGlzIGF0IGxlYXN0IDFNQi4gRXZlcnkgdGltZSB3ZSBleHRlbmQgdGhpcyBiaXQt
dmVjdG9yIHRvIHN1cHBvcnQgbGFyZ2VyIFZBIHJlZ2lvbiwKKyAgICAgICAgd2UgZG8gbm90IGZy
ZWUgdGhlIG9sZCBiaXQtdmVjdG9yLiBTaW5jZSB3ZSBhbHdheXMgYWxsb2NhdGUgcG93ZXItb2Yt
MiBzaXplZCBiaXQtdmVjdG9yLCAjIG9mIGV4dGVuc2lvbgorICAgICAgICBpcyBsaW1pdGVkIGFu
ZCBpdCBkb2VzIG5vdCB3YXN0ZSBtZW1vcnkgc28gbXVjaCBiZWNhdXNlIENodW5rJ3Mgc2l6ZSBp
cyBlbm91Z2ggbGFyZ2UgKDFNQikuIFNpbmNlIGVhY2gKKyAgICAgICAgNEtCIHBhZ2Ugb24gbWFj
T1MgY2FuIHJlcHJlc2VudCBhIGJpdC12ZWN0b3IgZm9yIDMyR0IgVkEgcmVnaW9uLCBpbiBwcmFj
dGljZSwgdGhpcyBleHRlbnNpb24gYWxtb3N0IG5ldmVyCisgICAgICAgIGhhcHBlbnMuIEkgZW5z
dXJlZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gaW4gSmV0U3Ry
ZWFtMiBhbmQgR21haWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBi
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYm1hbGxvYy9BbGdv
cml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OnJvdW5kVXBUb1Bvd2VyT2YyKToKKyAgICAgICAg
KiBibWFsbG9jL0RlYWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9y
OjpkZWFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRB
bmRBbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFy
Z2UpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChibWFsbG9j
OjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpzZXQpOgorICAgICAgICAq
IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2Jq
ZWN0VHlwZVRhYmxlOjpjb252ZXJ0VG9JbmRleCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RU
eXBlVGFibGU6OkJpdHM6OkJpdHMpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxl
OjpCaXRzOjpwcmV2aW91cyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFi
bGU6OkJpdHM6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJs
ZTo6Qml0czo6ZW5kIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6
Qml0czo6d29yZHMgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjp3b3Jkcyk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6Ok9iamVjdFR5
cGVUYWJsZSk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OmdldCk6CisgICAg
ICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmdldCk6CisgICAgICAgIChibWFs
bG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OnNldCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2
ZW5nZXIuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpzY2F2ZW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSk6CisgICAgICAgIChibWFs
bG9jOjpTY2F2ZW5nZXI6OmZyZWVhYmxlTWVtb3J5KToKKwogMjAyMC0wNS0xMSAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdW1dURl0g
QWRkIGNvbXB1dGluZyBtZW1vcnkgc2l6ZSBpbXBsZW1lbnRhdGlvbiBmb3IgRnJlZUJTRApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dAppbmRleCBhMjBkNjJlNWQ1Nzk0YWFiMTM0YWYzMDcwNDdlNmIyNWU5YzFj
MjkxLi4zZDk5MGViOWJhOGQzODljNDY0M2QxODAwZjUwMzU5ODRiZDdhODZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFr
ZUxpc3RzLnR4dApAQCAtMjksNiArMjksNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAgYm1h
bGxvYy9Mb2dnaW5nLmNwcAogICAgIGJtYWxsb2MvTXV0ZXguY3BwCiAgICAgYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcAorICAgIGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcAogICAgIGJtYWxsb2Mv
UGVyUHJvY2Vzcy5jcHAKICAgICBibWFsbG9jL1NjYXZlbmdlci5jcHAKICAgICBibWFsbG9jL2Jt
YWxsb2MuY3BwCkBAIC0xMTAsNiArMTExLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hFQURFUlMK
ICAgICBibWFsbG9jL011dGV4LmgKICAgICBibWFsbG9jL09iamVjdC5oCiAgICAgYm1hbGxvYy9P
YmplY3RUeXBlLmgKKyAgICBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5oCiAgICAgYm1hbGxvYy9Q
YWNrZWQuaAogICAgIGJtYWxsb2MvUGVySGVhcEtpbmQuaAogICAgIGJtYWxsb2MvUGVyUHJvY2Vz
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNWE1MzE0NTQ0Yjk0OGYyMmQyZWM2ODUyY2Y0OTdjZGJjYzUxNDMyNC4uNWMyYzNk
NTZkOTc1OWNjMTExZGIzYjNmOTRhZGQzNDg1Yzk2ZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSw4IEBA
CiAJCURFOEIxM0IzMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0Qg
LyogQlZNVGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMUU3NDgwMjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzFFNzQ3RjIyMzhD
QTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQ
YWNrZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc4QTlERjI0NkI2ODcyMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3Bw
ICovOyB9OworCQlFMzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc4QTlERDI0
NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNDEzQzkyMjYwNjExNDAwMzdGNDcwIC8q
IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0E0MTNDODIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0YyNDQwMjIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDEyMjVEMkMwMTAwQTBF
MEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwNDIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Yy
NDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi87IH07CkBAIC0yOTMs
NiArMjk1LDggQEAKIAkJREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQlZNVGFncy5oOyBwYXRoID0gYm1hbGxvYy9CVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQ
ZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0YXRpY1BlclBy
b2Nlc3MuaDsgcGF0aCA9IGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhY2tlZC5oOyBwYXRoID0gYm1hbGxvYy9Q
YWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3OEE5REQyNDZCNjg2QTAw
MjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3RUeXBlVGFi
bGUuaDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT2JqZWN0VHlwZVRhYmxlLmNwcDsgcGF0aCA9IGJtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNB
NDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHBhdGggPSBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2Mv
SXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMzIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmNwcDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hh
cmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTAsNiArNDk0LDgg
QEAKIAkJCQkxNDRCRTExRTFDQTM0NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggKi8sCiAJCQkJMTQx
MDVFODMxOEUxNDM3NDAwM0ExMDZFIC8qIE9iamVjdFR5cGUuY3BwICovLAogCQkJCTE0ODU2NTYw
MThBNDNEQkEwMEVENjk0MiAvKiBPYmplY3RUeXBlLmggKi8sCisJCQkJRTM3OEE5REUyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi8sCisJCQkJRTM3OEE5REQyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovLAogCQkJCTc5NUFCM0M2MjA2RTBEMjUw
MDc0RkU3NiAvKiBQaHlzaWNhbFBhZ2VNYXAuaCAqLywKIAkJCQlBRDE0QUQyNzIwMjUyOUE2MDA4
OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmggKi8sCiAJCQkJQUQxNEFEMjgyMDI1MjlCMDAwODkwRTNC
IC8qIFByb2Nlc3NDaGVjay5tbSAqLywKQEAgLTY0NSw2ICs2NTEsNyBAQAogCQkJCTE0M0NCODFE
MTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTMx
OEY0OEQwRjAwOTUwNzAyIC8qIE9iamVjdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzhB
OUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzc3LDYgKzc4NCw3IEBACiAJCQkJNDQyNkUyODAxQzgzOEVFMDAwOEVCMDQy
IC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzQ0I4MUMxOTAyMkJDOTAwQjE2
QTQ1IC8qIE11dGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM4MThFQTM5OTAwMDhD
MTUyRiAvKiBPYmplY3RUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNzhBOURGMjQ2QjY4
NzIwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NkE3QTUyMDU0ODMxMzAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQxNEFEMkEyMDI1MjlDNzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNUJGMTUyMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCBkMjJmM2NlMDU0NDk1
ZDAyYzBjNTQ5MzNkZDE4YTcxZjg3MDcwMGU5Li5jMzA1Y2Y4NzFmYTc5OWZmNDBlMTdlNWIzMGU5
ODQ5Zjk2YmY4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRo
bS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTIxOSw2ICsy
MTksMTEgQEAgY29uc3RleHByIHVuc2lnbmVkIGdldExTQlNldE5vblplcm9Db25zdGV4cHIoVCB0
KQogICAgIHJldHVybiBjdHpDb25zdGV4cHIodCk7CiB9CiAKK2NvbnN0ZXhwciBzaXplX3Qgcm91
bmRVcFRvUG93ZXJPZjIoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCit7CisgICAgcmV0
dXJuICgoc2l6ZSArIGFsaWdubWVudCAtIDEpICYgLWFsaWdubWVudCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRmMDJmYTg4NTczMGM2NDNm
ZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAxMjNhYzhiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwxNCArNjgsMTYgQEAgdm9p
ZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9iamVjdCkKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhl
YXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmplY3QpKSB7Cisg
ICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVhbGxvY2F0ZUxhcmdlKGxv
Y2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9vYmplY3RM
b2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAgaWYgKG1fb2JqZWN0TG9n
LnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAgICAgIFVuaXF1ZUxvY2tI
b2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vzc09iamVjdExvZyhsb2Nr
KTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNiODZmZTViYjVhNjEyZDE4
Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2FjYWdlU2l6ZSgp
CiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQpKTsKIH0KIAot
c2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQorc2l6ZV90IEhl
YXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIHJldHVybiBtX2Zy
ZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSGVhcDo6bWFya0FsbExh
cmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRpb24ubm90aWZ5
X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBMb2NrSG9s
ZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lk
IEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290cHJpbnQgLT0g
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdl
LnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAgdm9pZCBIZWFwOjpkZWNv
bW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxr
RGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikK
K3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IExvY2tIb2xk
ZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtE
ZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpCiAjZW5kaWYK
IHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29t
bWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2No
dW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0gJm1fY2h1bmtDYWNoZVsw
XSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2NrLCBsaXN0LnBvcCgpLCAm
bGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZvciAoTGFyZ2VSYW5nZSYg
cmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwg
c2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgdm9p
ZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJhbmdlJiByYW5n
ZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0
ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgRmFp
bHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9yeSkgQ2h1bmsocGFnZVNp
emUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RUeXBlOjpTbWFs
bCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5rLCBPYmplY3RUeXBlOjpT
bWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFibGUgPSAwOwogICAgICAg
ICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBhZ2UqIHBhZ2UpIHsKQEAg
LTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVMb2Nr
SG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAgICBtX2ZyZWVQ
YWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVT
bWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykKK3ZvaWQgSGVhcDo6ZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQ2h1bmsqIGNodW5rLCBz
aXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RU
eXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgY2h1bmssIE9iamVjdFR5
cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxvY2F0ZWQucmVt
b3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUgPSBzaXplOwpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShVbmlxdWVMb2NrSG9s
ZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAgICAgIG1fZnJlZVBhZ2Vz
W3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAoIW1fY2h1bmtDYWNoZVtw
YWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKG1f
Y2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOworICAgICAgICAgICAgZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucG9wKCksIHBh
Z2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucHVzaChjaHVuayk7
CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBS
YW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZChtX2tp
bmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhCiAgICAg
ICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBtX29iamVjdFR5cGVzLnNl
dChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9v
YmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdpbigpKSwgT2JqZWN0VHlw
ZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFuZ2UuYmVnaW4oKSwgcmFu
Z2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEgKzYyMSw2IEBAIExhcmdl
UmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgMCwgMCk7CiB9CiAK
LWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQotewot
ICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0KS5jaHVuaygpKSA9PSBP
YmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShVbmlxdWVMb2Nr
SG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdGVkLmdl
dChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2QyMGE2YTcxNzlhYTkwYTg3
NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYwNGQ4YzliNDllZjBjNzQ1
MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1h
cC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQuaCIKICNpbmNsdWRlICJQ
ZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCkBAIC02OSwxOSArNzAs
MTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9s
ZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKICAgICB2b2lk
IGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwogCi0gICAgYm9vbCBp
c0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9vbCBpc0xhcmdlKHZvaWQq
KTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CiAgICAg
dm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2UmLCBzaXplX3Qp
OwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hX
YXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwotICAgIHZvaWQgc2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAg
IHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwogI2Vsc2UK
LSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXpl
X3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKICNlbmRpZgot
ICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYsIHNpemVf
dCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CiAKLSAgICBz
aXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHNpemVfdCBmcmVl
YWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3RwcmludCgpOwog
CiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKQEAgLTkyLDcg
KzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShj
b25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1pdExhcmdlUmFu
Z2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKKyAgICB2
b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIEJ1
bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsxMTgsNyBAQCBjbGFzcyBI
ZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYsIE9i
amVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVM
b2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7Ci0gICAgdm9pZCBk
ZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xhc3MpOworICAgIHZvaWQg
ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwgc2l6ZV90IHBh
Z2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVuayhzaXplX3Qg
YWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxvY2F0ZShVbmlx
dWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CkBA
IC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZvaWQqLCBzaXplX3QsIExh
cmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJnZU1hcCBtX2xhcmdlRnJl
ZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFzaD4gbV9vYmplY3RUeXBl
czsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAogICAgIFNjYXZlbmdlciog
bV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjksMTEgQEAgaW5saW5lIHZv
aWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9i
amVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIG9iamVjdCwgbGlu
ZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2b2lkKiBvYmplY3QpCit7
CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNodW5rKCkpID09
IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRp
ZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlw
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmluZGV4IDFlMmZk
NTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZkMTc1OGQyNzg4YTJjNjYz
ZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNw
cApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYgaGVhcCwgdm9p
ZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBPYmpl
Y3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0
ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkKKyAgICAgICAg
aWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFR5cGU6
OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRh
YmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOTQ1MmU0MzUxYzZjMzYzMTBjMDNjNWI3NTFhMmIwMzg4ZDZh
OWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBl
VGFibGUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCisKKyNpbmNsdWRl
ICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworT2JqZWN0VHlwZVRhYmxl
OjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwordm9pZCBPYmplY3RUeXBl
VGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5rLCBPYmplY3RUeXBlIG9i
amVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0VG9JbmRleChjaHVuayk7
CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRzLT5iZWdpbigpIDw9IGlu
ZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIG5ld0JlZ2lu
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAgICAgaWYgKGJpdHMgPT0g
JnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBpbml0aWFsIGFsbG9jYXRp
b24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IHdvdWxkIGJlIHBvc3NpYmxl
IHRoYXQgdGhlIGZpcnN0IHJlZ2lzdHJhdGlvbiBjb3VsZCBiZQorICAgICAgICAgICAgLy8gcG9z
c2libGUgdGhhdCBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGRpZmZlcmVudCBw
dXJwb3NlLCBhbmQgbGF0ZXIgaXQgd2lsbCBiZSByZXVzZWQgZm9yIGJtYWxsb2MuIEluIHRoYXQg
Y2FzZSwKKyAgICAgICAgICAgIC8vIHNvb24sIHdlIHdpbGwgc2VlIHNtYWxsZXIgaW5kZXggcmVx
dWVzdCB0aGFuIHRoZSBpbml0aWFsIG9uZS4KKyAgICAgICAgICAgIC8vIFdlIGFkZCAxMjhNQiBv
ZmZzZXQgdG8gdGhlIGluaXRpYWwgbmV3QmVnaW4gdG8gY292ZXIgc3VjaCBwYXR0ZXJucyB3aXRo
b3V0IGV4dGVuZGluZyB0YWJsZSB0b28gcXVpY2tseS4KKyAgICAgICAgICAgIG5ld0JlZ2luID0g
c3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCBpbmRleCAtIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6
Yml0Q291bnRQZXJXb3JkICogNCk7CisgICAgICAgICAgICBuZXdFbmQgPSBpbmRleCArIDE7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCBiaXRzLT5iZWdpbigpKSB7CisgICAgICAgICAgICBC
QVNTRVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7
CisgICAgICAgICAgICBuZXdCZWdpbiA9IHN0ZDo6bWluPHVuc2lnbmVkPihpbmRleCwgKGJpdHMt
PmJlZ2luKCkgLSAoYml0cy0+ZW5kKCkgLSBiaXRzLT5iZWdpbigpKSkpOworICAgICAgICAgICAg
bmV3RW5kID0gYml0cy0+ZW5kKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBCQVNT
RVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7Cisg
ICAgICAgICAgICBuZXdCZWdpbiA9IGJpdHMtPmJlZ2luKCk7CisgICAgICAgICAgICBuZXdFbmQg
PSBzdGQ6Om1heDx1bnNpZ25lZD4oaW5kZXggKyAxLCBiaXRzLT5lbmQoKSArIChiaXRzLT5lbmQo
KSAtIGJpdHMtPmJlZ2luKCkpKTsKKyAgICAgICAgfQorICAgICAgICBCQVNTRVJUKG5ld0VuZCA+
IG5ld0JlZ2luKTsKKworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IG5ld0VuZCAtIG5ld0JlZ2lu
OworICAgICAgICBzaXplX3Qgc2l6ZSA9IHZtU2l6ZShzaXplb2YoQml0cykgKyAocm91bmRVcFRv
TXVsdGlwbGVPZjxzaXplX3Q+KE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3Jk
LCBjb3VudCkgLyA4KSk7CisgICAgICAgIEJBU1NFUlQoaXNQb3dlck9mMihzaXplKSk7CisgICAg
ICAgIHNpemUgPSByb3VuZFVwVG9Qb3dlck9mMihzaXplLCB2bVBhZ2VTaXplKCkpOworICAgICAg
ICBuZXdFbmQgPSBuZXdCZWdpbiArICgoc2l6ZSAtIHNpemVvZihCaXRzKSkgLyBzaXplb2YoT2Jq
ZWN0VHlwZVRhYmxlOjpCaXRzOjpXb3JkVHlwZSkpICogT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpi
aXRDb3VudFBlcldvcmQ7CisgICAgICAgIEJBU1NFUlQobmV3RW5kID4gbmV3QmVnaW4pOworICAg
ICAgICB2b2lkKiBhbGxvY2F0ZWQgPSB2bUFsbG9jYXRlKHNpemUpOworICAgICAgICBtZW1zZXQo
YWxsb2NhdGVkLCAwLCBzaXplKTsKKyAgICAgICAgYXV0byogbmV3Qml0cyA9IG5ldyAoYWxsb2Nh
dGVkKSBCaXRzKGJpdHMsIG5ld0JlZ2luLCBuZXdFbmQpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gYml0cy0+YmVnaW4oKTsgaW5kZXggPCBiaXRzLT5lbmQoKTsgKytpbmRleCkKKyAg
ICAgICAgICAgIG5ld0JpdHMtPnNldChpbmRleCwgYml0cy0+Z2V0KGluZGV4KSk7CisgICAgICAg
IHN0ZDo6YXRvbWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgLy8g
RW5zdXJlIHRhYmxlIGdldHMgdmFsaWQgd2hlbiBpdCBpcyB2aXNpYmxlIHRvIHRoZSBvdGhlciB0
aHJlYWRzIHNpbmNlIE9iamVjdFR5cGVUYWJsZTo6Z2V0IGRvZXMgbm90IHRha2UgYSBsb2NrLgor
ICAgICAgICBtX2JpdHMgPSBuZXdCaXRzOworICAgICAgICBiaXRzID0gbmV3Qml0czsKKyAgICB9
CisgICAgYm9vbCB2YWx1ZSA9ICEhc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxP
YmplY3RUeXBlPj4ob2JqZWN0VHlwZSk7CisgICAgQkFTU0VSVChzdGF0aWNfY2FzdDxPYmplY3RU
eXBlPih2YWx1ZSkgPT0gb2JqZWN0VHlwZSk7CisgICAgYml0cy0+c2V0KGluZGV4LCB2YWx1ZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGVUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYTI5OWYxMWI2NmZjYWRkNzJjYTNmZTBiYzBjNzg0
OTMxMDVlMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGVUYWJsZS5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNdXRleC5oIgor
I2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKKyNpbmNsdWRlICJTaXplcy5oIgorCituYW1lc3BhY2Ug
Ym1hbGxvYyB7CisKK2NsYXNzIENodW5rOworCisvLyBRdWVyeWluZyBPYmplY3RUeXBlIGZvciBD
aHVuayB3aXRob3V0IGxvY2tpbmcuCitjbGFzcyBPYmplY3RUeXBlVGFibGUgeworcHVibGljOgor
ICAgIE9iamVjdFR5cGVUYWJsZSgpOworCisgICAgc3RhdGljX2Fzc2VydChCT1NfRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEggIT0gNjQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hp
ZnRBbW91bnQgPSAyMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBhZGRyZXNzTWFz
ayA9ICgxVUxMIDw8IEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAxOworICAgIHN0YXRp
Y19hc3NlcnQoKDFVTEwgPDwgc2hpZnRBbW91bnQpID09IGNodW5rU2l6ZSk7CisgICAgc3RhdGlj
X2Fzc2VydCgoQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIC0gc2hpZnRBbW91bnQpIDw9IDMy
KTsKKworICAgIGNsYXNzIEJpdHM7CisKKyAgICBPYmplY3RUeXBlIGdldChDaHVuayopOworICAg
IHZvaWQgc2V0KFVuaXF1ZUxvY2tIb2xkZXImLCBDaHVuayosIE9iamVjdFR5cGUpOworCitwcml2
YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBjb252ZXJ0VG9JbmRleChDaHVuayogY2h1bmspCisg
ICAgeworICAgICAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjaHVuayk7CisgICAgICAgIEJBU1NFUlQoIShhZGRyZXNzICYgKH5jaHVua01hc2spKSk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKGFkZHJlc3MgJiBhZGRyZXNz
TWFzaykgPj4gc2hpZnRBbW91bnQpOworICAgIH0KKworICAgIEJpdHMqIG1fYml0czsKK307CisK
K2NsYXNzIE9iamVjdFR5cGVUYWJsZTo6Qml0cyB7CitwdWJsaWM6CisgICAgdXNpbmcgV29yZFR5
cGUgPSB1bnNpZ25lZDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdENvdW50UGVy
V29yZCA9IHNpemVvZihXb3JkVHlwZSkgKiA4OworICAgIHN0YXRpYyBjb25zdGV4cHIgV29yZFR5
cGUgb25lID0gMTsKKyAgICBjb25zdGV4cHIgQml0cyhCaXRzKiBwcmV2aW91cywgdW5zaWduZWQg
YmVnaW4sIHVuc2lnbmVkIGVuZCkKKyAgICAgICAgOiBtX3ByZXZpb3VzKHByZXZpb3VzKQorICAg
ICAgICAsIG1fYmVnaW4oYmVnaW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGdldCh1bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIGJvb2wpOworCisgICAgQml0cyogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3By
ZXZpb3VzOyB9CisgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9
CisgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKworcHJpdmF0ZToK
KyAgICBjb25zdCBXb3JkVHlwZSogd29yZHMoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEJp
dHMqPih0aGlzKS0+d29yZHMoKTsgfQorICAgIFdvcmRUeXBlKiB3b3JkcygpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V29yZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhp
cykgKyBzaXplb2YoQml0cykpOyB9CisKKyAgICBCaXRzKiBtX3ByZXZpb3VzIHsgbnVsbHB0ciB9
OyAvLyBLZWVwaW5nIHRoZSBwcmV2aW91cyBCaXRzKiBqdXN0IHRvIHN1cHByZXNzIExlYWtzIHdh
cm5pbmdzLgorICAgIHVuc2lnbmVkIG1fYmVnaW4geyAwIH07CisgICAgdW5zaWduZWQgbV9lbmQg
eyAwIH07Cit9Oworc3RhdGljX2Fzc2VydCghKHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJpdHMp
ICUgc2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUpKSk7CisKK2V4dGVybiBC
RVhQT1JUIE9iamVjdFR5cGVUYWJsZTo6Qml0cyBzZW50aW5lbEJpdHM7CisKK2lubGluZSBPYmpl
Y3RUeXBlVGFibGU6Ok9iamVjdFR5cGVUYWJsZSgpCisgICAgOiBtX2JpdHMoJnNlbnRpbmVsQml0
cykKK3sKK30KKworaW5saW5lIE9iamVjdFR5cGUgT2JqZWN0VHlwZVRhYmxlOjpnZXQoQ2h1bmsq
IGNodW5rKQoreworICAgIEJpdHMqIGJpdHMgPSBtX2JpdHM7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBjb252ZXJ0VG9JbmRleChjaHVuayk7CisgICAgQkFTU0VSVChiaXRzKTsKKyAgICBpZiAoYml0
cy0+YmVnaW4oKSA8PSBpbmRleCAmJiBpbmRleCA8IGJpdHMtPmVuZCgpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8T2JqZWN0VHlwZT4oYml0cy0+Z2V0KGluZGV4KSk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworaW5saW5lIGJvb2wgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQodW5zaWdu
ZWQgaW5kZXgpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICByZXR1
cm4gd29yZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmIChvbmUgPDwgKG4gJSBiaXRDb3VudFBl
cldvcmQpKTsKK30KKworaW5saW5lIHZvaWQgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzZXQodW5z
aWduZWQgaW5kZXgsIGJvb2wgdmFsdWUpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVn
aW4oKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHdvcmRzKClbbiAvIGJpdENvdW50UGVyV29y
ZF0gfD0gKG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29yZCkpOworICAgIGVsc2UKKyAgICAgICAg
d29yZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmPSB+KG9uZSA8PCAobiAlIGJpdENvdW50UGVy
V29yZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nj
YXZlbmdlci5jcHAKaW5kZXggOTk2MjYxYWRlMWM2NDhkOTc1OTU2NDA0NzEwOTg0ZmQwMGI0N2Rk
Ny4uNjEwNjc4YTYxNTdjZTdmMjEzZmI2NmI4YzdlZTRhYWQxNzk0ZjEyNyAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2NhdmVuZ2VyLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2NhdmVuZ2Vy
OjpzY2F2ZW5nZSgpCiAjaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICAgICAgICAgIHNp
emVfdCBkZWZlcnJlZERlY29tbWl0cyA9IDA7CiAjZW5kaWYKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICAgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9j
ayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBz
OyBpLS07KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBLaW5kKHN0YXRpY19j
YXN0PEhlYXBLaW5kPihpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk3
LDcgKzI5Nyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQogICAgICAgICBC
dWxrRGVjb21taXQgZGVjb21taXR0ZXI7CiAgICAgICAgIHsKICAgICAgICAgICAgIFByaW50VGlt
ZSBwcmludFRpbWUoIlxucGFydGlhbFNjYXZlbmdlIHVuZGVyIGxvY2sgdGltZSIpOwotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVl
TG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtSGVhcHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVh
cEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CkBAIC0zNTUsNyArMzU1LDcgQEAgc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFibGVNZW1v
cnkoKQogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVh
cDo6bXV0ZXgoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7
CiAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+
KGkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399232</attachid>
            <date>2020-05-12 19:41:07 -0700</date>
            <delta_ts>2020-05-12 21:11:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211809-20200512194106.patch</filename>
            <type>text/plain</type>
            <size>28307</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uNTEyN2I0NDg4M2QzOGNjOWY1Y2E4ZTBmNzlhNDZm
YTc3NzMyNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVU
YWJsZSwgd2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayou
CisgICAgICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJl
c3MuIEFuZCAxYml0IHJlcHJlc2VudHMgMU1CIFZBIHJlZ2lvbiBzaW5jZQorICAgICAgICBDaHVu
ayoncyBzaXplIGlzIGF0IGxlYXN0IDFNQi4gRXZlcnkgdGltZSB3ZSBleHRlbmQgdGhpcyBiaXQt
dmVjdG9yIHRvIHN1cHBvcnQgbGFyZ2VyIFZBIHJlZ2lvbiwKKyAgICAgICAgd2UgZG8gbm90IGZy
ZWUgdGhlIG9sZCBiaXQtdmVjdG9yLiBTaW5jZSB3ZSBhbHdheXMgYWxsb2NhdGUgcG93ZXItb2Yt
MiBzaXplZCBiaXQtdmVjdG9yLCAjIG9mIGV4dGVuc2lvbgorICAgICAgICBpcyBsaW1pdGVkIGFu
ZCBpdCBkb2VzIG5vdCB3YXN0ZSBtZW1vcnkgc28gbXVjaCBiZWNhdXNlIENodW5rJ3Mgc2l6ZSBp
cyBlbm91Z2ggbGFyZ2UgKDFNQikuIFNpbmNlIGVhY2gKKyAgICAgICAgNEtCIHBhZ2Ugb24gbWFj
T1MgY2FuIHJlcHJlc2VudCBhIGJpdC12ZWN0b3IgZm9yIDMyR0IgVkEgcmVnaW9uLCBpbiBwcmFj
dGljZSwgdGhpcyBleHRlbnNpb24gYWxtb3N0IG5ldmVyCisgICAgICAgIGhhcHBlbnMuIEkgZW5z
dXJlZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gaW4gSmV0U3Ry
ZWFtMiBhbmQgR21haWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBi
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYm1hbGxvYy9BbGdv
cml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OnJvdW5kVXBUb1Bvd2VyT2YyKToKKyAgICAgICAg
KiBibWFsbG9jL0RlYWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9y
OjpkZWFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRB
bmRBbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFy
Z2UpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChibWFsbG9j
OjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpzZXQpOgorICAgICAgICAq
IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2Jq
ZWN0VHlwZVRhYmxlOjpjb252ZXJ0VG9JbmRleCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RU
eXBlVGFibGU6OkJpdHM6OkJpdHMpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxl
OjpCaXRzOjpwcmV2aW91cyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFi
bGU6OkJpdHM6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJs
ZTo6Qml0czo6ZW5kIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6
Qml0czo6d29yZHMgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjp3b3Jkcyk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6Ok9iamVjdFR5
cGVUYWJsZSk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OmdldCk6CisgICAg
ICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmdldCk6CisgICAgICAgIChibWFs
bG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OnNldCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2
ZW5nZXIuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpzY2F2ZW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSk6CisgICAgICAgIChibWFs
bG9jOjpTY2F2ZW5nZXI6OmZyZWVhYmxlTWVtb3J5KToKKwogMjAyMC0wNS0xMSAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdW1dURl0g
QWRkIGNvbXB1dGluZyBtZW1vcnkgc2l6ZSBpbXBsZW1lbnRhdGlvbiBmb3IgRnJlZUJTRApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dAppbmRleCBhMjBkNjJlNWQ1Nzk0YWFiMTM0YWYzMDcwNDdlNmIyNWU5YzFj
MjkxLi4zZDk5MGViOWJhOGQzODljNDY0M2QxODAwZjUwMzU5ODRiZDdhODZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFr
ZUxpc3RzLnR4dApAQCAtMjksNiArMjksNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAgYm1h
bGxvYy9Mb2dnaW5nLmNwcAogICAgIGJtYWxsb2MvTXV0ZXguY3BwCiAgICAgYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcAorICAgIGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcAogICAgIGJtYWxsb2Mv
UGVyUHJvY2Vzcy5jcHAKICAgICBibWFsbG9jL1NjYXZlbmdlci5jcHAKICAgICBibWFsbG9jL2Jt
YWxsb2MuY3BwCkBAIC0xMTAsNiArMTExLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hFQURFUlMK
ICAgICBibWFsbG9jL011dGV4LmgKICAgICBibWFsbG9jL09iamVjdC5oCiAgICAgYm1hbGxvYy9P
YmplY3RUeXBlLmgKKyAgICBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5oCiAgICAgYm1hbGxvYy9Q
YWNrZWQuaAogICAgIGJtYWxsb2MvUGVySGVhcEtpbmQuaAogICAgIGJtYWxsb2MvUGVyUHJvY2Vz
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNWE1MzE0NTQ0Yjk0OGYyMmQyZWM2ODUyY2Y0OTdjZGJjYzUxNDMyNC4uNWMyYzNk
NTZkOTc1OWNjMTExZGIzYjNmOTRhZGQzNDg1Yzk2ZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSw4IEBA
CiAJCURFOEIxM0IzMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0Qg
LyogQlZNVGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMUU3NDgwMjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzFFNzQ3RjIyMzhD
QTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQ
YWNrZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc4QTlERjI0NkI2ODcyMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3Bw
ICovOyB9OworCQlFMzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc4QTlERDI0
NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNDEzQzkyMjYwNjExNDAwMzdGNDcwIC8q
IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0E0MTNDODIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0YyNDQwMjIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDEyMjVEMkMwMTAwQTBF
MEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwNDIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Yy
NDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi87IH07CkBAIC0yOTMs
NiArMjk1LDggQEAKIAkJREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQlZNVGFncy5oOyBwYXRoID0gYm1hbGxvYy9CVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQ
ZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0YXRpY1BlclBy
b2Nlc3MuaDsgcGF0aCA9IGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhY2tlZC5oOyBwYXRoID0gYm1hbGxvYy9Q
YWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3OEE5REQyNDZCNjg2QTAw
MjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3RUeXBlVGFi
bGUuaDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT2JqZWN0VHlwZVRhYmxlLmNwcDsgcGF0aCA9IGJtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNB
NDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHBhdGggPSBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2Mv
SXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMzIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmNwcDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hh
cmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTAsNiArNDk0LDgg
QEAKIAkJCQkxNDRCRTExRTFDQTM0NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggKi8sCiAJCQkJMTQx
MDVFODMxOEUxNDM3NDAwM0ExMDZFIC8qIE9iamVjdFR5cGUuY3BwICovLAogCQkJCTE0ODU2NTYw
MThBNDNEQkEwMEVENjk0MiAvKiBPYmplY3RUeXBlLmggKi8sCisJCQkJRTM3OEE5REUyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi8sCisJCQkJRTM3OEE5REQyNDZCNjg2
QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oICovLAogCQkJCTc5NUFCM0M2MjA2RTBEMjUw
MDc0RkU3NiAvKiBQaHlzaWNhbFBhZ2VNYXAuaCAqLywKIAkJCQlBRDE0QUQyNzIwMjUyOUE2MDA4
OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmggKi8sCiAJCQkJQUQxNEFEMjgyMDI1MjlCMDAwODkwRTNC
IC8qIFByb2Nlc3NDaGVjay5tbSAqLywKQEAgLTY0NSw2ICs2NTEsNyBAQAogCQkJCTE0M0NCODFE
MTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYx
Q0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTMx
OEY0OEQwRjAwOTUwNzAyIC8qIE9iamVjdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzhB
OUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzc3LDYgKzc4NCw3IEBACiAJCQkJNDQyNkUyODAxQzgzOEVFMDAwOEVCMDQy
IC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzQ0I4MUMxOTAyMkJDOTAwQjE2
QTQ1IC8qIE11dGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM4MThFQTM5OTAwMDhD
MTUyRiAvKiBPYmplY3RUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNzhBOURGMjQ2QjY4
NzIwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NkE3QTUyMDU0ODMxMzAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQxNEFEMkEyMDI1MjlDNzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNUJGMTUyMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCBkMjJmM2NlMDU0NDk1
ZDAyYzBjNTQ5MzNkZDE4YTcxZjg3MDcwMGU5Li5jMzA1Y2Y4NzFmYTc5OWZmNDBlMTdlNWIzMGU5
ODQ5Zjk2YmY4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRo
bS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTIxOSw2ICsy
MTksMTEgQEAgY29uc3RleHByIHVuc2lnbmVkIGdldExTQlNldE5vblplcm9Db25zdGV4cHIoVCB0
KQogICAgIHJldHVybiBjdHpDb25zdGV4cHIodCk7CiB9CiAKK2NvbnN0ZXhwciBzaXplX3Qgcm91
bmRVcFRvUG93ZXJPZjIoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCit7CisgICAgcmV0
dXJuICgoc2l6ZSArIGFsaWdubWVudCAtIDEpICYgLWFsaWdubWVudCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRmMDJmYTg4NTczMGM2NDNm
ZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAxMjNhYzhiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwxNCArNjgsMTYgQEAgdm9p
ZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9iamVjdCkKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhl
YXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmplY3QpKSB7Cisg
ICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVhbGxvY2F0ZUxhcmdlKGxv
Y2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9vYmplY3RM
b2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAgaWYgKG1fb2JqZWN0TG9n
LnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAgICAgIFVuaXF1ZUxvY2tI
b2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vzc09iamVjdExvZyhsb2Nr
KTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNiODZmZTViYjVhNjEyZDE4
Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2FjYWdlU2l6ZSgp
CiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQpKTsKIH0KIAot
c2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQorc2l6ZV90IEhl
YXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIHJldHVybiBtX2Zy
ZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSGVhcDo6bWFya0FsbExh
cmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRpb24ubm90aWZ5
X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBMb2NrSG9s
ZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lk
IEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290cHJpbnQgLT0g
cmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdl
LnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAgdm9pZCBIZWFwOjpkZWNv
bW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxr
RGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikK
K3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IExvY2tIb2xk
ZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtE
ZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpCiAjZW5kaWYK
IHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29t
bWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2No
dW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0gJm1fY2h1bmtDYWNoZVsw
XSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2NrLCBsaXN0LnBvcCgpLCAm
bGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZvciAoTGFyZ2VSYW5nZSYg
cmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSGVhcDo6c2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwg
c2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgdm9p
ZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJhbmdlJiByYW5n
ZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0
ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgRmFp
bHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9yeSkgQ2h1bmsocGFnZVNp
emUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RUeXBlOjpTbWFs
bCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5rLCBPYmplY3RUeXBlOjpT
bWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFibGUgPSAwOwogICAgICAg
ICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBhZ2UqIHBhZ2UpIHsKQEAg
LTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVMb2Nr
SG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAgICBtX2ZyZWVQ
YWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVT
bWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykKK3ZvaWQgSGVhcDo6ZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQ2h1bmsqIGNodW5rLCBz
aXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RU
eXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgY2h1bmssIE9iamVjdFR5
cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxvY2F0ZWQucmVt
b3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUgPSBzaXplOwpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShVbmlxdWVMb2NrSG9s
ZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAgICAgIG1fZnJlZVBhZ2Vz
W3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAoIW1fY2h1bmtDYWNoZVtw
YWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKG1f
Y2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOworICAgICAgICAgICAgZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucG9wKCksIHBh
Z2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucHVzaChjaHVuayk7
CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBS
YW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKFVuaXF1
ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZChtX2tp
bmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhCiAgICAg
ICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBtX29iamVjdFR5cGVzLnNl
dChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9v
YmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdpbigpKSwgT2JqZWN0VHlw
ZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFuZ2UuYmVnaW4oKSwgcmFu
Z2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEgKzYyMSw2IEBAIExhcmdl
UmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgMCwgMCk7CiB9CiAK
LWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQotewot
ICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0KS5jaHVuaygpKSA9PSBP
YmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShVbmlxdWVMb2Nr
SG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdGVkLmdl
dChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2QyMGE2YTcxNzlhYTkwYTg3
NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYwNGQ4YzliNDllZjBjNzQ1
MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1h
cC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQuaCIKICNpbmNsdWRlICJQ
ZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCkBAIC02OSwxOSArNzAs
MTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9s
ZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKICAgICB2b2lk
IGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwogCi0gICAgYm9vbCBp
c0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9vbCBpc0xhcmdlKHZvaWQq
KTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CiAgICAg
dm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2UmLCBzaXplX3Qp
OwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hX
YXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwotICAgIHZvaWQgc2Nh
dmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAg
IHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwogI2Vsc2UK
LSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXpl
X3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKICNlbmRpZgot
ICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYsIHNpemVf
dCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CiAKLSAgICBz
aXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHNpemVfdCBmcmVl
YWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3RwcmludCgpOwog
CiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKQEAgLTkyLDcg
KzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShj
b25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1pdExhcmdlUmFu
Z2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKKyAgICB2
b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIEJ1
bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsxMTgsNyBAQCBjbGFzcyBI
ZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYsIE9i
amVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVuayhVbmlxdWVM
b2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7Ci0gICAgdm9pZCBk
ZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xhc3MpOworICAgIHZvaWQg
ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwgc2l6ZV90IHBh
Z2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVuayhzaXplX3Qg
YWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxvY2F0ZShVbmlx
dWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CkBA
IC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZvaWQqLCBzaXplX3QsIExh
cmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJnZU1hcCBtX2xhcmdlRnJl
ZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFzaD4gbV9vYmplY3RUeXBl
czsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAogICAgIFNjYXZlbmdlciog
bV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjksMTEgQEAgaW5saW5lIHZv
aWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgT2JqZWN0IG9i
amVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIG9iamVjdCwgbGlu
ZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2b2lkKiBvYmplY3QpCit7
CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNodW5rKCkpID09
IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRp
ZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlw
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmluZGV4IDFlMmZk
NTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZkMTc1OGQyNzg4YTJjNjYz
ZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNw
cApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYgaGVhcCwgdm9p
ZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBPYmpl
Y3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0
ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkKKyAgICAgICAg
aWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFR5cGU6
OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRh
YmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQxZmM2MTNkMWVmMWZmOTM2MmIwZDJkNDMzMjIxOGM0OGQ1
YzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBl
VGFibGUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCisKKyNpbmNsdWRl
ICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworT2JqZWN0VHlwZVRhYmxl
OjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwordm9pZCBPYmplY3RUeXBl
VGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5rLCBPYmplY3RUeXBlIG9i
amVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0VG9JbmRleChjaHVuayk7
CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRzLT5iZWdpbigpIDw9IGlu
ZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIG5ld0JlZ2lu
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAgICAgaWYgKGJpdHMgPT0g
JnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBpbml0aWFsIGFsbG9jYXRp
b24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IHdvdWxkIGJlIHBvc3NpYmxl
IHRoYXQgdGhlIGZpcnN0IHJlZ2lzdHJhdGlvbiBjb3VsZCBiZQorICAgICAgICAgICAgLy8gcG9z
c2libGUgdGhhdCBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGRpZmZlcmVudCBw
dXJwb3NlLCBhbmQgbGF0ZXIgaXQgd2lsbCBiZSByZXVzZWQgZm9yIGJtYWxsb2MuIEluIHRoYXQg
Y2FzZSwKKyAgICAgICAgICAgIC8vIHNvb24sIHdlIHdpbGwgc2VlIHNtYWxsZXIgaW5kZXggcmVx
dWVzdCB0aGFuIHRoZSBpbml0aWFsIG9uZS4KKyAgICAgICAgICAgIC8vIFdlIGFkZCAxMjhNQiBv
ZmZzZXQgdG8gdGhlIGluaXRpYWwgbmV3QmVnaW4gdG8gY292ZXIgc3VjaCBwYXR0ZXJucyB3aXRo
b3V0IGV4dGVuZGluZyB0YWJsZSB0b28gcXVpY2tseS4KKyAgICAgICAgICAgIG5ld0JlZ2luID0g
c3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCBpbmRleCAtIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6
Yml0Q291bnRQZXJXb3JkICogNCk7CisgICAgICAgICAgICBuZXdFbmQgPSBpbmRleCArIDE7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCBiaXRzLT5iZWdpbigpKSB7CisgICAgICAgICAgICBC
QVNTRVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7
CisgICAgICAgICAgICBuZXdCZWdpbiA9IHN0ZDo6bWluPHVuc2lnbmVkPihpbmRleCwgKGJpdHMt
PmJlZ2luKCkgLSAoYml0cy0+ZW5kKCkgLSBiaXRzLT5iZWdpbigpKSkpOworICAgICAgICAgICAg
bmV3RW5kID0gYml0cy0+ZW5kKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBCQVNT
RVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7Cisg
ICAgICAgICAgICBuZXdCZWdpbiA9IGJpdHMtPmJlZ2luKCk7CisgICAgICAgICAgICBuZXdFbmQg
PSBzdGQ6Om1heDx1bnNpZ25lZD4oaW5kZXggKyAxLCBiaXRzLT5lbmQoKSArIChiaXRzLT5lbmQo
KSAtIGJpdHMtPmJlZ2luKCkpKTsKKyAgICAgICAgfQorICAgICAgICBCQVNTRVJUKG5ld0VuZCA+
IG5ld0JlZ2luKTsKKworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IG5ld0VuZCAtIG5ld0JlZ2lu
OworICAgICAgICBzaXplX3Qgc2l6ZSA9IHZtU2l6ZShzaXplb2YoQml0cykgKyAocm91bmRVcFRv
TXVsdGlwbGVPZjxzaXplX3Q+KE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3Jk
LCBjb3VudCkgLyA4KSk7CisgICAgICAgIEJBU1NFUlQoaXNQb3dlck9mVHdvKHNpemUpKTsKKyAg
ICAgICAgc2l6ZSA9IHJvdW5kVXBUb1Bvd2VyT2YyKHNpemUsIHZtUGFnZVNpemUoKSk7CisgICAg
ICAgIG5ld0VuZCA9IG5ld0JlZ2luICsgKChzaXplIC0gc2l6ZW9mKEJpdHMpKSAvIHNpemVvZihP
YmplY3RUeXBlVGFibGU6OkJpdHM6OldvcmRUeXBlKSkgKiBPYmplY3RUeXBlVGFibGU6OkJpdHM6
OmJpdENvdW50UGVyV29yZDsKKyAgICAgICAgQkFTU0VSVChuZXdFbmQgPiBuZXdCZWdpbik7Cisg
ICAgICAgIHZvaWQqIGFsbG9jYXRlZCA9IHZtQWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIG1lbXNl
dChhbGxvY2F0ZWQsIDAsIHNpemUpOworICAgICAgICBhdXRvKiBuZXdCaXRzID0gbmV3IChhbGxv
Y2F0ZWQpIEJpdHMoYml0cywgbmV3QmVnaW4sIG5ld0VuZCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSBiaXRzLT5iZWdpbigpOyBpbmRleCA8IGJpdHMtPmVuZCgpOyArK2luZGV4KQor
ICAgICAgICAgICAgbmV3Qml0cy0+c2V0KGluZGV4LCBiaXRzLT5nZXQoaW5kZXgpKTsKKyAgICAg
ICAgc3RkOjphdG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpOyAv
LyBFbnN1cmUgdGFibGUgZ2V0cyB2YWxpZCB3aGVuIGl0IGlzIHZpc2libGUgdG8gdGhlIG90aGVy
IHRocmVhZHMgc2luY2UgT2JqZWN0VHlwZVRhYmxlOjpnZXQgZG9lcyBub3QgdGFrZSBhIGxvY2su
CisgICAgICAgIG1fYml0cyA9IG5ld0JpdHM7CisgICAgICAgIGJpdHMgPSBuZXdCaXRzOworICAg
IH0KKyAgICBib29sIHZhbHVlID0gISFzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90
PE9iamVjdFR5cGU+PihvYmplY3RUeXBlKTsKKyAgICBCQVNTRVJUKHN0YXRpY19jYXN0PE9iamVj
dFR5cGU+KHZhbHVlKSA9PSBvYmplY3RUeXBlKTsKKyAgICBiaXRzLT5zZXQoaW5kZXgsIHZhbHVl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFhMjk5ZjExYjY2ZmNhZGQ3MmNhM2ZlMGJjMGM3
ODQ5MzEwNWUyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk11dGV4Lmgi
CisjaW5jbHVkZSAiT2JqZWN0VHlwZS5oIgorI2luY2x1ZGUgIlNpemVzLmgiCisKK25hbWVzcGFj
ZSBibWFsbG9jIHsKKworY2xhc3MgQ2h1bms7CisKKy8vIFF1ZXJ5aW5nIE9iamVjdFR5cGUgZm9y
IENodW5rIHdpdGhvdXQgbG9ja2luZy4KK2NsYXNzIE9iamVjdFR5cGVUYWJsZSB7CitwdWJsaWM6
CisgICAgT2JqZWN0VHlwZVRhYmxlKCk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJPU19FRkZFQ1RJ
VkVfQUREUkVTU19XSURUSCAhPSA2NCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBz
aGlmdEFtb3VudCA9IDIwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGFkZHJlc3NN
YXNrID0gKDFVTEwgPDwgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDE7CisgICAgc3Rh
dGljX2Fzc2VydCgoMVVMTCA8PCBzaGlmdEFtb3VudCkgPT0gY2h1bmtTaXplKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KChCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggLSBzaGlmdEFtb3VudCkgPD0g
MzIpOworCisgICAgY2xhc3MgQml0czsKKworICAgIE9iamVjdFR5cGUgZ2V0KENodW5rKik7Cisg
ICAgdm9pZCBzZXQoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwgT2JqZWN0VHlwZSk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIHVuc2lnbmVkIGNvbnZlcnRUb0luZGV4KENodW5rKiBjaHVuaykK
KyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNodW5rKTsKKyAgICAgICAgQkFTU0VSVCghKGFkZHJlc3MgJiAofmNodW5rTWFzaykp
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPigoYWRkcmVzcyAmIGFkZHJl
c3NNYXNrKSA+PiBzaGlmdEFtb3VudCk7CisgICAgfQorCisgICAgQml0cyogbV9iaXRzOworfTsK
KworY2xhc3MgT2JqZWN0VHlwZVRhYmxlOjpCaXRzIHsKK3B1YmxpYzoKKyAgICB1c2luZyBXb3Jk
VHlwZSA9IHVuc2lnbmVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0Q291bnRQ
ZXJXb3JkID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBXb3Jk
VHlwZSBvbmUgPSAxOworICAgIGNvbnN0ZXhwciBCaXRzKEJpdHMqIHByZXZpb3VzLCB1bnNpZ25l
ZCBiZWdpbiwgdW5zaWduZWQgZW5kKQorICAgICAgICA6IG1fcHJldmlvdXMocHJldmlvdXMpCisg
ICAgICAgICwgbV9iZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAg
IH0KKworICAgIGJvb2wgZ2V0KHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIHNldCh1bnNpZ25l
ZCBpbmRleCwgYm9vbCk7CisKKyAgICBCaXRzKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJldmlvdXM7IH0KKyAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47
IH0KKyAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorCitwcml2YXRl
OgorICAgIGNvbnN0IFdvcmRUeXBlKiB3b3JkcygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
Qml0cyo+KHRoaXMpLT53b3JkcygpOyB9CisgICAgV29yZFR5cGUqIHdvcmRzKCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXb3JkVHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSArIHNpemVvZihCaXRzKSk7IH0KKworICAgIEJpdHMqIG1fcHJldmlvdXMgeyBudWxscHRy
IH07IC8vIEtlZXBpbmcgdGhlIHByZXZpb3VzIEJpdHMqIGp1c3QgdG8gc3VwcHJlc3MgTGVha3Mg
d2FybmluZ3MuCisgICAgdW5zaWduZWQgbV9iZWdpbiB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2Vu
ZCB7IDAgfTsKK307CitzdGF0aWNfYXNzZXJ0KCEoc2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0
cykgJSBzaXplb2YoT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpXb3JkVHlwZSkpKTsKKworZXh0ZXJu
IEJFWFBPUlQgT2JqZWN0VHlwZVRhYmxlOjpCaXRzIHNlbnRpbmVsQml0czsKKworaW5saW5lIE9i
amVjdFR5cGVUYWJsZTo6T2JqZWN0VHlwZVRhYmxlKCkKKyAgICA6IG1fYml0cygmc2VudGluZWxC
aXRzKQoreworfQorCitpbmxpbmUgT2JqZWN0VHlwZSBPYmplY3RUeXBlVGFibGU6OmdldChDaHVu
ayogY2h1bmspCit7CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IGNvbnZlcnRUb0luZGV4KGNodW5rKTsKKyAgICBCQVNTRVJUKGJpdHMpOworICAgIGlmIChi
aXRzLT5iZWdpbigpIDw9IGluZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxPYmplY3RUeXBlPihiaXRzLT5nZXQoaW5kZXgpKTsKKyAgICByZXR1
cm4geyB9OworfQorCitpbmxpbmUgYm9vbCBPYmplY3RUeXBlVGFibGU6OkJpdHM6OmdldCh1bnNp
Z25lZCBpbmRleCkKK3sKKyAgICB1bnNpZ25lZCBuID0gaW5kZXggLSBiZWdpbigpOworICAgIHJl
dHVybiB3b3JkcygpW24gLyBiaXRDb3VudFBlcldvcmRdICYgKG9uZSA8PCAobiAlIGJpdENvdW50
UGVyV29yZCkpOworfQorCitpbmxpbmUgdm9pZCBPYmplY3RUeXBlVGFibGU6OkJpdHM6OnNldCh1
bnNpZ25lZCBpbmRleCwgYm9vbCB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBuID0gaW5kZXggLSBi
ZWdpbigpOworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgd29yZHMoKVtuIC8gYml0Q291bnRQZXJX
b3JkXSB8PSAob25lIDw8IChuICUgYml0Q291bnRQZXJXb3JkKSk7CisgICAgZWxzZQorICAgICAg
ICB3b3JkcygpW24gLyBiaXRDb3VudFBlcldvcmRdICY9IH4ob25lIDw8IChuICUgYml0Q291bnRQ
ZXJXb3JkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2NhdmVuZ2VyLmNwcAppbmRleCA5OTYyNjFhZGUxYzY0OGQ5NzU5NTY0MDQ3MTA5ODRmZDAwYjQ3
ZGQ3Li42MTA2NzhhNjE1N2NlN2YyMTNmYjY2YjhjN2VlNGFhZDE3OTRmMTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBTY2F2ZW5n
ZXI6OnNjYXZlbmdlKCkKICNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgICAgICAgICAg
c2l6ZV90IGRlZmVycmVkRGVjb21taXRzID0gMDsKICNlbmRpZgotICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVlTG9ja0hvbGRlciBs
b2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVh
cHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGlj
X2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0y
OTcsNyArMjk3LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSgpCiAgICAgICAg
IEJ1bGtEZWNvbW1pdCBkZWNvbW1pdHRlcjsKICAgICAgICAgewogICAgICAgICAgICAgUHJpbnRU
aW1lIHByaW50VGltZSgiXG5wYXJ0aWFsU2NhdmVuZ2UgdW5kZXIgbG9jayB0aW1lIik7Ci0gICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICBVbmlx
dWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1IZWFwczsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3RpdmVI
ZWFwS2luZChzdGF0aWNfY2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBzaXplX3QgU2NhdmVuZ2VyOjpmcmVlYWJsZU1l
bW9yeSgpCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhI
ZWFwOjptdXRleCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7IGktLTsp
IHsKICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNfY2FzdDxIZWFwS2lu
ZD4oaSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo=
</data>
<flag name="review"
          id="414645"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399297</attachid>
            <date>2020-05-13 14:06:01 -0700</date>
            <delta_ts>2020-05-13 14:06:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211809-20200513140600.patch</filename>
            <type>text/plain</type>
            <size>28943</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uYzI0MDlkNDFiY2JjYzAwODUyZTNlOThhMmU5ZWVm
OTg3NTE3YjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTA1LTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVU
YWJsZSwgd2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayou
CisgICAgICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJl
c3MuIEFuZCBlYWNoIGJpdCByZXByZXNlbnRzIDFNQiBvZiBWQSByZWdpb24gc2luY2UKKyAgICAg
ICAgQ2h1bmsqJ3Mgc2l6ZSBpcyBhdCBsZWFzdCAxTUIgYW5kIE9iamVjdFR5cGUgaXMgMWJpdCBk
YXRhLiBFdmVyeSB0aW1lIHdlIGV4dGVuZCB0aGlzIGJpdC12ZWN0b3IKKyAgICAgICAgdG8gc3Vw
cG9ydCBsYXJnZXIgVkEgcmVnaW9uLCB3ZSBkbyBub3QgZnJlZSB0aGUgb2xkIGJpdC12ZWN0b3Iu
IFNpbmNlIHdlIGFsd2F5cyBhbGxvY2F0ZSBwb3dlci1vZi0yCisgICAgICAgIHNpemVkIGJpdC12
ZWN0b3IsICMgb2YgZXh0ZW5zaW9uIGlzIGxpbWl0ZWQgYW5kIGl0IGRvZXMgbm90IHdhc3RlIG11
Y2ggbWVtb3J5IGJlY2F1c2UgQ2h1bmsncyBzaXplCisgICAgICAgIGlzIGVub3VnaCBsYXJnZSAo
MU1CKS4gU2luY2UgZWFjaCA0S0IgcGFnZSBvbiBtYWNPUyBjYW4gcmVwcmVzZW50IGEgYml0LXZl
Y3RvciBmb3IgMzJHQiBWQSByZWdpb24sCisgICAgICAgIGluIHByYWN0aWNlLCB0aGlzIGV4dGVu
c2lvbiBhbG1vc3QgbmV2ZXIgaGFwcGVucy4gSSB2ZXJpZmllZCB0aGF0IDRLQiBwYWdlIGNhbiBo
YW5kbGUgbWVtb3J5CisgICAgICAgIGFsbG9jYXRpb25zIGluIEpldFN0cmVhbTIgYW5kIEdtYWls
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAg
ICAgIChibWFsbG9jOjpyb3VuZFVwVG9Qb3dlck9mMik6CisgICAgICAgICogYm1hbGxvYy9EZWFs
bG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNs
b3dDYXNlKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6ZnJlZWFibGVNZW1vcnkpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVjb21taXRM
YXJnZVJhbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAg
KGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpk
ZWFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRl
U21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6aXNMYXJnZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1h
bGxvYy9IZWFwLmg6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKToKKyAgICAgICAg
KiBibWFsbG9jL09iamVjdFR5cGUuY3BwOgorICAgICAgICAoYm1hbGxvYzo6b2JqZWN0VHlwZSk6
CisgICAgICAgICogYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6c2V0KToKKyAgICAgICAgKiBibWFsbG9jL09iamVj
dFR5cGVUYWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6
Y29udmVydFRvSW5kZXgpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRz
OjpCaXRzKToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6cHJldmlv
dXMgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiZWdp
biBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmVuZCBj
b25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmNvdW50IGNv
bnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6c2l6ZUluQnl0
ZXMgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjp3b3Jk
cyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OndvcmRz
KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6T2JqZWN0VHlwZVRhYmxlKToK
KyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Z2V0KToKKyAgICAgICAgKGJtYWxs
b2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6Z2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVj
dFR5cGVUYWJsZTo6Qml0czo6c2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJs
ZTo6Qml0czo6d29yZEZvckluZGV4KToKKyAgICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5jcHA6
CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxs
b2M6OlNjYXZlbmdlcjo6cGFydGlhbFNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZl
bmdlcjo6ZnJlZWFibGVNZW1vcnkpOgorCiAyMDIwLTA1LTExICBCYXN1a2UgU3V6dWtpICA8YmFz
dWtlLnN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbYm1hbGxvY11bV1RGXSBBZGQgY29tcHV0
aW5nIG1lbW9yeSBzaXplIGltcGxlbWVudGF0aW9uIGZvciBGcmVlQlNECmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGEyMGQ2MmU1ZDU3OTRhYWIxMzRhZjMwNzA0N2U2YjI1ZTljMWMyOTEuLjNkOTkw
ZWI5YmE4ZDM4OWM0NjQzZDE4MDBmNTAzNTk4NGJkN2E4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0
CkBAIC0yOSw2ICsyOSw3IEBAIHNldChibWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0xvZ2dp
bmcuY3BwCiAgICAgYm1hbGxvYy9NdXRleC5jcHAKICAgICBibWFsbG9jL09iamVjdFR5cGUuY3Bw
CisgICAgYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuY3BwCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNz
LmNwcAogICAgIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcAogICAgIGJtYWxsb2MvYm1hbGxvYy5jcHAK
QEAgLTExMCw2ICsxMTEsNyBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxs
b2MvTXV0ZXguaAogICAgIGJtYWxsb2MvT2JqZWN0LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUu
aAorICAgIGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmgKICAgICBibWFsbG9jL1BhY2tlZC5oCiAg
ICAgYm1hbGxvYy9QZXJIZWFwS2luZC5oCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
YTUzMTQ1NDRiOTQ4ZjIyZDJlYzY4NTJjZjQ5N2NkYmNjNTE0MzI0Li41YzJjM2Q1NmQ5NzU5Y2Mx
MTFkYjNiM2Y5NGFkZDM0ODVjOTZkYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzksNiArMTM5LDggQEAKIAkJREU4QjEz
QjMyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMx
RTc0ODAyMjM4Q0E1QzAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMUU3NDdGMjIzOENBNUIwMDVEMDg0
QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMyOEQ4NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyOEQ4NEMyM0NF
QjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzNzhBOURGMjQ2QjY4NzIwMDI5QzJCQiAvKiBPYmplY3RUeXBl
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3OEE5REUyNDZCNjg2QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi87IH07CisJ
CUUzNzhBOUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzhBOUREMjQ2QjY4NkEwMDI5
QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFM0E0MTNDOTIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVk
UGFnZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRjI0NDAy
MjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNv
U2hhcmVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzRjI0NDA0MjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAzMjI1RDJD
NzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTI5Myw2ICsyOTUsOCBA
QAogCQlERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCVk1UYWdzLmg7IHBhdGggPSBibWFsbG9jL0JWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RhdGljUGVyUHJvY2Vzcy5oOyBw
YXRoID0gYm1hbGxvYy9TdGF0aWNQZXJQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzMjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUGFja2VkLmg7IHBhdGggPSBibWFsbG9jL1BhY2tlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc4QTlERDI0NkI2ODZBMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9iamVjdFR5cGVUYWJsZS5oOyBwYXRo
ID0gYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM3OEE5REUyNDZCNjg2QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBPYmplY3RUeXBlVGFibGUuY3BwOyBwYXRoID0gYm1hbGxvYy9PYmplY3RU
eXBlVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E0MTNDODIyNjA2
MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZUlubGluZXMuaDsgcGF0aCA9IGJtYWxsb2MvSXNv
U2hhcmVkUGFnZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjQ0
MDEyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZS5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQ
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjI0NDAzMjI1RDJDNzYwMEEw
RTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IElzb1NoYXJlZFBhZ2UuY3BwOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MCw2ICs0OTQsOCBAQAogCQkJCTE0
NEJFMTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCAqLywKIAkJCQkxNDEwNUU4MzE4RTE0
Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8sCiAJCQkJMTQ4NTY1NjAxOEE0M0RCQTAw
RUQ2OTQyIC8qIE9iamVjdFR5cGUuaCAqLywKKwkJCQlFMzc4QTlERTI0NkI2ODZBMDAyOUMyQkIg
LyogT2JqZWN0VHlwZVRhYmxlLmNwcCAqLywKKwkJCQlFMzc4QTlERDI0NkI2ODZBMDAyOUMyQkIg
LyogT2JqZWN0VHlwZVRhYmxlLmggKi8sCiAJCQkJNzk1QUIzQzYyMDZFMEQyNTAwNzRGRTc2IC8q
IFBoeXNpY2FsUGFnZU1hcC5oICovLAogCQkJCUFEMTRBRDI3MjAyNTI5QTYwMDg5MEUzQiAvKiBQ
cm9jZXNzQ2hlY2suaCAqLywKIAkJCQlBRDE0QUQyODIwMjUyOUIwMDA4OTBFM0IgLyogUHJvY2Vz
c0NoZWNrLm1tICovLApAQCAtNjQ1LDYgKzY1MSw3IEBACiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAw
QjE2QTQ1IC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRCRTExRjFDQTM0NjUyMDA5
OUM4QzAgLyogT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MzE4RjQ4RDBGMDA5
NTA3MDIgLyogT2JqZWN0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3OEE5RTAyNDZCNjg3
NTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEQ4
NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYx
NDkxRjIyQThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NERENzhDQjE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NzcsNiArNzg0LDcgQEAKIAkJCQk0NDI2RTI4MDFDODM4RUUwMDA4RUIwNDIgLyogTG9nZ2lu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNDQjgxQzE5MDIyQkM5MDBCMTZBNDUgLyogTXV0
ZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRGMjcxQzgxOEVBMzk5MDAwOEMxNTJGIC8qIE9i
amVjdFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM3OEE5REYyNDZCNjg3MjAwMjlDMkJC
IC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI2QTdBNTIwNTQ4
MzEzMDA5MEExNDEgLyogUGVyUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDE0QUQy
QTIwMjUyOUM3MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY1QkYxNTIxRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCmluZGV4IGQyMmYzY2UwNTQ0OTVkMDJjMGM1NDkz
M2RkMThhNzFmODcwNzAwZTkuLjFjOTU2NjBlZjc0MjQ2YTMyYjE1MmMzZDM5M2NlNzIxM2ZlZjYw
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaApAQCAtMjE5LDYgKzIxOSwxMiBAQCBj
b25zdGV4cHIgdW5zaWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCiAgICAgcmV0
dXJuIGN0ekNvbnN0ZXhwcih0KTsKIH0KIAoraW5saW5lIHNpemVfdCByb3VuZFVwVG9Qb3dlck9m
MihzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKK3sKKyAgICBCQVNTRVJUKGlzUG93ZXJP
ZlR3byhzaXplKSk7CisgICAgcmV0dXJuICgoc2l6ZSArIGFsaWdubWVudCAtIDEpICYgLWFsaWdu
bWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRo
bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3
NzlmOWRmMDJmYTg4NTczMGM2NDNmZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1
ZDZmNzAxMjNhYzhiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxv
Y2F0b3IuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBA
IC02OCwxNCArNjgsMTYgQEAgdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZv
aWQqIG9iamVjdCkKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5p
cXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJn
ZShsb2NrLCBvYmplY3QpKSB7CisgICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAg
ICAgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hl
YXAuZGVhbGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAobV9vYmplY3RMb2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkp
CisgICAgaWYgKG1fb2JqZWN0TG9nLnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7
CisgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAg
cHJvY2Vzc09iamVjdExvZyhsb2NrKTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUz
NDM2NDNiODZmZTViYjVhNjEyZDE4Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2Mzdm
NTRlNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90
IEhlYXA6OmdpZ2FjYWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdl
S2luZChtX2tpbmQpKTsKIH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExv
Y2tIb2xkZXImKQorc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXIm
KQogewogICAgIHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAg
ICAgbV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFy
Z2VSYW5nZShjb25zdCBMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2Nr
SG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7
CiAgICAgbV9mb290cHJpbnQgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2Zy
ZWVhYmxlTWVtb3J5IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3
LDkgQEAgdm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExh
cmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FW
RU5HRSkKLXZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0Rl
Y29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRl
ciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNj
YXZlbmdlKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIs
IHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxv
Y2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJy
ZWREZWNvbW1pdHMpCiAjZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdl
cykgewpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hv
bGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBm
b3IgKGF1dG8mIGxpc3QgOiBtX2NodW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZs
aXN0IC0gJm1fY2h1bmtDYWNoZVswXSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVu
ayhsb2NrLCBsaXN0LnBvcCgpLCAmbGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAog
ICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0Rl
Y29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NB
VkVOR0UpCi12b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xk
ZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVj
b21taXR0ZXIpCiB7CiAgICAgdm9pZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAg
Zm9yIChMYXJnZVJhbmdlJiByYW5nZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
c2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcg
KG1lbW9yeSkgQ2h1bmsocGFnZVNpemUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNo
dW5rLCBPYmplY3RUeXBlOjpTbWFsbCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ss
IGNodW5rLCBPYmplY3RUeXBlOjpTbWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZElu
RnJlZWFibGUgPSAwOwogICAgICAgICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShT
bWFsbFBhZ2UqIHBhZ2UpIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRl
U21hbGxDaHVuayhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWls
dXJlQQogICAgICAgICBtX2ZyZWVQYWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12
b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VD
bGFzcykKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYg
bG9jaywgQ2h1bmsqIGNodW5rLCBzaXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlw
ZXMuc2V0KGNodW5rLCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQo
bG9jaywgY2h1bmssIE9iamVjdFR5cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9
IG1fbGFyZ2VBbGxvY2F0ZWQucmVtb3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNh
bFNpemUgPSBzaXplOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNt
YWxsTGluZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUm
CiAgICAgICAgIG1fZnJlZVBhZ2VzW3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAg
ICBpZiAoIW1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRl
YWxsb2NhdGVTbWFsbENodW5rKG1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xh
c3MpOworICAgICAgICAgICAgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hl
W3BhZ2VDbGFzc10ucG9wKCksIHBhZ2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3Bh
Z2VDbGFzc10ucHVzaChjaHVuayk7CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVh
cDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFu
Z2UgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpz
cGxpdEFuZEFsbG9jYXRlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdl
LCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQo
aXNBY3RpdmVIZWFwS2luZChtX2tpbmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFu
Z2UgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYg
cmFuZ2UsIHNpemVfdCBhCiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAK
LSAgICBtX29iamVjdFR5cGVzLnNldChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RU
eXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5n
ZS5iZWdpbigpKSwgT2JqZWN0VHlwZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5z
ZXQocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02
MjEsMTEgKzYyMSw2IEBAIExhcmdlUmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9y
eSwgc2l6ZSwgMCwgMCk7CiB9CiAKLWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVy
Jiwgdm9pZCogb2JqZWN0KQotewotICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qo
b2JqZWN0KS5jaHVuaygpKSA9PSBPYmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6
OmxhcmdlU2l6ZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVy
biBtX2xhcmdlQWxsb2NhdGVkLmdldChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBh
MjlhM2QyMGE2YTcxNzlhYTkwYTg3NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2
Y2QyMjYwNGQ4YzliNDllZjBjNzQ1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIk1hcC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAi
T2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVh
cEtpbmQuaCIKICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdl
TWFwLmgiCkBAIC02OSwxOSArNzAsMTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2Nh
dGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWls
dXJlQWN0aW9uKTsKICAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwg
dm9pZCopOwogCi0gICAgYm9vbCBpc0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7Cisg
ICAgYm9vbCBpc0xhcmdlKHZvaWQqKTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tI
b2xkZXImLCB2b2lkKik7CiAgICAgdm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwg
Y29uc3QgUmFuZ2UmLCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAg
IHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNv
bW1pdCYpOwotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1p
dCYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYs
IEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1
bGtEZWNvbW1pdCYpOwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXIm
LCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNj
YXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVk
RGVjb21taXRzKTsKICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNj
YXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBz
aXplX3QgZ29hbCk7CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRl
ciYpOworICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAg
c2l6ZV90IGZvb3RwcmludCgpOwogCiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0
ciwgc2l6ZV90KTsKQEAgLTkyLDcgKzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJr
QWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBC
dWxrRGVjb21taXQmKTsKKyAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9s
ZGVyJiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2Jq
ZWN0SGFzaCB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTEx
Nyw3ICsxMTgsNyBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUo
VW5pcXVlTG9ja0hvbGRlciYsIE9iamVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9j
YXRlU21hbGxDaHVuayhVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVy
ZUFjdGlvbik7Ci0gICAgdm9pZCBkZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBw
YWdlQ2xhc3MpOworICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRl
ciYsIENodW5rKiwgc2l6ZV90IHBhZ2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9j
YXRlTGFyZ2VDaHVuayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ug
c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBh
bGlnbm1lbnQsIHNpemVfdCk7CkBAIC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAg
TWFwPHZvaWQqLCBzaXplX3QsIExhcmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAg
ICBMYXJnZU1hcCBtX2xhcmdlRnJlZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENo
dW5rSGFzaD4gbV9vYmplY3RUeXBlczsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBl
czsKIAogICAgIFNjYXZlbmdlciogbV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2
ICsxNjksMTEgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hv
bGRlciYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxM
aW5lKGxvY2ssIG9iamVjdCwgbGluZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNM
YXJnZSh2b2lkKiBvYmplY3QpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVj
dChvYmplY3QpLmNodW5rKCkpID09IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVj
dFR5cGUuY3BwCmluZGV4IDFlMmZkNTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUu
LmExOTZkMTc1OGQyNzg4YTJjNjYzZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9PYmplY3RUeXBlLmNwcApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVj
dFR5cGUoSGVhcCYgaGVhcCwgdm9pZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiBPYmplY3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2Nr
SG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9j
aywgb2JqZWN0KSkKKyAgICAgICAgaWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIE9iamVjdFR5cGU6OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGI4OGRiNDQwODkzOWE0
MjE1ODAxMDQ2YjFiZTAyMzk0YjkzNzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlw
ZVRhYmxlLmgiCisKKyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9j
IHsKKworT2JqZWN0VHlwZVRhYmxlOjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAg
fTsKKwordm9pZCBPYmplY3RUeXBlVGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsq
IGNodW5rLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBj
b252ZXJ0VG9JbmRleChjaHVuayk7CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAo
IShiaXRzLT5iZWdpbigpIDw9IGluZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAg
ICAgIHVuc2lnbmVkIG5ld0JlZ2luID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsK
KyAgICAgICAgaWYgKGJpdHMgPT0gJnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhp
cyBpcyBpbml0aWFsIGFsbG9jYXRpb24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2Us
IGl0IGNvdWxkIGJlIHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBmaXJzdCByZWdpc3RyYXRpb24sCisg
ICAgICAgICAgICAvLyBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGEgZGlmZmVy
ZW50IHB1cnBvc2UsIGFuZCBsYXRlciB0aGV5IHdpbGwgYmUgcmV1c2VkIGZvciBibWFsbG9jLiBJ
biB0aGF0IGNhc2UsCisgICAgICAgICAgICAvLyBzb29uLCB3ZSB3aWxsIHNlZSBhIHNtYWxsZXIg
aW5kZXggcmVxdWVzdCB0aGFuIHRoaXMgaW5pdGlhbCBvbmUuIFdlIHN1YnRyYWN0IGEgMTI4TUIg
b2Zmc2V0IHRvIHRoZSBpbml0aWFsIG5ld0JlZ2luCisgICAgICAgICAgICAvLyB0byBjb3ZlciBz
dWNoIHBhdHRlcm5zIHdpdGhvdXQgZXh0ZW5kaW5nIHRhYmxlIHRvbyBxdWlja2x5LgorICAgICAg
ICAgICAgbmV3QmVnaW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm91bmREb3duVG9NdWx0aXBs
ZU9mPHNpemVfdD4oT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQsIHN0ZDo6
bWluPHVuc2lnbmVkPihpbmRleCwgaW5kZXggLSBPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENv
dW50UGVyV29yZCAqIDQpKSk7CisgICAgICAgICAgICBuZXdFbmQgPSBpbmRleCArIDE7CisgICAg
ICAgIH0gZWxzZSBpZiAoaW5kZXggPCBiaXRzLT5iZWdpbigpKSB7CisgICAgICAgICAgICBCQVNT
RVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7Cisg
ICAgICAgICAgICBuZXdCZWdpbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3VuZERvd25Ub011
bHRpcGxlT2Y8c2l6ZV90PihPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENvdW50UGVyV29yZCwg
c3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCAoYml0cy0+YmVnaW4oKSAtIGJpdHMtPmNvdW50KCkp
KSkpOworICAgICAgICAgICAgbmV3RW5kID0gYml0cy0+ZW5kKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBCQVNTRVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VS
VChiaXRzLT5lbmQoKSk7CisgICAgICAgICAgICBuZXdCZWdpbiA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyb3VuZERvd25Ub011bHRpcGxlT2Y8c2l6ZV90PihPYmplY3RUeXBlVGFibGU6OkJpdHM6
OmJpdENvdW50UGVyV29yZCwgYml0cy0+YmVnaW4oKSkpOworICAgICAgICAgICAgbmV3RW5kID0g
c3RkOjptYXg8dW5zaWduZWQ+KGluZGV4ICsgMSwgYml0cy0+ZW5kKCkgKyBiaXRzLT5jb3VudCgp
KTsKKyAgICAgICAgfQorICAgICAgICBCQVNTRVJUKG5ld0VuZCA+IG5ld0JlZ2luKTsKKworICAg
ICAgICB1bnNpZ25lZCBjb3VudCA9IG5ld0VuZCAtIG5ld0JlZ2luOworICAgICAgICBzaXplX3Qg
c2l6ZSA9IHZtU2l6ZShzaXplb2YoQml0cykgKyAocm91bmRVcFRvTXVsdGlwbGVPZjxzaXplX3Q+
KE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3JkLCBjb3VudCkgLyA4KSk7Cisg
ICAgICAgIEJBU1NFUlQoaXNQb3dlck9mVHdvKHNpemUpKTsKKyAgICAgICAgc2l6ZSA9IHJvdW5k
VXBUb1Bvd2VyT2YyKHNpemUsIHZtUGFnZVNpemUoKSk7CisgICAgICAgIG5ld0VuZCA9IG5ld0Jl
Z2luICsgKChzaXplIC0gc2l6ZW9mKEJpdHMpKSAvIHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJp
dHM6OldvcmRUeXBlKSkgKiBPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENvdW50UGVyV29yZDsK
KyAgICAgICAgQkFTU0VSVChuZXdFbmQgPiBuZXdCZWdpbik7CisgICAgICAgIHZvaWQqIGFsbG9j
YXRlZCA9IHZtQWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIG1lbXNldChhbGxvY2F0ZWQsIDAsIHNp
emUpOworICAgICAgICBhdXRvKiBuZXdCaXRzID0gbmV3IChhbGxvY2F0ZWQpIEJpdHMoYml0cywg
bmV3QmVnaW4sIG5ld0VuZCk7CisKKyAgICAgICAgbWVtY3B5KG5ld0JpdHMtPndvcmRGb3JJbmRl
eChiaXRzLT5iZWdpbigpKSwgYml0cy0+d29yZHMoKSwgYml0cy0+c2l6ZUluQnl0ZXMoKSk7CisK
KyAgICAgICAgc3RkOjphdG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9j
c3QpOyAvLyBFbnN1cmUgdGFibGUgZ2V0cyB2YWxpZCB3aGVuIGl0IGlzIHZpc2libGUgdG8gdGhl
IG90aGVyIHRocmVhZHMgc2luY2UgT2JqZWN0VHlwZVRhYmxlOjpnZXQgZG9lcyBub3QgdGFrZSBh
IGxvY2suCisgICAgICAgIG1fYml0cyA9IG5ld0JpdHM7CisgICAgICAgIGJpdHMgPSBuZXdCaXRz
OworICAgIH0KKyAgICBib29sIHZhbHVlID0gISFzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PE9iamVjdFR5cGU+PihvYmplY3RUeXBlKTsKKyAgICBCQVNTRVJUKHN0YXRpY19jYXN0
PE9iamVjdFR5cGU+KHZhbHVlKSA9PSBvYmplY3RUeXBlKTsKKyAgICBiaXRzLT5zZXQoaW5kZXgs
IHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0ZjZmYzUxMzZhZTgxYTgzNTlhZTg0
MzZhMWY2ZmNiMjk3NDhiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk11
dGV4LmgiCisjaW5jbHVkZSAiT2JqZWN0VHlwZS5oIgorI2luY2x1ZGUgIlNpemVzLmgiCisKK25h
bWVzcGFjZSBibWFsbG9jIHsKKworY2xhc3MgQ2h1bms7CisKKy8vIFF1ZXJ5aW5nIE9iamVjdFR5
cGUgZm9yIENodW5rIHdpdGhvdXQgbG9ja2luZy4KK2NsYXNzIE9iamVjdFR5cGVUYWJsZSB7Citw
dWJsaWM6CisgICAgT2JqZWN0VHlwZVRhYmxlKCk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIHNoaWZ0QW1vdW50ID0gMjA7CisgICAgc3RhdGljX2Fzc2VydCgoMVVMTCA8PCBzaGlm
dEFtb3VudCkgPT0gY2h1bmtTaXplKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChCT1NfRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEggLSBzaGlmdEFtb3VudCkgPD0gMzIpOworCisgICAgY2xhc3MgQml0czsK
KworICAgIE9iamVjdFR5cGUgZ2V0KENodW5rKik7CisgICAgdm9pZCBzZXQoVW5pcXVlTG9ja0hv
bGRlciYsIENodW5rKiwgT2JqZWN0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVuc2ln
bmVkIGNvbnZlcnRUb0luZGV4KENodW5rKiBjaHVuaykKKyAgICB7CisgICAgICAgIHVpbnRwdHJf
dCBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNodW5rKTsKKyAgICAgICAg
QkFTU0VSVCghKGFkZHJlc3MgJiAofmNodW5rTWFzaykpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihhZGRyZXNzID4+IHNoaWZ0QW1vdW50KTsKKyAgICB9CisKKyAgICBC
aXRzKiBtX2JpdHM7Cit9OworCitjbGFzcyBPYmplY3RUeXBlVGFibGU6OkJpdHMgeworcHVibGlj
OgorICAgIHVzaW5nIFdvcmRUeXBlID0gdW5zaWduZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBiaXRDb3VudFBlcldvcmQgPSBzaXplb2YoV29yZFR5cGUpICogODsKKyAgICBzdGF0
aWMgY29uc3RleHByIFdvcmRUeXBlIG9uZSA9IDE7CisgICAgY29uc3RleHByIEJpdHMoQml0cyog
cHJldmlvdXMsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpCisgICAgICAgIDogbV9wcmV2
aW91cyhwcmV2aW91cykKKyAgICAgICAgLCBtX2JlZ2luKGJlZ2luKQorICAgICAgICAsIG1fZW5k
KGVuZCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBnZXQodW5zaWduZWQgaW5kZXgpOworICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKworICAgIEJpdHMqIHByZXZpb3VzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQorICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9iZWdpbjsgfQorICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kOyB9CisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2VuZCAtIG1fYmVn
aW47IH0KKyAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIGNvdW50KCkg
LyA4OyB9CisKKyAgICBjb25zdCBXb3JkVHlwZSogd29yZHMoKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PEJpdHMqPih0aGlzKS0+d29yZHMoKTsgfQorICAgIFdvcmRUeXBlKiB3b3JkcygpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V29yZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odGhpcykgKyBzaXplb2YoQml0cykpOyB9CisKKyAgICBXb3JkVHlwZSogd29yZEZvcklu
ZGV4KHVuc2lnbmVkKTsKKworcHJpdmF0ZToKKyAgICBCaXRzKiBtX3ByZXZpb3VzIHsgbnVsbHB0
ciB9OyAvLyBLZWVwaW5nIHRoZSBwcmV2aW91cyBCaXRzKiBqdXN0IHRvIHN1cHByZXNzIExlYWtz
IHdhcm5pbmdzLgorICAgIHVuc2lnbmVkIG1fYmVnaW4geyAwIH07CisgICAgdW5zaWduZWQgbV9l
bmQgeyAwIH07Cit9Oworc3RhdGljX2Fzc2VydCghKHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJp
dHMpICUgc2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUpKSk7CisKK2V4dGVy
biBCRVhQT1JUIE9iamVjdFR5cGVUYWJsZTo6Qml0cyBzZW50aW5lbEJpdHM7CisKK2lubGluZSBP
YmplY3RUeXBlVGFibGU6Ok9iamVjdFR5cGVUYWJsZSgpCisgICAgOiBtX2JpdHMoJnNlbnRpbmVs
Qml0cykKK3sKK30KKworaW5saW5lIE9iamVjdFR5cGUgT2JqZWN0VHlwZVRhYmxlOjpnZXQoQ2h1
bmsqIGNodW5rKQoreworICAgIEJpdHMqIGJpdHMgPSBtX2JpdHM7CisgICAgdW5zaWduZWQgaW5k
ZXggPSBjb252ZXJ0VG9JbmRleChjaHVuayk7CisgICAgQkFTU0VSVChiaXRzKTsKKyAgICBpZiAo
Yml0cy0+YmVnaW4oKSA8PSBpbmRleCAmJiBpbmRleCA8IGJpdHMtPmVuZCgpKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0VHlwZT4oYml0cy0+Z2V0KGluZGV4KSk7CisgICAgcmV0
dXJuIHsgfTsKK30KKworaW5saW5lIGJvb2wgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQodW5z
aWduZWQgaW5kZXgpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICBy
ZXR1cm4gd29yZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmIChvbmUgPDwgKG4gJSBiaXRDb3Vu
dFBlcldvcmQpKTsKK30KKworaW5saW5lIHZvaWQgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzZXQo
dW5zaWduZWQgaW5kZXgsIGJvb2wgdmFsdWUpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0g
YmVnaW4oKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHdvcmRzKClbbiAvIGJpdENvdW50UGVy
V29yZF0gfD0gKG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29yZCkpOworICAgIGVsc2UKKyAgICAg
ICAgd29yZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmPSB+KG9uZSA8PCAobiAlIGJpdENvdW50
UGVyV29yZCkpOworfQorCitpbmxpbmUgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpXb3JkVHlwZSog
T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjp3b3JkRm9ySW5kZXgodW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICByZXR1cm4gJndvcmRzKClbbiAv
IGJpdENvdW50UGVyV29yZF07Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAppbmRleCA5OTYyNjFhZGUxYzY0OGQ5NzU5NTY0MDQ3MTA5
ODRmZDAwYjQ3ZGQ3Li42MTA2NzhhNjE1N2NlN2YyMTNmYjY2YjhjN2VlNGFhZDE3OTRmMTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9p
ZCBTY2F2ZW5nZXI6OnNjYXZlbmdlKCkKICNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAg
ICAgICAgICAgc2l6ZV90IGRlZmVycmVkRGVjb21taXRzID0gMDsKICNlbmRpZgotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVlTG9j
a0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtSGVhcHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtp
bmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSgp
CiAgICAgICAgIEJ1bGtEZWNvbW1pdCBkZWNvbW1pdHRlcjsKICAgICAgICAgewogICAgICAgICAg
ICAgUHJpbnRUaW1lIHByaW50VGltZSgiXG5wYXJ0aWFsU2NhdmVuZ2UgdW5kZXIgbG9jayB0aW1l
Iik7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAg
ICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1IZWFwczsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICgh
aXNBY3RpdmVIZWFwS2luZChzdGF0aWNfY2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBzaXplX3QgU2NhdmVuZ2VyOjpm
cmVlYWJsZU1lbW9yeSgpCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgIFVuaXF1ZUxvY2tIb2xk
ZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVh
cHM7IGktLTspIHsKICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNfY2Fz
dDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399298</attachid>
            <date>2020-05-13 14:08:04 -0700</date>
            <delta_ts>2020-05-13 16:03:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211809-20200513140803.patch</filename>
            <type>text/plain</type>
            <size>28937</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uNDlmNDFjZTgzYTEyMDMwNDc4MTM2YjdlMjM0ZDIz
MWJhZjgyNTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTA1LTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVUYWJsZSwg
d2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayouCisgICAg
ICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJlc3MuIEFu
ZCBlYWNoIGJpdCByZXByZXNlbnRzIDFNQiBvZiBWQSByZWdpb24gc2luY2UKKyAgICAgICAgQ2h1
bmsqJ3Mgc2l6ZSBpcyBhdCBsZWFzdCAxTUIgYW5kIE9iamVjdFR5cGUgaXMgMWJpdCBkYXRhLiBF
dmVyeSB0aW1lIHdlIGV4dGVuZCB0aGlzIGJpdC12ZWN0b3IKKyAgICAgICAgdG8gc3VwcG9ydCBs
YXJnZXIgVkEgcmVnaW9uLCB3ZSBkbyBub3QgZnJlZSB0aGUgb2xkIGJpdC12ZWN0b3IuIFNpbmNl
IHdlIGFsd2F5cyBhbGxvY2F0ZSBwb3dlci1vZi0yCisgICAgICAgIHNpemVkIGJpdC12ZWN0b3Is
ICMgb2YgZXh0ZW5zaW9uIGlzIGxpbWl0ZWQgYW5kIGl0IGRvZXMgbm90IHdhc3RlIG11Y2ggbWVt
b3J5IGJlY2F1c2UgQ2h1bmsncyBzaXplCisgICAgICAgIGlzIGVub3VnaCBsYXJnZSAoMU1CKS4g
U2luY2UgZWFjaCA0S0IgcGFnZSBvbiBtYWNPUyBjYW4gcmVwcmVzZW50IGEgYml0LXZlY3RvciBm
b3IgMzJHQiBWQSByZWdpb24sCisgICAgICAgIGluIHByYWN0aWNlLCB0aGlzIGV4dGVuc2lvbiBh
bG1vc3QgbmV2ZXIgaGFwcGVucy4gSSB2ZXJpZmllZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUg
bWVtb3J5CisgICAgICAgIGFsbG9jYXRpb25zIGluIEpldFN0cmVhbTIgYW5kIEdtYWlsLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAgICAgIChi
bWFsbG9jOjpyb3VuZFVwVG9Qb3dlck9mMik6CisgICAgICAgICogYm1hbGxvYy9EZWFsbG9jYXRv
ci5jcHA6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNl
KToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6
ZnJlZWFibGVNZW1vcnkpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVjb21taXRMYXJnZVJh
bmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9j
YXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxM
aW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6aXNMYXJnZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9I
ZWFwLmg6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKToKKyAgICAgICAgKiBibWFs
bG9jL09iamVjdFR5cGUuY3BwOgorICAgICAgICAoYm1hbGxvYzo6b2JqZWN0VHlwZSk6CisgICAg
ICAgICogYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGJtYWxs
b2M6Ok9iamVjdFR5cGVUYWJsZTo6c2V0KToKKyAgICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVU
YWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Y29udmVy
dFRvSW5kZXgpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpCaXRz
KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6cHJldmlvdXMgY29u
c3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmVuZCBjb25zdCk6
CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmNvdW50IGNvbnN0KToK
KyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjp3b3JkcyBjb25z
dCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OndvcmRzKToKKyAg
ICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6T2JqZWN0VHlwZVRhYmxlKToKKyAgICAg
ICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Z2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9i
amVjdFR5cGVUYWJsZTo6Qml0czo6Z2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVU
YWJsZTo6Qml0czo6c2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0
czo6d29yZEZvckluZGV4KToKKyAgICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNj
YXZlbmdlcjo6cGFydGlhbFNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6
ZnJlZWFibGVNZW1vcnkpOgorCiAyMDIwLTA1LTExICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1
enVraUBzb255LmNvbT4KIAogICAgICAgICBbYm1hbGxvY11bV1RGXSBBZGQgY29tcHV0aW5nIG1l
bW9yeSBzaXplIGltcGxlbWVudGF0aW9uIGZvciBGcmVlQlNECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGEyMGQ2MmU1ZDU3OTRhYWIxMzRhZjMwNzA0N2U2YjI1ZTljMWMyOTEuLjNkOTkwZWI5YmE4
ZDM4OWM0NjQzZDE4MDBmNTAzNTk4NGJkN2E4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CkBAIC0y
OSw2ICsyOSw3IEBAIHNldChibWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0xvZ2dpbmcuY3Bw
CiAgICAgYm1hbGxvYy9NdXRleC5jcHAKICAgICBibWFsbG9jL09iamVjdFR5cGUuY3BwCisgICAg
Ym1hbGxvYy9PYmplY3RUeXBlVGFibGUuY3BwCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNzLmNwcAog
ICAgIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcAogICAgIGJtYWxsb2MvYm1hbGxvYy5jcHAKQEAgLTEx
MCw2ICsxMTEsNyBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxsb2MvTXV0
ZXguaAogICAgIGJtYWxsb2MvT2JqZWN0LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaAorICAg
IGJtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmgKICAgICBibWFsbG9jL1BhY2tlZC5oCiAgICAgYm1h
bGxvYy9QZXJIZWFwS2luZC5oCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YTUzMTQ1
NDRiOTQ4ZjIyZDJlYzY4NTJjZjQ5N2NkYmNjNTE0MzI0Li41YzJjM2Q1NmQ5NzU5Y2MxMTFkYjNi
M2Y5NGFkZDM0ODVjOTZkYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzksNiArMTM5LDggQEAKIAkJREU4QjEzQjMyMUND
NUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxRTc0ODAy
MjM4Q0E1QzAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBT
dGF0aWNQZXJQcm9jZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMyOEQ4NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyOEQ4NEMyM0NFQjM4OTAw
NTQ1QjE4IC8qIFBhY2tlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzNzhBOURGMjQ2QjY4NzIwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OEE5
REUyNDZCNjg2QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi87IH07CisJCUUzNzhB
OUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzhBOUREMjQ2QjY4NkEwMDI5QzJCQiAv
KiBPYmplY3RUeXBlVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E0MTNDOTIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRjI0NDAyMjI1RDJD
MDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVk
UGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzRjI0NDA0MjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAzMjI1RDJDNzYwMEEw
RTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTI5Myw2ICsyOTUsOCBAQAogCQlE
RThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCVk1U
YWdzLmg7IHBhdGggPSBibWFsbG9jL0JWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RhdGljUGVyUHJvY2Vzcy5oOyBwYXRoID0g
Ym1hbGxvYy9TdGF0aWNQZXJQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUGFja2VkLmg7IHBhdGggPSBibWFsbG9jL1BhY2tlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzc4QTlERDI0NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0
VHlwZVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9iamVjdFR5cGVUYWJsZS5oOyBwYXRoID0gYm1h
bGxvYy9PYmplY3RUeXBlVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3
OEE5REUyNDZCNjg2QTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBPYmplY3RUeXBlVGFibGUuY3BwOyBwYXRoID0gYm1hbGxvYy9PYmplY3RUeXBlVGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E0MTNDODIyNjA2MTE0MDAz
N0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSXNvU2hhcmVkUGFnZUlubGluZXMuaDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVk
UGFnZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjQ0MDEyMjVE
MkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSXNvU2hhcmVkUGFnZS5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjI0NDAzMjI1RDJDNzYwMEEwRTBDMyAv
KiBJc29TaGFyZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IElzb1NoYXJlZFBhZ2UuY3BwOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MCw2ICs0OTQsOCBAQAogCQkJCTE0NEJFMTFF
MUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCAqLywKIAkJCQkxNDEwNUU4MzE4RTE0Mzc0MDAz
QTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8sCiAJCQkJMTQ4NTY1NjAxOEE0M0RCQTAwRUQ2OTQy
IC8qIE9iamVjdFR5cGUuaCAqLywKKwkJCQlFMzc4QTlERTI0NkI2ODZBMDAyOUMyQkIgLyogT2Jq
ZWN0VHlwZVRhYmxlLmNwcCAqLywKKwkJCQlFMzc4QTlERDI0NkI2ODZBMDAyOUMyQkIgLyogT2Jq
ZWN0VHlwZVRhYmxlLmggKi8sCiAJCQkJNzk1QUIzQzYyMDZFMEQyNTAwNzRGRTc2IC8qIFBoeXNp
Y2FsUGFnZU1hcC5oICovLAogCQkJCUFEMTRBRDI3MjAyNTI5QTYwMDg5MEUzQiAvKiBQcm9jZXNz
Q2hlY2suaCAqLywKIAkJCQlBRDE0QUQyODIwMjUyOUIwMDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNr
Lm1tICovLApAQCAtNjQ1LDYgKzY1MSw3IEBACiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1
IC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRCRTExRjFDQTM0NjUyMDA5OUM4QzAg
LyogT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MzE4RjQ4RDBGMDA5NTA3MDIg
LyogT2JqZWN0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3OEE5RTAyNDZCNjg3NTAwMjlD
MkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEQ4NEQyM0NF
QjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNDkxRjIy
QThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhD
QjE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03Nzcs
NiArNzg0LDcgQEAKIAkJCQk0NDI2RTI4MDFDODM4RUUwMDA4RUIwNDIgLyogTG9nZ2luZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDNDQjgxQzE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTRGMjcxQzgxOEVBMzk5MDAwOEMxNTJGIC8qIE9iamVjdFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM3OEE5REYyNDZCNjg3MjAwMjlDMkJCIC8qIE9i
amVjdFR5cGVUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI2QTdBNTIwNTQ4MzEzMDA5
MEExNDEgLyogUGVyUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDE0QUQyQTIwMjUy
OUM3MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QkYx
NTIxRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0FsZ29yaXRobS5oCmluZGV4IGQyMmYzY2UwNTQ0OTVkMDJjMGM1NDkzM2RkMThh
NzFmODcwNzAwZTkuLjFjOTU2NjBlZjc0MjQ2YTMyYjE1MmMzZDM5M2NlNzIxM2ZlZjYwYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaApAQCAtMjE5LDYgKzIxOSwxMiBAQCBjb25zdGV4
cHIgdW5zaWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCiAgICAgcmV0dXJuIGN0
ekNvbnN0ZXhwcih0KTsKIH0KIAoraW5saW5lIHNpemVfdCByb3VuZFVwVG9Qb3dlck9mMihzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKK3sKKyAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhz
aXplKSk7CisgICAgcmV0dXJuICgoc2l6ZSArIGFsaWdubWVudCAtIDEpICYgLWFsaWdubWVudCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRm
MDJmYTg4NTczMGM2NDNmZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAx
MjNhYzhiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwx
NCArNjgsMTYgQEAgdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9i
amVjdCkKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9j
a0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2Nr
LCBvYmplY3QpKSB7CisgICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAg
VW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVh
bGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9vYmplY3RMb2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAg
aWYgKG1fb2JqZWN0TG9nLnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAg
ICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vz
c09iamVjdExvZyhsb2NrKTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNi
ODZmZTViYjVhNjEyZDE4Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6
OmdpZ2FjYWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZCht
X2tpbmQpKTsKIH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xk
ZXImKQorc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewog
ICAgIHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQg
SGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9j
b25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5n
ZShjb25zdCBMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVj
b21taXR0ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVy
JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAg
bV9mb290cHJpbnQgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxl
TWVtb3J5IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAg
dm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFu
Z2UmIHJhbmdlLCBCdWxrRGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkK
LXZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9j
aywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdl
KGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVf
dCYgZGVmZXJyZWREZWNvbW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xk
ZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpCiAjZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYg
bG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1
dG8mIGxpc3QgOiBtX2NodW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0g
Jm1fY2h1bmtDYWNoZVswXSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2Nr
LCBsaXN0LnBvcCgpLCAmbGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZv
ciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
Ci12b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxv
Y2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdo
V2F0ZXJtYXJrKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0
ZXIpCiB7CiAgICAgdm9pZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChM
YXJnZVJhbmdlJiByYW5nZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9p
ZCBIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90
IHBhZ2VDbGFzcywgRmFpbHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9y
eSkgQ2h1bmsocGFnZVNpemUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBP
YmplY3RUeXBlOjpTbWFsbCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5r
LCBPYmplY3RUeXBlOjpTbWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFi
bGUgPSAwOwogICAgICAgICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBh
Z2UqIHBhZ2UpIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxD
aHVuayhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQog
ICAgICAgICBtX2ZyZWVQYWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhl
YXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykK
K3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
Q2h1bmsqIGNodW5rLCBzaXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0
KGNodW5rLCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywg
Y2h1bmssIE9iamVjdFR5cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFy
Z2VBbGxvY2F0ZWQucmVtb3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUg
PSBzaXplOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGlu
ZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAg
ICAgIG1fZnJlZVBhZ2VzW3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAo
IW1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2Nh
dGVTbWFsbENodW5rKG1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOwor
ICAgICAgICAgICAgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VD
bGFzc10ucG9wKCksIHBhZ2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFz
c10ucHVzaChjaHVuayk7CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxs
b2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVh
cDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2Us
IHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFu
ZEFsbG9jYXRlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXpl
X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3Rp
dmVIZWFwS2luZChtX2tpbmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVh
cDo6c3BsaXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2Us
IHNpemVfdCBhCiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBt
X29iamVjdFR5cGVzLnNldChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpM
YXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdp
bigpKSwgT2JqZWN0VHlwZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFu
Z2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEg
KzYyMSw2IEBAIExhcmdlUmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBh
bGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6
ZSwgMCwgMCk7CiB9CiAKLWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9p
ZCogb2JqZWN0KQotewotICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0
KS5jaHVuaygpKSA9PSBPYmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6Omxhcmdl
U2l6ZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xh
cmdlQWxsb2NhdGVkLmdldChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2Qy
MGE2YTcxNzlhYTkwYTg3NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYw
NGQ4YzliNDllZjBjNzQ1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIk1hcC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0
LmgiCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQu
aCIKICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgi
CkBAIC02OSwxOSArNzAsMTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJn
ZShVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0
aW9uKTsKICAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCop
OwogCi0gICAgYm9vbCBpc0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9v
bCBpc0xhcmdlKHZvaWQqKTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXIm
LCB2b2lkKik7CiAgICAgdm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3Qg
UmFuZ2UmLCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQg
c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYp
OwotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwor
ICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtE
ZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNv
bW1pdCYpOwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxr
RGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdl
KFVuaXF1ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21t
aXRzKTsKICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtE
ZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdl
KFVuaXF1ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3Qg
Z29hbCk7CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOwor
ICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90
IGZvb3RwcmludCgpOwogCiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90KTsKQEAgLTkyLDcgKzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFy
Z2VBc0VsaWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBk
ZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVj
b21taXQmKTsKKyAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwg
TGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFz
aCB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsx
MTgsNyBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVl
TG9ja0hvbGRlciYsIE9iamVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21h
bGxDaHVuayhVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlv
bik7Ci0gICAgdm9pZCBkZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xh
c3MpOworICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENo
dW5rKiwgc2l6ZV90IHBhZ2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFy
Z2VDaHVuayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRB
bmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCk7CkBAIC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZv
aWQqLCBzaXplX3QsIExhcmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJn
ZU1hcCBtX2xhcmdlRnJlZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFz
aD4gbV9vYmplY3RUeXBlczsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAog
ICAgIFNjYXZlbmdlciogbV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjks
MTEgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYg
bG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxv
Y2ssIG9iamVjdCwgbGluZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2
b2lkKiBvYmplY3QpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmpl
Y3QpLmNodW5rKCkpID09IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvT2JqZWN0VHlwZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUu
Y3BwCmluZGV4IDFlMmZkNTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZk
MTc1OGQyNzg4YTJjNjYzZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9PYmplY3RUeXBlLmNwcApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUo
SGVhcCYgaGVhcCwgdm9pZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiBPYmplY3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVy
IGxvY2soSGVhcDo6bXV0ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2Jq
ZWN0KSkKKyAgICAgICAgaWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIE9iamVjdFR5cGU6OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvT2JqZWN0VHlwZVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGI4OGRiNDQwODkzOWE0MjE1ODAx
MDQ2YjFiZTAyMzk0YjkzNzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9PYmplY3RUeXBlVGFibGUuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxl
LmgiCisKKyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKwor
T2JqZWN0VHlwZVRhYmxlOjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwor
dm9pZCBPYmplY3RUeXBlVGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5r
LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0
VG9JbmRleChjaHVuayk7CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRz
LT5iZWdpbigpIDw9IGluZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVu
c2lnbmVkIG5ld0JlZ2luID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAg
ICAgaWYgKGJpdHMgPT0gJnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBp
bml0aWFsIGFsbG9jYXRpb24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IGNv
dWxkIGJlIHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBmaXJzdCByZWdpc3RyYXRpb24sCisgICAgICAg
ICAgICAvLyBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGEgZGlmZmVyZW50IHB1
cnBvc2UsIGFuZCBsYXRlciB0aGV5IHdpbGwgYmUgcmV1c2VkIGZvciBibWFsbG9jLiBJbiB0aGF0
IGNhc2UsCisgICAgICAgICAgICAvLyBzb29uLCB3ZSB3aWxsIHNlZSBhIHNtYWxsZXIgaW5kZXgg
cmVxdWVzdCB0aGFuIHRoaXMgaW5pdGlhbCBvbmUuIFdlIHN1YnRyYWN0IGEgMTI4TUIgb2Zmc2V0
IHRvIHRoZSBpbml0aWFsIG5ld0JlZ2luCisgICAgICAgICAgICAvLyB0byBjb3ZlciBzdWNoIHBh
dHRlcm5zIHdpdGhvdXQgZXh0ZW5kaW5nIHRhYmxlIHRvbyBxdWlja2x5LgorICAgICAgICAgICAg
bmV3QmVnaW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm91bmREb3duVG9NdWx0aXBsZU9mPHNp
emVfdD4oT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQsIHN0ZDo6bWluPHVu
c2lnbmVkPihpbmRleCwgaW5kZXggLSBPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENvdW50UGVy
V29yZCAqIDQpKSk7CisgICAgICAgICAgICBuZXdFbmQgPSBpbmRleCArIDE7CisgICAgICAgIH0g
ZWxzZSBpZiAoaW5kZXggPCBiaXRzLT5iZWdpbigpKSB7CisgICAgICAgICAgICBCQVNTRVJUKGJp
dHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5lbmQoKSk7CisgICAgICAg
ICAgICBuZXdCZWdpbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3VuZERvd25Ub011bHRpcGxl
T2Y8c2l6ZV90PihPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENvdW50UGVyV29yZCwgc3RkOjpt
aW48dW5zaWduZWQ+KGluZGV4LCAoYml0cy0+YmVnaW4oKSAtIGJpdHMtPmNvdW50KCkpKSkpOwor
ICAgICAgICAgICAgbmV3RW5kID0gYml0cy0+ZW5kKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBCQVNTRVJUKGJpdHMtPmJlZ2luKCkpOworICAgICAgICAgICAgQkFTU0VSVChiaXRz
LT5lbmQoKSk7CisgICAgICAgICAgICBuZXdCZWdpbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
b3VuZERvd25Ub011bHRpcGxlT2Y8c2l6ZV90PihPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENv
dW50UGVyV29yZCwgYml0cy0+YmVnaW4oKSkpOworICAgICAgICAgICAgbmV3RW5kID0gc3RkOjpt
YXg8dW5zaWduZWQ+KGluZGV4ICsgMSwgYml0cy0+ZW5kKCkgKyBiaXRzLT5jb3VudCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBCQVNTRVJUKG5ld0VuZCA+IG5ld0JlZ2luKTsKKworICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IG5ld0VuZCAtIG5ld0JlZ2luOworICAgICAgICBzaXplX3Qgc2l6ZSA9
IHZtU2l6ZShzaXplb2YoQml0cykgKyAocm91bmRVcFRvTXVsdGlwbGVPZjxzaXplX3Q+KE9iamVj
dFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3JkLCBjb3VudCkgLyA4KSk7CisgICAgICAg
IEJBU1NFUlQoaXNQb3dlck9mVHdvKHNpemUpKTsKKyAgICAgICAgc2l6ZSA9IHJvdW5kVXBUb1Bv
d2VyT2YyKHNpemUsIHZtUGFnZVNpemUoKSk7CisgICAgICAgIG5ld0VuZCA9IG5ld0JlZ2luICsg
KChzaXplIC0gc2l6ZW9mKEJpdHMpKSAvIHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJpdHM6Oldv
cmRUeXBlKSkgKiBPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJpdENvdW50UGVyV29yZDsKKyAgICAg
ICAgQkFTU0VSVChuZXdFbmQgPiBuZXdCZWdpbik7CisgICAgICAgIHZvaWQqIGFsbG9jYXRlZCA9
IHZtQWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIG1lbXNldChhbGxvY2F0ZWQsIDAsIHNpemUpOwor
ICAgICAgICBhdXRvKiBuZXdCaXRzID0gbmV3IChhbGxvY2F0ZWQpIEJpdHMoYml0cywgbmV3QmVn
aW4sIG5ld0VuZCk7CisKKyAgICAgICAgbWVtY3B5KG5ld0JpdHMtPndvcmRGb3JJbmRleChiaXRz
LT5iZWdpbigpKSwgYml0cy0+d29yZHMoKSwgYml0cy0+c2l6ZUluQnl0ZXMoKSk7CisKKyAgICAg
ICAgc3RkOjphdG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpOyAv
LyBFbnN1cmUgdGFibGUgZ2V0cyB2YWxpZCB3aGVuIGl0IGlzIHZpc2libGUgdG8gdGhlIG90aGVy
IHRocmVhZHMgc2luY2UgT2JqZWN0VHlwZVRhYmxlOjpnZXQgZG9lcyBub3QgdGFrZSBhIGxvY2su
CisgICAgICAgIG1fYml0cyA9IG5ld0JpdHM7CisgICAgICAgIGJpdHMgPSBuZXdCaXRzOworICAg
IH0KKyAgICBib29sIHZhbHVlID0gISFzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90
PE9iamVjdFR5cGU+PihvYmplY3RUeXBlKTsKKyAgICBCQVNTRVJUKHN0YXRpY19jYXN0PE9iamVj
dFR5cGU+KHZhbHVlKSA9PSBvYmplY3RUeXBlKTsKKyAgICBiaXRzLT5zZXQoaW5kZXgsIHZhbHVl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0ZjZmYzUxMzZhZTgxYTgzNTlhZTg0MzZhMWY2
ZmNiMjk3NDhiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk11dGV4Lmgi
CisjaW5jbHVkZSAiT2JqZWN0VHlwZS5oIgorI2luY2x1ZGUgIlNpemVzLmgiCisKK25hbWVzcGFj
ZSBibWFsbG9jIHsKKworY2xhc3MgQ2h1bms7CisKKy8vIFF1ZXJ5aW5nIE9iamVjdFR5cGUgZm9y
IENodW5rIHdpdGhvdXQgbG9ja2luZy4KK2NsYXNzIE9iamVjdFR5cGVUYWJsZSB7CitwdWJsaWM6
CisgICAgT2JqZWN0VHlwZVRhYmxlKCk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHNoaWZ0QW1vdW50ID0gMjA7CisgICAgc3RhdGljX2Fzc2VydCgoMVVMTCA8PCBzaGlmdEFtb3Vu
dCkgPT0gY2h1bmtTaXplKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChCT1NfRUZGRUNUSVZFX0FERFJF
U1NfV0lEVEggLSBzaGlmdEFtb3VudCkgPD0gMzIpOworCisgICAgY2xhc3MgQml0czsKKworICAg
IE9iamVjdFR5cGUgZ2V0KENodW5rKik7CisgICAgdm9pZCBzZXQoVW5pcXVlTG9ja0hvbGRlciYs
IENodW5rKiwgT2JqZWN0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVuc2lnbmVkIGNv
bnZlcnRUb0luZGV4KENodW5rKiBjaHVuaykKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBhZGRy
ZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNodW5rKTsKKyAgICAgICAgQkFTU0VS
VCghKGFkZHJlc3MgJiAofmNodW5rTWFzaykpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihhZGRyZXNzID4+IHNoaWZ0QW1vdW50KTsKKyAgICB9CisKKyAgICBCaXRzKiBt
X2JpdHM7Cit9OworCitjbGFzcyBPYmplY3RUeXBlVGFibGU6OkJpdHMgeworcHVibGljOgorICAg
IHVzaW5nIFdvcmRUeXBlID0gdW5zaWduZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBiaXRDb3VudFBlcldvcmQgPSBzaXplb2YoV29yZFR5cGUpICogODsKKyAgICBzdGF0aWMgY29u
c3RleHByIFdvcmRUeXBlIG9uZSA9IDE7CisgICAgY29uc3RleHByIEJpdHMoQml0cyogcHJldmlv
dXMsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpCisgICAgICAgIDogbV9wcmV2aW91cyhw
cmV2aW91cykKKyAgICAgICAgLCBtX2JlZ2luKGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVuZCkK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBnZXQodW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQg
c2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKworICAgIEJpdHMqIHByZXZpb3VzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91czsgfQorICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9iZWdpbjsgfQorICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9
CisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2VuZCAtIG1fYmVnaW47IH0K
KyAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIGNvdW50KCkgLyA4OyB9
CisKKyAgICBjb25zdCBXb3JkVHlwZSogd29yZHMoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PEJpdHMqPih0aGlzKS0+d29yZHMoKTsgfQorICAgIFdvcmRUeXBlKiB3b3JkcygpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V29yZFR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
dGhpcykgKyBzaXplb2YoQml0cykpOyB9CisKKyAgICBXb3JkVHlwZSogd29yZEZvckluZGV4KHVu
c2lnbmVkKTsKKworcHJpdmF0ZToKKyAgICBCaXRzKiBtX3ByZXZpb3VzIHsgbnVsbHB0ciB9OyAv
LyBLZWVwaW5nIHRoZSBwcmV2aW91cyBCaXRzKiBqdXN0IHRvIHN1cHByZXNzIExlYWtzIHdhcm5p
bmdzLgorICAgIHVuc2lnbmVkIG1fYmVnaW4geyAwIH07CisgICAgdW5zaWduZWQgbV9lbmQgeyAw
IH07Cit9Oworc3RhdGljX2Fzc2VydCghKHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJpdHMpICUg
c2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUpKSk7CisKK2V4dGVybiBCRVhQ
T1JUIE9iamVjdFR5cGVUYWJsZTo6Qml0cyBzZW50aW5lbEJpdHM7CisKK2lubGluZSBPYmplY3RU
eXBlVGFibGU6Ok9iamVjdFR5cGVUYWJsZSgpCisgICAgOiBtX2JpdHMoJnNlbnRpbmVsQml0cykK
K3sKK30KKworaW5saW5lIE9iamVjdFR5cGUgT2JqZWN0VHlwZVRhYmxlOjpnZXQoQ2h1bmsqIGNo
dW5rKQoreworICAgIEJpdHMqIGJpdHMgPSBtX2JpdHM7CisgICAgdW5zaWduZWQgaW5kZXggPSBj
b252ZXJ0VG9JbmRleChjaHVuayk7CisgICAgQkFTU0VSVChiaXRzKTsKKyAgICBpZiAoYml0cy0+
YmVnaW4oKSA8PSBpbmRleCAmJiBpbmRleCA8IGJpdHMtPmVuZCgpKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8T2JqZWN0VHlwZT4oYml0cy0+Z2V0KGluZGV4KSk7CisgICAgcmV0dXJuIHsg
fTsKK30KKworaW5saW5lIGJvb2wgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQodW5zaWduZWQg
aW5kZXgpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICByZXR1cm4g
d29yZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmIChvbmUgPDwgKG4gJSBiaXRDb3VudFBlcldv
cmQpKTsKK30KKworaW5saW5lIHZvaWQgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzZXQodW5zaWdu
ZWQgaW5kZXgsIGJvb2wgdmFsdWUpCit7CisgICAgdW5zaWduZWQgbiA9IGluZGV4IC0gYmVnaW4o
KTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHdvcmRzKClbbiAvIGJpdENvdW50UGVyV29yZF0g
fD0gKG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29yZCkpOworICAgIGVsc2UKKyAgICAgICAgd29y
ZHMoKVtuIC8gYml0Q291bnRQZXJXb3JkXSAmPSB+KG9uZSA8PCAobiAlIGJpdENvdW50UGVyV29y
ZCkpOworfQorCitpbmxpbmUgT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpXb3JkVHlwZSogT2JqZWN0
VHlwZVRhYmxlOjpCaXRzOjp3b3JkRm9ySW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgdW5z
aWduZWQgbiA9IGluZGV4IC0gYmVnaW4oKTsKKyAgICByZXR1cm4gJndvcmRzKClbbiAvIGJpdENv
dW50UGVyV29yZF07Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvU2NhdmVuZ2VyLmNwcAppbmRleCA5OTYyNjFhZGUxYzY0OGQ5NzU5NTY0MDQ3MTA5ODRmZDAw
YjQ3ZGQ3Li42MTA2NzhhNjE1N2NlN2YyMTNmYjY2YjhjN2VlNGFhZDE3OTRmMTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBTY2F2
ZW5nZXI6OnNjYXZlbmdlKCkKICNpZiAhQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgICAgICAg
ICAgc2l6ZV90IGRlZmVycmVkRGVjb21taXRzID0gMDsKICNlbmRpZgotICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVt
SGVhcHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3Rh
dGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBA
IC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSgpCiAgICAg
ICAgIEJ1bGtEZWNvbW1pdCBkZWNvbW1pdHRlcjsKICAgICAgICAgewogICAgICAgICAgICAgUHJp
bnRUaW1lIHByaW50VGltZSgiXG5wYXJ0aWFsU2NhdmVuZ2UgdW5kZXIgbG9jayB0aW1lIik7Ci0g
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICBV
bmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1IZWFwczsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3Rp
dmVIZWFwS2luZChzdGF0aWNfY2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBzaXplX3QgU2NhdmVuZ2VyOjpmcmVlYWJs
ZU1lbW9yeSgpCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9j
ayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7IGkt
LTspIHsKICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNfY2FzdDxIZWFw
S2luZD4oaSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399306</attachid>
            <date>2020-05-13 15:52:00 -0700</date>
            <delta_ts>2020-05-13 16:03:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211809-20200513155159.patch</filename>
            <type>text/plain</type>
            <size>29109</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uMTgxYzVkMTQ0NjI4OTAxYzIwMzkyYTIzYWU4ZjEy
MTY5MjhkMTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTA1LTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVUYWJsZSwg
d2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayouCisgICAg
ICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJlc3MuIEFu
ZCBlYWNoIGJpdCByZXByZXNlbnRzIDFNQiBvZiBWQSByZWdpb24gc2luY2UKKyAgICAgICAgQ2h1
bmsqJ3Mgc2l6ZSBpcyBhdCBsZWFzdCAxTUIgYW5kIE9iamVjdFR5cGUgaXMgMWJpdCBkYXRhLiBF
dmVyeSB0aW1lIHdlIGV4dGVuZCB0aGlzIGJpdC12ZWN0b3IKKyAgICAgICAgdG8gc3VwcG9ydCBs
YXJnZXIgVkEgcmVnaW9uLCB3ZSBkbyBub3QgZnJlZSB0aGUgb2xkIGJpdC12ZWN0b3IuIFNpbmNl
IHdlIGFsd2F5cyBhbGxvY2F0ZSBwb3dlci1vZi0yCisgICAgICAgIHNpemVkIGJpdC12ZWN0b3Is
ICMgb2YgZXh0ZW5zaW9uIGlzIGxpbWl0ZWQgYW5kIGl0IGRvZXMgbm90IHdhc3RlIG11Y2ggbWVt
b3J5IGJlY2F1c2UgQ2h1bmsncyBzaXplCisgICAgICAgIGlzIGVub3VnaCBsYXJnZSAoMU1CKS4g
U2luY2UgZWFjaCA0S0IgcGFnZSBvbiBtYWNPUyBjYW4gcmVwcmVzZW50IGEgYml0LXZlY3RvciBm
b3IgMzJHQiBWQSByZWdpb24sCisgICAgICAgIGluIHByYWN0aWNlLCB0aGlzIGV4dGVuc2lvbiBh
bG1vc3QgbmV2ZXIgaGFwcGVucy4gSSB2ZXJpZmllZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUg
bWVtb3J5CisgICAgICAgIGFsbG9jYXRpb25zIGluIEpldFN0cmVhbTIgYW5kIEdtYWlsLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAgICAgIChi
bWFsbG9jOjpyb3VuZFVwVG9Qb3dlck9mVHdvKToKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2Nh
dG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9jYXRlU2xvd0Nh
c2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWNvbW1pdExhcmdl
UmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxs
b2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFs
bExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRBbmRBbGxvY2F0ZSk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9j
L0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFyZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpvYmplY3RUeXBlKToKKyAg
ICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYm1h
bGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpzZXQpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlw
ZVRhYmxlLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpjb252
ZXJ0VG9JbmRleCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OkJp
dHMpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpwcmV2aW91cyBj
b25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJlZ2luIGNv
bnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6ZW5kIGNvbnN0
KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6Y291bnQgY29uc3Qp
OgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzaXplSW5CeXRlcyBj
b25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OndvcmRzIGNv
bnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6d29yZHMpOgor
ICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpPYmplY3RUeXBlVGFibGUpOgorICAg
ICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpnZXQpOgorICAgICAgICAoYm1hbGxvYzo6
T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlw
ZVRhYmxlOjpCaXRzOjpzZXQpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjp3b3JkRm9ySW5kZXgpOgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDoKKyAg
ICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6
U2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2Vy
OjpmcmVlYWJsZU1lbW9yeSk6CisKIDIwMjAtMDUtMTEgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uu
c3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtibWFsbG9jXVtXVEZdIEFkZCBjb21wdXRpbmcg
bWVtb3J5IHNpemUgaW1wbGVtZW50YXRpb24gZm9yIEZyZWVCU0QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTIwZDYyZTVkNTc5NGFhYjEzNGFmMzA3MDQ3ZTZiMjVlOWMxYzI5MS4uM2Q5OTBlYjli
YThkMzg5YzQ2NDNkMTgwMGY1MDM1OTg0YmQ3YTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAg
LTI5LDYgKzI5LDcgQEAgc2V0KGJtYWxsb2NfU09VUkNFUwogICAgIGJtYWxsb2MvTG9nZ2luZy5j
cHAKICAgICBibWFsbG9jL011dGV4LmNwcAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKyAg
ICBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHAKICAgICBibWFsbG9jL1BlclByb2Nlc3MuY3Bw
CiAgICAgYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCiAgICAgYm1hbGxvYy9ibWFsbG9jLmNwcApAQCAt
MTEwLDYgKzExMSw3IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxvYy9N
dXRleC5oCiAgICAgYm1hbGxvYy9PYmplY3QuaAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5oCisg
ICAgYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaAogICAgIGJtYWxsb2MvUGFja2VkLmgKICAgICBi
bWFsbG9jL1BlckhlYXBLaW5kLmgKICAgICBibWFsbG9jL1BlclByb2Nlc3MuaApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVhNTMx
NDU0NGI5NDhmMjJkMmVjNjg1MmNmNDk3Y2RiY2M1MTQzMjQuLjVjMmMzZDU2ZDk3NTljYzExMWRi
M2IzZjk0YWRkMzQ4NWM5NmRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOSw2ICsxMzksOCBAQAogCQlERThCMTNCMzIx
Q0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzFFNzQ4
MDIyMzhDQTVDMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8q
IFN0YXRpY1BlclByb2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4RDg0QzIzQ0VCMzg5
MDA1NDVCMTggLyogUGFja2VkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM3OEE5REYyNDZCNjg3MjAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc4
QTlERTI0NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmNwcCAqLzsgfTsKKwkJRTM3
OEE5RTAyNDZCNjg3NTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OEE5REQyNDZCNjg2QTAwMjlDMkJC
IC8qIE9iamVjdFR5cGVUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzQTQxM0M5MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNBNDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGMjQ0MDIyMjVE
MkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFy
ZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNGMjQ0MDQyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDMyMjVEMkM3NjAw
QTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICovOyB9OwpAQCAtMjkzLDYgKzI5NSw4IEBACiAJ
CURFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJW
TVRhZ3MuaDsgcGF0aCA9IGJtYWxsb2MvQlZNVGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdGF0aWNQZXJQcm9jZXNzLmg7IHBhdGgg
PSBibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQYWNrZWQuaDsgcGF0aCA9IGJtYWxsb2MvUGFja2VkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNzhBOUREMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmpl
Y3RUeXBlVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT2JqZWN0VHlwZVRhYmxlLmg7IHBhdGggPSBi
bWFsbG9jL09iamVjdFR5cGVUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzc4QTlERTI0NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE9iamVjdFR5cGVUYWJsZS5jcHA7IHBhdGggPSBibWFsbG9jL09iamVjdFR5cGVU
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQxM0M4MjI2MDYxMTQw
MDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlSW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFy
ZWRQYWdlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMTIy
NUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMz
IC8qIElzb1NoYXJlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSXNvU2hhcmVkUGFnZS5jcHA7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkwLDYgKzQ5NCw4IEBACiAJCQkJMTQ0QkUx
MUUxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oICovLAogCQkJCTE0MTA1RTgzMThFMTQzNzQw
MDNBMTA2RSAvKiBPYmplY3RUeXBlLmNwcCAqLywKIAkJCQkxNDg1NjU2MDE4QTQzREJBMDBFRDY5
NDIgLyogT2JqZWN0VHlwZS5oICovLAorCQkJCUUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBP
YmplY3RUeXBlVGFibGUuY3BwICovLAorCQkJCUUzNzhBOUREMjQ2QjY4NkEwMDI5QzJCQiAvKiBP
YmplY3RUeXBlVGFibGUuaCAqLywKIAkJCQk3OTVBQjNDNjIwNkUwRDI1MDA3NEZFNzYgLyogUGh5
c2ljYWxQYWdlTWFwLmggKi8sCiAJCQkJQUQxNEFEMjcyMDI1MjlBNjAwODkwRTNCIC8qIFByb2Nl
c3NDaGVjay5oICovLAogCQkJCUFEMTRBRDI4MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hl
Y2subW0gKi8sCkBAIC02NDUsNiArNjUxLDcgQEAKIAkJCQkxNDNDQjgxRDE5MDIyQkM5MDBCMTZB
NDUgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFGMUNBMzQ2NTIwMDk5QzhD
MCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkzMThGNDhEMEYwMDk1MDcw
MiAvKiBPYmplY3RUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzc4QTlFMDI0NkI2ODc1MDAy
OUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4RDg0RDIz
Q0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0OTFG
MjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3
OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
Nyw2ICs3ODQsNyBAQAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0NCODFDMTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEYyNzFDODE4RUEzOTkwMDA4QzE1MkYgLyogT2JqZWN0
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc4QTlERjI0NkI2ODcyMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjZBN0E1MjA1NDgzMTMw
MDkwQTE0MSAvKiBQZXJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEMTRBRDJBMjAy
NTI5QzcwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjVC
RjE1MjFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKaW5kZXggZDIyZjNjZTA1NDQ5NWQwMmMwYzU0OTMzZGQx
OGE3MWY4NzA3MDBlOS4uNTEyOGFlODgzNWI3ZGRjM2EzMmQyNTE0YjI2OTA1OWNjNGJiMmMyMiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCkBAIC0yMTksNiArMjE5LDE5IEBAIGNvbnN0
ZXhwciB1bnNpZ25lZCBnZXRMU0JTZXROb25aZXJvQ29uc3RleHByKFQgdCkKICAgICByZXR1cm4g
Y3R6Q29uc3RleHByKHQpOwogfQogCisvLyBGcm9tIGh0dHA6Ly9ncmFwaGljcy5zdGFuZm9yZC5l
ZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCNSb3VuZFVwUG93ZXJPZjIKK2NvbnN0ZXhwciB1aW50
MzJfdCByb3VuZFVwVG9Qb3dlck9mVHdvKHVpbnQzMl90IHYpCit7CisgICAgdi0tOworICAgIHYg
fD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAyOworICAgIHYgfD0gdiA+PiA0OworICAgIHYgfD0g
diA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsKKyAgICB2Kys7CisgICAgcmV0dXJuIHY7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRmMDJmYTg4
NTczMGM2NDNmZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAxMjNhYzhi
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwxNCArNjgs
MTYgQEAgdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9iamVjdCkK
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmpl
Y3QpKSB7CisgICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAgVW5pcXVl
TG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVhbGxvY2F0
ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bV9vYmplY3RMb2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAgaWYgKG1f
b2JqZWN0TG9nLnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAgICAgIFVu
aXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vzc09iamVj
dExvZyhsb2NrKTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNiODZmZTVi
YjVhNjEyZDE4Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2Fj
YWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQp
KTsKIH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQor
c2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIHJl
dHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSGVhcDo6
bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRp
b24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25z
dCBMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0
ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFy
Z2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290
cHJpbnQgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5
IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAgdm9pZCBI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmIHJh
bmdlLCBCdWxrRGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQg
SGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNv
bW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVs
a0RlY29tbWl0JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0
IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVm
ZXJyZWREZWNvbW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxv
Y2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMp
CiAjZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywg
QnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1dG8mIGxp
c3QgOiBtX2NodW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0gJm1fY2h1
bmtDYWNoZVswXSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2NrLCBsaXN0
LnBvcCgpLCAmbGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZvciAoTGFy
Z2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
SGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNv
bW1pdHRlciwgc2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lk
IEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1
bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJt
YXJrKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7
CiAgICAgdm9pZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJh
bmdlJiByYW5nZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIZWFw
OjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VD
bGFzcywgRmFpbHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9yeSkgQ2h1
bmsocGFnZVNpemUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RU
eXBlOjpTbWFsbCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5rLCBPYmpl
Y3RUeXBlOjpTbWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFibGUgPSAw
OwogICAgICAgICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBhZ2UqIHBh
Z2UpIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhV
bmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAg
ICBtX2ZyZWVQYWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhlYXA6OmRl
YWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykKK3ZvaWQg
SGVhcDo6ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQ2h1bmsq
IGNodW5rLCBzaXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5r
LCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgY2h1bmss
IE9iamVjdFR5cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxv
Y2F0ZWQucmVtb3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUgPSBzaXpl
OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShVbmlx
dWVMb2NrSG9sZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAgICAgIG1f
ZnJlZVBhZ2VzW3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAoIW1fY2h1
bmtDYWNoZVtwYWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFs
bENodW5rKG1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOworICAgICAg
ICAgICAgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10u
cG9wKCksIHBhZ2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucHVz
aChjaHVuayk7CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVT
bWFsbEJ1bXBSYW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVhcDo6c3Bs
aXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9j
YXRlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFw
S2luZChtX2tpbmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3Bs
aXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVf
dCBhCiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBtX29iamVj
dFR5cGVzLnNldChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpMYXJnZSk7
CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdpbigpKSwg
T2JqZWN0VHlwZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFuZ2UuYmVn
aW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEgKzYyMSw2
IEBAIExhcmdlUmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgMCwg
MCk7CiB9CiAKLWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2Jq
ZWN0KQotewotICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0KS5jaHVu
aygpKSA9PSBPYmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShV
bmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxs
b2NhdGVkLmdldChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2QyMGE2YTcx
NzlhYTkwYTg3NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYwNGQ4Yzli
NDllZjBjNzQ1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIk1hcC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0LmgiCisj
aW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQuaCIKICNp
bmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCkBAIC02
OSwxOSArNzAsMTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShVbmlx
dWVMb2NrSG9sZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsK
ICAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwogCi0g
ICAgYm9vbCBpc0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9vbCBpc0xh
cmdlKHZvaWQqKTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lk
Kik7CiAgICAgdm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2Um
LCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwotICAg
IHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZv
aWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1p
dCYpOworICAgIHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYp
OwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21t
aXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsK
ICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1p
dCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7
CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHNp
emVfdCBmcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3Rw
cmludCgpOwogCiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsK
QEAgLTkyLDcgKzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0Vs
aWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1p
dExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQm
KTsKKyAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VS
YW5nZSYsIEJ1bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsxMTgsNyBA
QCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hv
bGRlciYsIE9iamVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVu
ayhVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7Ci0g
ICAgdm9pZCBkZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xhc3MpOwor
ICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwg
c2l6ZV90IHBhZ2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVu
ayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCk7CkBAIC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZvaWQqLCBz
aXplX3QsIExhcmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJnZU1hcCBt
X2xhcmdlRnJlZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFzaD4gbV9v
YmplY3RUeXBlczsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAogICAgIFNj
YXZlbmdlciogbV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjksMTEgQEAg
aW5saW5lIHZvaWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
T2JqZWN0IG9iamVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIG9i
amVjdCwgbGluZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2b2lkKiBv
YmplY3QpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNo
dW5rKCkpID09IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmlu
ZGV4IDFlMmZkNTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZkMTc1OGQy
Nzg4YTJjNjYzZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYg
aGVhcCwgdm9pZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJl
dHVybiBPYmplY3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2so
SGVhcDo6bXV0ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkK
KyAgICAgICAgaWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9i
amVjdFR5cGU6OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmU5YjZmZWNlMzI1OGE5YWQ2MmY5YTU5ODZj
ZDNhZWEzZjdjNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9P
YmplY3RUeXBlVGFibGUuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCisK
KyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworT2JqZWN0
VHlwZVRhYmxlOjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwordm9pZCBP
YmplY3RUeXBlVGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5rLCBPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0VG9JbmRl
eChjaHVuayk7CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRzLT5iZWdp
bigpIDw9IGluZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVk
IG5ld0JlZ2luID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAgICAgaWYg
KGJpdHMgPT0gJnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBpbml0aWFs
IGFsbG9jYXRpb24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IGNvdWxkIGJl
IHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBmaXJzdCByZWdpc3RyYXRpb24sCisgICAgICAgICAgICAv
LyBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGEgZGlmZmVyZW50IHB1cnBvc2Us
IGFuZCBsYXRlciB0aGV5IHdpbGwgYmUgcmV1c2VkIGZvciBibWFsbG9jLiBJbiB0aGF0IGNhc2Us
CisgICAgICAgICAgICAvLyBzb29uLCB3ZSB3aWxsIHNlZSBhIHNtYWxsZXIgaW5kZXggcmVxdWVz
dCB0aGFuIHRoaXMgaW5pdGlhbCBvbmUuIFdlIHN1YnRyYWN0IGEgMTI4TUIgb2Zmc2V0IHRvIHRo
ZSBpbml0aWFsIG5ld0JlZ2luCisgICAgICAgICAgICAvLyB0byBjb3ZlciBzdWNoIHBhdHRlcm5z
IHdpdGhvdXQgZXh0ZW5kaW5nIHRhYmxlIHRvbyBxdWlja2x5LgorICAgICAgICAgICAgbmV3QmVn
aW4gPSBzdGQ6Om1pbjx1bnNpZ25lZD4oaW5kZXgsIGluZGV4IC0gT2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjpiaXRDb3VudFBlcldvcmQgKiA0KTsKKyAgICAgICAgICAgIG5ld0VuZCA9IGluZGV4ICsg
MTsKKyAgICAgICAgfSBlbHNlIGlmIChpbmRleCA8IGJpdHMtPmJlZ2luKCkpIHsKKyAgICAgICAg
ICAgIEJBU1NFUlQoYml0cy0+YmVnaW4oKSk7CisgICAgICAgICAgICBCQVNTRVJUKGJpdHMtPmVu
ZCgpKTsKKyAgICAgICAgICAgIG5ld0JlZ2luID0gc3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCBi
aXRzLT5iZWdpbigpIC0gYml0cy0+Y291bnQoKSk7CisgICAgICAgICAgICBuZXdFbmQgPSBiaXRz
LT5lbmQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEJBU1NFUlQoYml0cy0+YmVn
aW4oKSk7CisgICAgICAgICAgICBCQVNTRVJUKGJpdHMtPmVuZCgpKTsKKyAgICAgICAgICAgIG5l
d0JlZ2luID0gYml0cy0+YmVnaW4oKTsKKyAgICAgICAgICAgIG5ld0VuZCA9IHN0ZDo6bWF4PHVu
c2lnbmVkPihpbmRleCArIDEsIGJpdHMtPmVuZCgpICsgYml0cy0+Y291bnQoKSk7CisgICAgICAg
IH0KKyAgICAgICAgbmV3QmVnaW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm91bmREb3duVG9N
dWx0aXBsZU9mPHNpemVfdD4oT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQs
IG5ld0JlZ2luKSk7CisgICAgICAgIEJBU1NFUlQobmV3RW5kID4gbmV3QmVnaW4pOworCisgICAg
ICAgIHVuc2lnbmVkIGNvdW50ID0gbmV3RW5kIC0gbmV3QmVnaW47CisgICAgICAgIHNpemVfdCBz
aXplID0gdm1TaXplKHNpemVvZihCaXRzKSArIChyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVfdD4o
T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQsIGNvdW50KSAvIDgpKTsKKyAg
ICAgICAgUkVMRUFTRV9CQVNTRVJUX1dJVEhfTUVTU0FHRShzaXplIDw9IDB4ODAwMDAwMDBVLCAi
VG9vIGxhcmdlIGJpdHZlY3RvciwgcG9zc2libHkgb3V0LW9mLW1lbW9yeSIpOworICAgICAgICBz
aXplID0gcm91bmRVcFRvUG93ZXJPZlR3byhzaXplKTsKKyAgICAgICAgbmV3RW5kID0gbmV3QmVn
aW4gKyAoKHNpemUgLSBzaXplb2YoQml0cykpIC8gc2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0
czo6V29yZFR5cGUpKSAqIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3JkOwor
ICAgICAgICBCQVNTRVJUKG5ld0VuZCA+IG5ld0JlZ2luKTsKKyAgICAgICAgdm9pZCogYWxsb2Nh
dGVkID0gdm1BbGxvY2F0ZShzaXplKTsKKyAgICAgICAgbWVtc2V0KGFsbG9jYXRlZCwgMCwgc2l6
ZSk7CisgICAgICAgIGF1dG8qIG5ld0JpdHMgPSBuZXcgKGFsbG9jYXRlZCkgQml0cyhiaXRzLCBu
ZXdCZWdpbiwgbmV3RW5kKTsKKworICAgICAgICBtZW1jcHkobmV3Qml0cy0+d29yZEZvckluZGV4
KGJpdHMtPmJlZ2luKCkpLCBiaXRzLT53b3JkcygpLCBiaXRzLT5zaXplSW5CeXRlcygpKTsKKyNp
ZiAhZGVmaW5lZChOREVCVUcpCisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSBiaXRzLT5i
ZWdpbigpOyBpbmRleCA8IGJpdHMtPmVuZCgpOyArK2luZGV4KQorICAgICAgICAgICAgQkFTU0VS
VChiaXRzLT5nZXQoaW5kZXgpID09IG5ld0JpdHMtPmdldChpbmRleCkpOworI2VuZGlmCisgICAg
ICAgIHN0ZDo6YXRvbWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KTsg
Ly8gRW5zdXJlIHRhYmxlIGdldHMgdmFsaWQgd2hlbiBpdCBpcyB2aXNpYmxlIHRvIHRoZSBvdGhl
ciB0aHJlYWRzIHNpbmNlIE9iamVjdFR5cGVUYWJsZTo6Z2V0IGRvZXMgbm90IHRha2UgYSBsb2Nr
LgorICAgICAgICBtX2JpdHMgPSBuZXdCaXRzOworICAgICAgICBiaXRzID0gbmV3Qml0czsKKyAg
ICB9CisgICAgYm9vbCB2YWx1ZSA9ICEhc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxPYmplY3RUeXBlPj4ob2JqZWN0VHlwZSk7CisgICAgQkFTU0VSVChzdGF0aWNfY2FzdDxPYmpl
Y3RUeXBlPih2YWx1ZSkgPT0gb2JqZWN0VHlwZSk7CisgICAgYml0cy0+c2V0KGluZGV4LCB2YWx1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09i
amVjdFR5cGVUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNGY2ZmM1MTM2YWU4MWE4MzU5YWU4NDM2YTFm
NmZjYjI5NzQ4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09i
amVjdFR5cGVUYWJsZS5oCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNdXRleC5o
IgorI2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKKyNpbmNsdWRlICJTaXplcy5oIgorCituYW1lc3Bh
Y2UgYm1hbGxvYyB7CisKK2NsYXNzIENodW5rOworCisvLyBRdWVyeWluZyBPYmplY3RUeXBlIGZv
ciBDaHVuayB3aXRob3V0IGxvY2tpbmcuCitjbGFzcyBPYmplY3RUeXBlVGFibGUgeworcHVibGlj
OgorICAgIE9iamVjdFR5cGVUYWJsZSgpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBzaGlmdEFtb3VudCA9IDIwOworICAgIHN0YXRpY19hc3NlcnQoKDFVTEwgPDwgc2hpZnRBbW91
bnQpID09IGNodW5rU2l6ZSk7CisgICAgc3RhdGljX2Fzc2VydCgoQk9TX0VGRkVDVElWRV9BRERS
RVNTX1dJRFRIIC0gc2hpZnRBbW91bnQpIDw9IDMyKTsKKworICAgIGNsYXNzIEJpdHM7CisKKyAg
ICBPYmplY3RUeXBlIGdldChDaHVuayopOworICAgIHZvaWQgc2V0KFVuaXF1ZUxvY2tIb2xkZXIm
LCBDaHVuayosIE9iamVjdFR5cGUpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBj
b252ZXJ0VG9JbmRleChDaHVuayogY2h1bmspCisgICAgeworICAgICAgICB1aW50cHRyX3QgYWRk
cmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjaHVuayk7CisgICAgICAgIEJBU1NF
UlQoIShhZGRyZXNzICYgKH5jaHVua01hc2spKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYWRkcmVzcyA+PiBzaGlmdEFtb3VudCk7CisgICAgfQorCisgICAgQml0cyog
bV9iaXRzOworfTsKKworY2xhc3MgT2JqZWN0VHlwZVRhYmxlOjpCaXRzIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBXb3JkVHlwZSA9IHVuc2lnbmVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgYml0Q291bnRQZXJXb3JkID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBXb3JkVHlwZSBvbmUgPSAxOworICAgIGNvbnN0ZXhwciBCaXRzKEJpdHMqIHByZXZp
b3VzLCB1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKQorICAgICAgICA6IG1fcHJldmlvdXMo
cHJldmlvdXMpCisgICAgICAgICwgbV9iZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgZ2V0KHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lk
IHNldCh1bnNpZ25lZCBpbmRleCwgYm9vbCk7CisKKyAgICBCaXRzKiBwcmV2aW91cygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJldmlvdXM7IH0KKyAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fYmVnaW47IH0KKyAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsg
fQorICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX2JlZ2luOyB9
CisgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBjb3VudCgpIC8gODsg
fQorCisgICAgY29uc3QgV29yZFR5cGUqIHdvcmRzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxCaXRzKj4odGhpcyktPndvcmRzKCk7IH0KKyAgICBXb3JkVHlwZSogd29yZHMoKSB7IHJldHVy
biByZWludGVycHJldF9jYXN0PFdvcmRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHRoaXMpICsgc2l6ZW9mKEJpdHMpKTsgfQorCisgICAgV29yZFR5cGUqIHdvcmRGb3JJbmRleCh1
bnNpZ25lZCk7CisKK3ByaXZhdGU6CisgICAgQml0cyogbV9wcmV2aW91cyB7IG51bGxwdHIgfTsg
Ly8gS2VlcGluZyB0aGUgcHJldmlvdXMgQml0cyoganVzdCB0byBzdXBwcmVzcyBMZWFrcyB3YXJu
aW5ncy4KKyAgICB1bnNpZ25lZCBtX2JlZ2luIHsgMCB9OworICAgIHVuc2lnbmVkIG1fZW5kIHsg
MCB9OworfTsKK3N0YXRpY19hc3NlcnQoIShzaXplb2YoT2JqZWN0VHlwZVRhYmxlOjpCaXRzKSAl
IHNpemVvZihPYmplY3RUeXBlVGFibGU6OkJpdHM6OldvcmRUeXBlKSkpOworCitleHRlcm4gQkVY
UE9SVCBPYmplY3RUeXBlVGFibGU6OkJpdHMgc2VudGluZWxCaXRzOworCitpbmxpbmUgT2JqZWN0
VHlwZVRhYmxlOjpPYmplY3RUeXBlVGFibGUoKQorICAgIDogbV9iaXRzKCZzZW50aW5lbEJpdHMp
Cit7Cit9CisKK2lubGluZSBPYmplY3RUeXBlIE9iamVjdFR5cGVUYWJsZTo6Z2V0KENodW5rKiBj
aHVuaykKK3sKKyAgICBCaXRzKiBiaXRzID0gbV9iaXRzOworICAgIHVuc2lnbmVkIGluZGV4ID0g
Y29udmVydFRvSW5kZXgoY2h1bmspOworICAgIEJBU1NFUlQoYml0cyk7CisgICAgaWYgKGJpdHMt
PmJlZ2luKCkgPD0gaW5kZXggJiYgaW5kZXggPCBiaXRzLT5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PE9iamVjdFR5cGU+KGJpdHMtPmdldChpbmRleCkpOworICAgIHJldHVybiB7
IH07Cit9CisKK2lubGluZSBib29sIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Z2V0KHVuc2lnbmVk
IGluZGV4KQoreworICAgIHVuc2lnbmVkIG4gPSBpbmRleCAtIGJlZ2luKCk7CisgICAgcmV0dXJu
IHdvcmRzKClbbiAvIGJpdENvdW50UGVyV29yZF0gJiAob25lIDw8IChuICUgYml0Q291bnRQZXJX
b3JkKSk7Cit9CisKK2lubGluZSB2b2lkIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6c2V0KHVuc2ln
bmVkIGluZGV4LCBib29sIHZhbHVlKQoreworICAgIHVuc2lnbmVkIG4gPSBpbmRleCAtIGJlZ2lu
KCk7CisgICAgaWYgKHZhbHVlKQorICAgICAgICB3b3JkcygpW24gLyBiaXRDb3VudFBlcldvcmRd
IHw9IChvbmUgPDwgKG4gJSBiaXRDb3VudFBlcldvcmQpKTsKKyAgICBlbHNlCisgICAgICAgIHdv
cmRzKClbbiAvIGJpdENvdW50UGVyV29yZF0gJj0gfihvbmUgPDwgKG4gJSBiaXRDb3VudFBlcldv
cmQpKTsKK30KKworaW5saW5lIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUqIE9iamVj
dFR5cGVUYWJsZTo6Qml0czo6d29yZEZvckluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHVu
c2lnbmVkIG4gPSBpbmRleCAtIGJlZ2luKCk7CisgICAgcmV0dXJuICZ3b3JkcygpW24gLyBiaXRD
b3VudFBlcldvcmRdOworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NjYXZlbmdlci5jcHAKaW5kZXggOTk2MjYxYWRlMWM2NDhkOTc1OTU2NDA0NzEwOTg0ZmQw
MGI0N2RkNy4uNjEwNjc4YTYxNTdjZTdmMjEzZmI2NmI4YzdlZTRhYWQxNzk0ZjEyNyAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2Nh
dmVuZ2VyOjpzY2F2ZW5nZSgpCiAjaWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICAgICAg
ICAgIHNpemVfdCBkZWZlcnJlZERlY29tbWl0cyA9IDA7CiAjZW5kaWYKLSAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICAgICAgICAgIFVuaXF1ZUxvY2tIb2xk
ZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51
bUhlYXBzOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBLaW5kKHN0
YXRpY19jYXN0PEhlYXBLaW5kPihpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQogICAg
ICAgICBCdWxrRGVjb21taXQgZGVjb21taXR0ZXI7CiAgICAgICAgIHsKICAgICAgICAgICAgIFBy
aW50VGltZSBwcmludFRpbWUoIlxucGFydGlhbFNjYXZlbmdlIHVuZGVyIGxvY2sgdGltZSIpOwot
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAg
VW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtSGVhcHM7IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0
aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC0zNTUsNyArMzU1LDcgQEAgc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFi
bGVNZW1vcnkoKQogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBp
LS07KSB7CiAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVh
cEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399311</attachid>
            <date>2020-05-13 15:59:41 -0700</date>
            <delta_ts>2020-05-13 18:09:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211809-20200513155941.patch</filename>
            <type>text/plain</type>
            <size>29088</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMjgzZmZiMDI0ZmMyYjFh
MGM3NjA0OThiNzA2YzU2Y2EzMzIzYmNhNC4uMTgxYzVkMTQ0NjI4OTAxYzIwMzkyYTIzYWU4ZjEy
MTY5MjhkMTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTA1LTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEludHJv
ZHVjZSBsb2NrLWxlc3MgT2JqZWN0VHlwZSBxdWVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIE9iamVjdFR5cGVUYWJsZSwg
d2hpY2ggYWxsb3dzIGxvY2stbGVzcyBPYmplY3RUeXBlIHF1ZXJ5IGZvciBDaHVuayouCisgICAg
ICAgIEl0IGhhcyBiaXQtdmVjdG9yIHRvIHN0b3JlIE9iamVjdFR5cGUgcGVyIGFkZHJlc3MuIEFu
ZCBlYWNoIGJpdCByZXByZXNlbnRzIDFNQiBvZiBWQSByZWdpb24gc2luY2UKKyAgICAgICAgQ2h1
bmsqJ3Mgc2l6ZSBpcyBhdCBsZWFzdCAxTUIgYW5kIE9iamVjdFR5cGUgaXMgMWJpdCBkYXRhLiBF
dmVyeSB0aW1lIHdlIGV4dGVuZCB0aGlzIGJpdC12ZWN0b3IKKyAgICAgICAgdG8gc3VwcG9ydCBs
YXJnZXIgVkEgcmVnaW9uLCB3ZSBkbyBub3QgZnJlZSB0aGUgb2xkIGJpdC12ZWN0b3IuIFNpbmNl
IHdlIGFsd2F5cyBhbGxvY2F0ZSBwb3dlci1vZi0yCisgICAgICAgIHNpemVkIGJpdC12ZWN0b3Is
ICMgb2YgZXh0ZW5zaW9uIGlzIGxpbWl0ZWQgYW5kIGl0IGRvZXMgbm90IHdhc3RlIG11Y2ggbWVt
b3J5IGJlY2F1c2UgQ2h1bmsncyBzaXplCisgICAgICAgIGlzIGVub3VnaCBsYXJnZSAoMU1CKS4g
U2luY2UgZWFjaCA0S0IgcGFnZSBvbiBtYWNPUyBjYW4gcmVwcmVzZW50IGEgYml0LXZlY3RvciBm
b3IgMzJHQiBWQSByZWdpb24sCisgICAgICAgIGluIHByYWN0aWNlLCB0aGlzIGV4dGVuc2lvbiBh
bG1vc3QgbmV2ZXIgaGFwcGVucy4gSSB2ZXJpZmllZCB0aGF0IDRLQiBwYWdlIGNhbiBoYW5kbGUg
bWVtb3J5CisgICAgICAgIGFsbG9jYXRpb25zIGluIEpldFN0cmVhbTIgYW5kIEdtYWlsLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAgICAgIChi
bWFsbG9jOjpyb3VuZFVwVG9Qb3dlck9mVHdvKToKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2Nh
dG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9jYXRlU2xvd0Nh
c2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWNvbW1pdExhcmdl
UmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxs
b2NhdGVTbWFsbENodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFs
bExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c3BsaXRBbmRBbGxvY2F0ZSk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjppc0xhcmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9j
L0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFyZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpvYmplY3RUeXBlKToKKyAg
ICAgICAgKiBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYm1h
bGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpzZXQpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlw
ZVRhYmxlLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpjb252
ZXJ0VG9JbmRleCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OkJp
dHMpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpwcmV2aW91cyBj
b25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OmJlZ2luIGNv
bnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6ZW5kIGNvbnN0
KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6Y291bnQgY29uc3Qp
OgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpzaXplSW5CeXRlcyBj
b25zdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3RUeXBlVGFibGU6OkJpdHM6OndvcmRzIGNv
bnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVjdFR5cGVUYWJsZTo6Qml0czo6d29yZHMpOgor
ICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpPYmplY3RUeXBlVGFibGUpOgorICAg
ICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpnZXQpOgorICAgICAgICAoYm1hbGxvYzo6
T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpnZXQpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlw
ZVRhYmxlOjpCaXRzOjpzZXQpOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjp3b3JkRm9ySW5kZXgpOgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDoKKyAg
ICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6
U2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2Vy
OjpmcmVlYWJsZU1lbW9yeSk6CisKIDIwMjAtMDUtMTEgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uu
c3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtibWFsbG9jXVtXVEZdIEFkZCBjb21wdXRpbmcg
bWVtb3J5IHNpemUgaW1wbGVtZW50YXRpb24gZm9yIEZyZWVCU0QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTIwZDYyZTVkNTc5NGFhYjEzNGFmMzA3MDQ3ZTZiMjVlOWMxYzI5MS4uM2Q5OTBlYjli
YThkMzg5YzQ2NDNkMTgwMGY1MDM1OTg0YmQ3YTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAg
LTI5LDYgKzI5LDcgQEAgc2V0KGJtYWxsb2NfU09VUkNFUwogICAgIGJtYWxsb2MvTG9nZ2luZy5j
cHAKICAgICBibWFsbG9jL011dGV4LmNwcAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKyAg
ICBibWFsbG9jL09iamVjdFR5cGVUYWJsZS5jcHAKICAgICBibWFsbG9jL1BlclByb2Nlc3MuY3Bw
CiAgICAgYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCiAgICAgYm1hbGxvYy9ibWFsbG9jLmNwcApAQCAt
MTEwLDYgKzExMSw3IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxvYy9N
dXRleC5oCiAgICAgYm1hbGxvYy9PYmplY3QuaAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5oCisg
ICAgYm1hbGxvYy9PYmplY3RUeXBlVGFibGUuaAogICAgIGJtYWxsb2MvUGFja2VkLmgKICAgICBi
bWFsbG9jL1BlckhlYXBLaW5kLmgKICAgICBibWFsbG9jL1BlclByb2Nlc3MuaApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVhNTMx
NDU0NGI5NDhmMjJkMmVjNjg1MmNmNDk3Y2RiY2M1MTQzMjQuLjVjMmMzZDU2ZDk3NTljYzExMWRi
M2IzZjk0YWRkMzQ4NWM5NmRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOSw2ICsxMzksOCBAQAogCQlERThCMTNCMzIx
Q0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzFFNzQ4
MDIyMzhDQTVDMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8q
IFN0YXRpY1BlclByb2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4RDg0QzIzQ0VCMzg5
MDA1NDVCMTggLyogUGFja2VkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM3OEE5REYyNDZCNjg3MjAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc4
QTlERTI0NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmNwcCAqLzsgfTsKKwkJRTM3
OEE5RTAyNDZCNjg3NTAwMjlDMkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OEE5REQyNDZCNjg2QTAwMjlDMkJC
IC8qIE9iamVjdFR5cGVUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzQTQxM0M5MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNBNDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGMjQ0MDIyMjVE
MkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFy
ZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNGMjQ0MDQyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDMyMjVEMkM3NjAw
QTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICovOyB9OwpAQCAtMjkzLDYgKzI5NSw4IEBACiAJ
CURFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJW
TVRhZ3MuaDsgcGF0aCA9IGJtYWxsb2MvQlZNVGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdGF0aWNQZXJQcm9jZXNzLmg7IHBhdGgg
PSBibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQYWNrZWQuaDsgcGF0aCA9IGJtYWxsb2MvUGFja2VkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNzhBOUREMjQ2QjY4NkEwMDI5QzJCQiAvKiBPYmpl
Y3RUeXBlVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT2JqZWN0VHlwZVRhYmxlLmg7IHBhdGggPSBi
bWFsbG9jL09iamVjdFR5cGVUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzc4QTlERTI0NkI2ODZBMDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE9iamVjdFR5cGVUYWJsZS5jcHA7IHBhdGggPSBibWFsbG9jL09iamVjdFR5cGVU
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQxM0M4MjI2MDYxMTQw
MDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlSW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFy
ZWRQYWdlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMTIy
NUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMz
IC8qIElzb1NoYXJlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSXNvU2hhcmVkUGFnZS5jcHA7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkwLDYgKzQ5NCw4IEBACiAJCQkJMTQ0QkUx
MUUxQ0EzNDY1MjAwOTlDOEMwIC8qIE9iamVjdC5oICovLAogCQkJCTE0MTA1RTgzMThFMTQzNzQw
MDNBMTA2RSAvKiBPYmplY3RUeXBlLmNwcCAqLywKIAkJCQkxNDg1NjU2MDE4QTQzREJBMDBFRDY5
NDIgLyogT2JqZWN0VHlwZS5oICovLAorCQkJCUUzNzhBOURFMjQ2QjY4NkEwMDI5QzJCQiAvKiBP
YmplY3RUeXBlVGFibGUuY3BwICovLAorCQkJCUUzNzhBOUREMjQ2QjY4NkEwMDI5QzJCQiAvKiBP
YmplY3RUeXBlVGFibGUuaCAqLywKIAkJCQk3OTVBQjNDNjIwNkUwRDI1MDA3NEZFNzYgLyogUGh5
c2ljYWxQYWdlTWFwLmggKi8sCiAJCQkJQUQxNEFEMjcyMDI1MjlBNjAwODkwRTNCIC8qIFByb2Nl
c3NDaGVjay5oICovLAogCQkJCUFEMTRBRDI4MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hl
Y2subW0gKi8sCkBAIC02NDUsNiArNjUxLDcgQEAKIAkJCQkxNDNDQjgxRDE5MDIyQkM5MDBCMTZB
NDUgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFGMUNBMzQ2NTIwMDk5QzhD
MCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkzMThGNDhEMEYwMDk1MDcw
MiAvKiBPYmplY3RUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzc4QTlFMDI0NkI2ODc1MDAy
OUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4RDg0RDIz
Q0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0OTFG
MjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3
OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
Nyw2ICs3ODQsNyBAQAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0NCODFDMTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEYyNzFDODE4RUEzOTkwMDA4QzE1MkYgLyogT2JqZWN0
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc4QTlERjI0NkI2ODcyMDAyOUMyQkIgLyog
T2JqZWN0VHlwZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjZBN0E1MjA1NDgzMTMw
MDkwQTE0MSAvKiBQZXJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEMTRBRDJBMjAy
NTI5QzcwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjVC
RjE1MjFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKaW5kZXggZDIyZjNjZTA1NDQ5NWQwMmMwYzU0OTMzZGQx
OGE3MWY4NzA3MDBlOS4uNTEyOGFlODgzNWI3ZGRjM2EzMmQyNTE0YjI2OTA1OWNjNGJiMmMyMiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCkBAIC0yMTksNiArMjE5LDE5IEBAIGNvbnN0
ZXhwciB1bnNpZ25lZCBnZXRMU0JTZXROb25aZXJvQ29uc3RleHByKFQgdCkKICAgICByZXR1cm4g
Y3R6Q29uc3RleHByKHQpOwogfQogCisvLyBGcm9tIGh0dHA6Ly9ncmFwaGljcy5zdGFuZm9yZC5l
ZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCNSb3VuZFVwUG93ZXJPZjIKK2NvbnN0ZXhwciB1aW50
MzJfdCByb3VuZFVwVG9Qb3dlck9mVHdvKHVpbnQzMl90IHYpCit7CisgICAgdi0tOworICAgIHYg
fD0gdiA+PiAxOworICAgIHYgfD0gdiA+PiAyOworICAgIHYgfD0gdiA+PiA0OworICAgIHYgfD0g
diA+PiA4OworICAgIHYgfD0gdiA+PiAxNjsKKyAgICB2Kys7CisgICAgcmV0dXJuIHY7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCmluZGV4IGQxNDE0MDdiYmI3NzlmOWRmMDJmYTg4
NTczMGM2NDNmZWQyZDZmYWMuLjdkMWUzNGU5N2E3NzkyZDhmZDMwNmFlMjA1ZDZmNzAxMjNhYzhi
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC02OCwxNCArNjgs
MTYgQEAgdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqIG9iamVjdCkK
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVW5pcXVlTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOwotICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmpl
Y3QpKSB7CisgICAgaWYgKG1faGVhcC5pc0xhcmdlKG9iamVjdCkpIHsKKyAgICAgICAgVW5pcXVl
TG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAgICBtX2hlYXAuZGVhbGxvY2F0
ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bV9vYmplY3RMb2cuc2l6ZSgpID09IG1fb2JqZWN0TG9nLmNhcGFjaXR5KCkpCisgICAgaWYgKG1f
b2JqZWN0TG9nLnNpemUoKSA9PSBtX29iamVjdExvZy5jYXBhY2l0eSgpKSB7CisgICAgICAgIFVu
aXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcHJvY2Vzc09iamVj
dExvZyhsb2NrKTsKKyAgICB9CiAKICAgICBtX29iamVjdExvZy5wdXNoKG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCBmMmEzZTlhMTJmZTkxNDA0YWUzNDM2NDNiODZmZTVi
YjVhNjEyZDE4Li40OTRhMmI1NGNjYzEzOGE0ZGFkMDViZjY2ODE2YzM2MzdmNTRlNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2Fj
YWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQp
KTsKIH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQor
c2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIHJl
dHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSGVhcDo6
bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgbV9jb25kaXRp
b24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25z
dCBMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0
ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFy
Z2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290
cHJpbnQgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5
IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTcsOSArMTE3LDkgQEAgdm9pZCBI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmIHJh
bmdlLCBCdWxrRGVjb21taXQKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQg
SGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNv
bW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQnVs
a0RlY29tbWl0JiBkZWNvbW1pdHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0
IExvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVm
ZXJyZWREZWNvbW1pdHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKFVuaXF1ZUxvY2tIb2xkZXImIGxv
Y2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMp
CiAjZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywg
QnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkCiAKICAgICBmb3IgKGF1dG8mIGxp
c3QgOiBtX2NodW5rQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGRlYWxsb2NhdGVTbWFsbENodW5rKGxpc3QucG9wKCksICZsaXN0IC0gJm1fY2h1
bmtDYWNoZVswXSk7CisgICAgICAgICAgICBkZWFsbG9jYXRlU21hbGxDaHVuayhsb2NrLCBsaXN0
LnBvcCgpLCAmbGlzdCAtICZtX2NodW5rQ2FjaGVbMF0pOwogICAgIH0KIAogICAgIGZvciAoTGFy
Z2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
SGVhcDo6c2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNv
bW1pdHRlciwgc2l6ZV90JiBkCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lk
IEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIEJ1
bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJt
YXJrKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7
CiAgICAgdm9pZCogbmV3SGlnaFdhdGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJh
bmdlJiByYW5nZSA6IG1fbGFyZ2VGcmVlKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIZWFw
OjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHBhZ2VD
bGFzcywgRmFpbHVyZUEKIAogICAgICAgICBDaHVuayogY2h1bmsgPSBuZXcgKG1lbW9yeSkgQ2h1
bmsocGFnZVNpemUpOwogCi0gICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5rLCBPYmplY3RU
eXBlOjpTbWFsbCk7CisgICAgICAgIG1fb2JqZWN0VHlwZXMuc2V0KGxvY2ssIGNodW5rLCBPYmpl
Y3RUeXBlOjpTbWFsbCk7CiAKICAgICAgICAgc2l6ZV90IGFjY291bnRlZEluRnJlZWFibGUgPSAw
OwogICAgICAgICBmb3JFYWNoUGFnZShjaHVuaywgcGFnZVNpemUsIFsmXShTbWFsbFBhZ2UqIHBh
Z2UpIHsKQEAgLTI0NCw5ICsyNDQsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhV
bmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQQogICAgICAg
ICBtX2ZyZWVQYWdlc1twYWdlQ2xhc3NdLnB1c2goY2h1bmspOwogfQogCi12b2lkIEhlYXA6OmRl
YWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykKK3ZvaWQg
SGVhcDo6ZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgQ2h1bmsq
IGNodW5rLCBzaXplX3QgcGFnZUNsYXNzKQogewotICAgIG1fb2JqZWN0VHlwZXMuc2V0KGNodW5r
LCBPYmplY3RUeXBlOjpMYXJnZSk7CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgY2h1bmss
IE9iamVjdFR5cGU6OkxhcmdlKTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxv
Y2F0ZWQucmVtb3ZlKGNodW5rKTsKICAgICBzaXplX3QgdG90YWxQaHlzaWNhbFNpemUgPSBzaXpl
OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShVbmlx
dWVMb2NrSG9sZGVyJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmCiAgICAgICAgIG1f
ZnJlZVBhZ2VzW3BhZ2VDbGFzc10ucmVtb3ZlKGNodW5rKTsKIAogICAgICAgICBpZiAoIW1fY2h1
bmtDYWNoZVtwYWdlQ2xhc3NdLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlYWxsb2NhdGVTbWFs
bENodW5rKG1fY2h1bmtDYWNoZVtwYWdlQ2xhc3NdLnBvcCgpLCBwYWdlQ2xhc3MpOworICAgICAg
ICAgICAgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10u
cG9wKCksIHBhZ2VDbGFzcyk7CiAKICAgICAgICAgbV9jaHVua0NhY2hlW3BhZ2VDbGFzc10ucHVz
aChjaHVuayk7CiAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVT
bWFsbEJ1bXBSYW5nZXNCeU9iamVjdCgKICAgICB9CiB9CiAKLUxhcmdlUmFuZ2UgSGVhcDo6c3Bs
aXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9j
YXRlKFVuaXF1ZUxvY2tIb2xkZXImIGxvY2ssIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFw
S2luZChtX2tpbmQpKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3Bs
aXRBbmRBbGxvY2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVf
dCBhCiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChuZXh0KTsKICAgICB9CiAKLSAgICBtX29iamVj
dFR5cGVzLnNldChDaHVuazo6Z2V0KHJhbmdlLmJlZ2luKCkpLCBPYmplY3RUeXBlOjpMYXJnZSk7
CisgICAgbV9vYmplY3RUeXBlcy5zZXQobG9jaywgQ2h1bms6OmdldChyYW5nZS5iZWdpbigpKSwg
T2JqZWN0VHlwZTo6TGFyZ2UpOwogCiAgICAgbV9sYXJnZUFsbG9jYXRlZC5zZXQocmFuZ2UuYmVn
aW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gcmFuZ2U7CkBAIC02MjEsMTEgKzYyMSw2
IEBAIExhcmdlUmFuZ2UgSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKQogICAgIHJldHVybiBMYXJnZVJhbmdlKG1lbW9yeSwgc2l6ZSwgMCwg
MCk7CiB9CiAKLWJvb2wgSGVhcDo6aXNMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2Jq
ZWN0KQotewotICAgIHJldHVybiBtX29iamVjdFR5cGVzLmdldChPYmplY3Qob2JqZWN0KS5jaHVu
aygpKSA9PSBPYmplY3RUeXBlOjpMYXJnZTsKLX0KLQogc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShV
bmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxs
b2NhdGVkLmdldChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBhMjlhM2QyMGE2YTcx
NzlhYTkwYTg3NWQxM2JiZjBmZTM1N2RhOWUwLi41NDlkZDI0ZjZjNTg5NjQ2Y2QyMjYwNGQ4Yzli
NDllZjBjNzQ1MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIk1hcC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSAiT2JqZWN0LmgiCisj
aW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiUGVySGVhcEtpbmQuaCIKICNp
bmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCkBAIC02
OSwxOSArNzAsMTkgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShVbmlx
dWVMb2NrSG9sZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsK
ICAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwogCi0g
ICAgYm9vbCBpc0xhcmdlKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgYm9vbCBpc0xh
cmdlKHZvaWQqKTsKICAgICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lk
Kik7CiAgICAgdm9pZCBzaHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2Um
LCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOwotICAg
IHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZv
aWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1p
dCYpOworICAgIHZvaWQgc2NhdmVuZ2UoVW5pcXVlTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1pdCYp
OwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21t
aXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsK
ICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtEZWNvbW1p
dCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKFVuaXF1
ZUxvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7
CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHNp
emVfdCBmcmVlYWJsZU1lbW9yeShVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3Rw
cmludCgpOwogCiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsK
QEAgLTkyLDcgKzkzLDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0Vs
aWdpYmlsZShjb25zdCBMb2NrSG9sZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1p
dExhcmdlUmFuZ2UoY29uc3QgTG9ja0hvbGRlciYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQm
KTsKKyAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VS
YW5nZSYsIEJ1bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKQEAgLTExNyw3ICsxMTgsNyBA
QCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hv
bGRlciYsIE9iamVjdCwgTGluZUNhY2hlJik7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVu
ayhVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7Ci0g
ICAgdm9pZCBkZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayosIHNpemVfdCBwYWdlQ2xhc3MpOwor
ICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYsIENodW5rKiwg
c2l6ZV90IHBhZ2VDbGFzcyk7CiAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVu
ayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxv
Y2F0ZShVbmlxdWVMb2NrSG9sZGVyJiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCk7CkBAIC0xMzUsNyArMTM2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgTWFwPHZvaWQqLCBz
aXplX3QsIExhcmdlT2JqZWN0SGFzaD4gbV9sYXJnZUFsbG9jYXRlZDsKICAgICBMYXJnZU1hcCBt
X2xhcmdlRnJlZTsKIAotICAgIE1hcDxDaHVuayosIE9iamVjdFR5cGUsIENodW5rSGFzaD4gbV9v
YmplY3RUeXBlczsKKyAgICBPYmplY3RUeXBlVGFibGUgbV9vYmplY3RUeXBlczsKIAogICAgIFNj
YXZlbmdlciogbV9zY2F2ZW5nZXIgeyBudWxscHRyIH07CiAKQEAgLTE2OCw2ICsxNjksMTEgQEAg
aW5saW5lIHZvaWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
T2JqZWN0IG9iamVjdCwgTGluZUNhY2gKICAgICBkZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIG9i
amVjdCwgbGluZUNhY2hlKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMYXJnZSh2b2lkKiBv
YmplY3QpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNo
dW5rKCkpID09IE9iamVjdFR5cGU6OkxhcmdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
T2JqZWN0VHlwZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmlu
ZGV4IDFlMmZkNTM3MDVlYTU3Mzg0NDlkODkyNzJjYThlYTQ1ZGVkYjJhZWUuLmExOTZkMTc1OGQy
Nzg4YTJjNjYzZWEzMzUzMjVmMDU5OTFhZGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcApAQCAtMzgsOCArMzgsNyBAQCBPYmplY3RUeXBlIG9iamVjdFR5cGUoSGVhcCYg
aGVhcCwgdm9pZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJl
dHVybiBPYmplY3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2so
SGVhcDo6bXV0ZXgoKSk7Ci0gICAgICAgIGlmIChoZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkK
KyAgICAgICAgaWYgKGhlYXAuaXNMYXJnZShvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9i
amVjdFR5cGU6OkxhcmdlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZVRhYmxlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2Jq
ZWN0VHlwZVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODExMmMwZmU5NzllMzg5NjE4NjExZWY3ODdi
OTA2ZTAwY2ViZGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9P
YmplY3RUeXBlVGFibGUuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiT2JqZWN0VHlwZVRhYmxlLmgiCisK
KyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworT2JqZWN0
VHlwZVRhYmxlOjpCaXRzIHNlbnRpbmVsQml0cyB7IG51bGxwdHIsIDAsIDAgfTsKKwordm9pZCBP
YmplY3RUeXBlVGFibGU6OnNldChVbmlxdWVMb2NrSG9sZGVyJiwgQ2h1bmsqIGNodW5rLCBPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBjb252ZXJ0VG9JbmRl
eChjaHVuayk7CisgICAgQml0cyogYml0cyA9IG1fYml0czsKKyAgICBpZiAoIShiaXRzLT5iZWdp
bigpIDw9IGluZGV4ICYmIGluZGV4IDwgYml0cy0+ZW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVk
IG5ld0JlZ2luID0gMDsKKyAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gMDsKKyAgICAgICAgaWYg
KGJpdHMgPT0gJnNlbnRpbmVsQml0cykgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBpbml0aWFs
IGFsbG9jYXRpb24gb2YgT2JqZWN0VHlwZVRhYmxlLiBJbiB0aGlzIGNhc2UsIGl0IGNvdWxkIGJl
IHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBmaXJzdCByZWdpc3RyYXRpb24sCisgICAgICAgICAgICAv
LyBzb21lIFZBcyBhcmUgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIGEgZGlmZmVyZW50IHB1cnBvc2Us
IGFuZCBsYXRlciB0aGV5IHdpbGwgYmUgcmV1c2VkIGZvciBibWFsbG9jLiBJbiB0aGF0IGNhc2Us
CisgICAgICAgICAgICAvLyBzb29uLCB3ZSB3aWxsIHNlZSBhIHNtYWxsZXIgaW5kZXggcmVxdWVz
dCB0aGFuIHRoaXMgaW5pdGlhbCBvbmUuIFdlIHN1YnRyYWN0IGEgMTI4TUIgb2Zmc2V0IHRvIHRo
ZSBpbml0aWFsIG5ld0JlZ2luCisgICAgICAgICAgICAvLyB0byBjb3ZlciBzdWNoIHBhdHRlcm5z
IHdpdGhvdXQgZXh0ZW5kaW5nIHRhYmxlIHRvbyBxdWlja2x5LgorICAgICAgICAgICAgbmV3QmVn
aW4gPSBzdGQ6Om1pbjx1bnNpZ25lZD4oaW5kZXgsIGluZGV4IC0gT2JqZWN0VHlwZVRhYmxlOjpC
aXRzOjpiaXRDb3VudFBlcldvcmQgKiA0KTsKKyAgICAgICAgICAgIG5ld0VuZCA9IGluZGV4ICsg
MTsKKyAgICAgICAgfSBlbHNlIGlmIChpbmRleCA8IGJpdHMtPmJlZ2luKCkpIHsKKyAgICAgICAg
ICAgIEJBU1NFUlQoYml0cy0+YmVnaW4oKSk7CisgICAgICAgICAgICBCQVNTRVJUKGJpdHMtPmVu
ZCgpKTsKKyAgICAgICAgICAgIG5ld0JlZ2luID0gc3RkOjptaW48dW5zaWduZWQ+KGluZGV4LCBi
aXRzLT5iZWdpbigpIC0gYml0cy0+Y291bnQoKSk7CisgICAgICAgICAgICBuZXdFbmQgPSBiaXRz
LT5lbmQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEJBU1NFUlQoYml0cy0+YmVn
aW4oKSk7CisgICAgICAgICAgICBCQVNTRVJUKGJpdHMtPmVuZCgpKTsKKyAgICAgICAgICAgIG5l
d0JlZ2luID0gYml0cy0+YmVnaW4oKTsKKyAgICAgICAgICAgIG5ld0VuZCA9IHN0ZDo6bWF4PHVu
c2lnbmVkPihpbmRleCArIDEsIGJpdHMtPmVuZCgpICsgYml0cy0+Y291bnQoKSk7CisgICAgICAg
IH0KKyAgICAgICAgbmV3QmVnaW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm91bmREb3duVG9N
dWx0aXBsZU9mPHNpemVfdD4oT2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQs
IG5ld0JlZ2luKSk7CisgICAgICAgIEJBU1NFUlQobmV3RW5kID4gbmV3QmVnaW4pOworCisgICAg
ICAgIHVuc2lnbmVkIGNvdW50ID0gbmV3RW5kIC0gbmV3QmVnaW47CisgICAgICAgIHNpemVfdCBz
aXplID0gdm1TaXplKHNpemVvZihCaXRzKSArIChyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVfdD4o
T2JqZWN0VHlwZVRhYmxlOjpCaXRzOjpiaXRDb3VudFBlcldvcmQsIGNvdW50KSAvIDgpKTsKKyAg
ICAgICAgUkVMRUFTRV9CQVNTRVJUKHNpemUgPD0gMHg4MDAwMDAwMFUpOyAvLyBUb28gbGFyZ2Ug
Yml0dmVjdG9yLCBvdXQtb2YtbWVtb3J5LgorICAgICAgICBzaXplID0gcm91bmRVcFRvUG93ZXJP
ZlR3byhzaXplKTsKKyAgICAgICAgbmV3RW5kID0gbmV3QmVnaW4gKyAoKHNpemUgLSBzaXplb2Yo
Qml0cykpIC8gc2l6ZW9mKE9iamVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUpKSAqIE9iamVj
dFR5cGVUYWJsZTo6Qml0czo6Yml0Q291bnRQZXJXb3JkOworICAgICAgICBCQVNTRVJUKG5ld0Vu
ZCA+IG5ld0JlZ2luKTsKKyAgICAgICAgdm9pZCogYWxsb2NhdGVkID0gdm1BbGxvY2F0ZShzaXpl
KTsKKyAgICAgICAgbWVtc2V0KGFsbG9jYXRlZCwgMCwgc2l6ZSk7CisgICAgICAgIGF1dG8qIG5l
d0JpdHMgPSBuZXcgKGFsbG9jYXRlZCkgQml0cyhiaXRzLCBuZXdCZWdpbiwgbmV3RW5kKTsKKwor
ICAgICAgICBtZW1jcHkobmV3Qml0cy0+d29yZEZvckluZGV4KGJpdHMtPmJlZ2luKCkpLCBiaXRz
LT53b3JkcygpLCBiaXRzLT5zaXplSW5CeXRlcygpKTsKKyNpZiAhZGVmaW5lZChOREVCVUcpCisg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSBiaXRzLT5iZWdpbigpOyBpbmRleCA8IGJpdHMt
PmVuZCgpOyArK2luZGV4KQorICAgICAgICAgICAgQkFTU0VSVChiaXRzLT5nZXQoaW5kZXgpID09
IG5ld0JpdHMtPmdldChpbmRleCkpOworI2VuZGlmCisgICAgICAgIHN0ZDo6YXRvbWljX3RocmVh
ZF9mZW5jZShzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgLy8gRW5zdXJlIHRhYmxlIGdldHMg
dmFsaWQgd2hlbiBpdCBpcyB2aXNpYmxlIHRvIHRoZSBvdGhlciB0aHJlYWRzIHNpbmNlIE9iamVj
dFR5cGVUYWJsZTo6Z2V0IGRvZXMgbm90IHRha2UgYSBsb2NrLgorICAgICAgICBtX2JpdHMgPSBu
ZXdCaXRzOworICAgICAgICBiaXRzID0gbmV3Qml0czsKKyAgICB9CisgICAgYm9vbCB2YWx1ZSA9
ICEhc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxPYmplY3RUeXBlPj4ob2JqZWN0
VHlwZSk7CisgICAgQkFTU0VSVChzdGF0aWNfY2FzdDxPYmplY3RUeXBlPih2YWx1ZSkgPT0gb2Jq
ZWN0VHlwZSk7CisgICAgYml0cy0+c2V0KGluZGV4LCB2YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlw
ZVRhYmxlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGVUYWJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiNGY2ZmM1MTM2YWU4MWE4MzU5YWU4NDM2YTFmNmZjYjI5NzQ4YjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGVUYWJsZS5oCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNdXRleC5oIgorI2luY2x1ZGUgIk9iamVjdFR5
cGUuaCIKKyNpbmNsdWRlICJTaXplcy5oIgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK2NsYXNz
IENodW5rOworCisvLyBRdWVyeWluZyBPYmplY3RUeXBlIGZvciBDaHVuayB3aXRob3V0IGxvY2tp
bmcuCitjbGFzcyBPYmplY3RUeXBlVGFibGUgeworcHVibGljOgorICAgIE9iamVjdFR5cGVUYWJs
ZSgpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaGlmdEFtb3VudCA9IDIwOwor
ICAgIHN0YXRpY19hc3NlcnQoKDFVTEwgPDwgc2hpZnRBbW91bnQpID09IGNodW5rU2l6ZSk7Cisg
ICAgc3RhdGljX2Fzc2VydCgoQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIC0gc2hpZnRBbW91
bnQpIDw9IDMyKTsKKworICAgIGNsYXNzIEJpdHM7CisKKyAgICBPYmplY3RUeXBlIGdldChDaHVu
ayopOworICAgIHZvaWQgc2V0KFVuaXF1ZUxvY2tIb2xkZXImLCBDaHVuayosIE9iamVjdFR5cGUp
OworCitwcml2YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBjb252ZXJ0VG9JbmRleChDaHVuayog
Y2h1bmspCisgICAgeworICAgICAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihjaHVuayk7CisgICAgICAgIEJBU1NFUlQoIShhZGRyZXNzICYgKH5jaHVu
a01hc2spKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWRkcmVzcyA+
PiBzaGlmdEFtb3VudCk7CisgICAgfQorCisgICAgQml0cyogbV9iaXRzOworfTsKKworY2xhc3Mg
T2JqZWN0VHlwZVRhYmxlOjpCaXRzIHsKK3B1YmxpYzoKKyAgICB1c2luZyBXb3JkVHlwZSA9IHVu
c2lnbmVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0Q291bnRQZXJXb3JkID0g
c2l6ZW9mKFdvcmRUeXBlKSAqIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBXb3JkVHlwZSBvbmUg
PSAxOworICAgIGNvbnN0ZXhwciBCaXRzKEJpdHMqIHByZXZpb3VzLCB1bnNpZ25lZCBiZWdpbiwg
dW5zaWduZWQgZW5kKQorICAgICAgICA6IG1fcHJldmlvdXMocHJldmlvdXMpCisgICAgICAgICwg
bV9iZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKworICAg
IGJvb2wgZ2V0KHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwg
Ym9vbCk7CisKKyAgICBCaXRzKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXM7
IH0KKyAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KKyAgICB1
bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorICAgIHVuc2lnbmVkIGNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX2JlZ2luOyB9CisgICAgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBjb3VudCgpIC8gODsgfQorCisgICAgY29uc3QgV29yZFR5
cGUqIHdvcmRzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxCaXRzKj4odGhpcyktPndvcmRz
KCk7IH0KKyAgICBXb3JkVHlwZSogd29yZHMoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFdv
cmRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgc2l6ZW9mKEJpdHMp
KTsgfQorCisgICAgV29yZFR5cGUqIHdvcmRGb3JJbmRleCh1bnNpZ25lZCk7CisKK3ByaXZhdGU6
CisgICAgQml0cyogbV9wcmV2aW91cyB7IG51bGxwdHIgfTsgLy8gS2VlcGluZyB0aGUgcHJldmlv
dXMgQml0cyoganVzdCB0byBzdXBwcmVzcyBMZWFrcyB3YXJuaW5ncy4KKyAgICB1bnNpZ25lZCBt
X2JlZ2luIHsgMCB9OworICAgIHVuc2lnbmVkIG1fZW5kIHsgMCB9OworfTsKK3N0YXRpY19hc3Nl
cnQoIShzaXplb2YoT2JqZWN0VHlwZVRhYmxlOjpCaXRzKSAlIHNpemVvZihPYmplY3RUeXBlVGFi
bGU6OkJpdHM6OldvcmRUeXBlKSkpOworCitleHRlcm4gQkVYUE9SVCBPYmplY3RUeXBlVGFibGU6
OkJpdHMgc2VudGluZWxCaXRzOworCitpbmxpbmUgT2JqZWN0VHlwZVRhYmxlOjpPYmplY3RUeXBl
VGFibGUoKQorICAgIDogbV9iaXRzKCZzZW50aW5lbEJpdHMpCit7Cit9CisKK2lubGluZSBPYmpl
Y3RUeXBlIE9iamVjdFR5cGVUYWJsZTo6Z2V0KENodW5rKiBjaHVuaykKK3sKKyAgICBCaXRzKiBi
aXRzID0gbV9iaXRzOworICAgIHVuc2lnbmVkIGluZGV4ID0gY29udmVydFRvSW5kZXgoY2h1bmsp
OworICAgIEJBU1NFUlQoYml0cyk7CisgICAgaWYgKGJpdHMtPmJlZ2luKCkgPD0gaW5kZXggJiYg
aW5kZXggPCBiaXRzLT5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVjdFR5
cGU+KGJpdHMtPmdldChpbmRleCkpOworICAgIHJldHVybiB7IH07Cit9CisKK2lubGluZSBib29s
IE9iamVjdFR5cGVUYWJsZTo6Qml0czo6Z2V0KHVuc2lnbmVkIGluZGV4KQoreworICAgIHVuc2ln
bmVkIG4gPSBpbmRleCAtIGJlZ2luKCk7CisgICAgcmV0dXJuIHdvcmRzKClbbiAvIGJpdENvdW50
UGVyV29yZF0gJiAob25lIDw8IChuICUgYml0Q291bnRQZXJXb3JkKSk7Cit9CisKK2lubGluZSB2
b2lkIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6c2V0KHVuc2lnbmVkIGluZGV4LCBib29sIHZhbHVl
KQoreworICAgIHVuc2lnbmVkIG4gPSBpbmRleCAtIGJlZ2luKCk7CisgICAgaWYgKHZhbHVlKQor
ICAgICAgICB3b3JkcygpW24gLyBiaXRDb3VudFBlcldvcmRdIHw9IChvbmUgPDwgKG4gJSBiaXRD
b3VudFBlcldvcmQpKTsKKyAgICBlbHNlCisgICAgICAgIHdvcmRzKClbbiAvIGJpdENvdW50UGVy
V29yZF0gJj0gfihvbmUgPDwgKG4gJSBiaXRDb3VudFBlcldvcmQpKTsKK30KKworaW5saW5lIE9i
amVjdFR5cGVUYWJsZTo6Qml0czo6V29yZFR5cGUqIE9iamVjdFR5cGVUYWJsZTo6Qml0czo6d29y
ZEZvckluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHVuc2lnbmVkIG4gPSBpbmRleCAtIGJl
Z2luKCk7CisgICAgcmV0dXJuICZ3b3JkcygpW24gLyBiaXRDb3VudFBlcldvcmRdOworfQorCit9
IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKaW5k
ZXggOTk2MjYxYWRlMWM2NDhkOTc1OTU2NDA0NzEwOTg0ZmQwMGI0N2RkNy4uNjEwNjc4YTYxNTdj
ZTdmMjEzZmI2NmI4YzdlZTRhYWQxNzk0ZjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVu
Z2VyLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpzY2F2ZW5nZSgpCiAj
aWYgIUJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICAgICAgICAgIHNpemVfdCBkZWZlcnJlZERl
Y29tbWl0cyA9IDA7CiAjZW5kaWYKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhIZWFwOjpt
dXRleCgpKTsKKyAgICAgICAgICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgp
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBLaW5kKHN0YXRpY19jYXN0PEhlYXBLaW5kPihp
KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZv
aWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQogICAgICAgICBCdWxrRGVjb21taXQgZGVj
b21taXR0ZXI7CiAgICAgICAgIHsKICAgICAgICAgICAgIFByaW50VGltZSBwcmludFRpbWUoIlxu
cGFydGlhbFNjYXZlbmdlIHVuZGVyIGxvY2sgdGltZSIpOwotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgVW5pcXVlTG9ja0hvbGRlciBsb2Nr
KEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7
IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nh
c3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zNTUs
NyArMzU1LDcgQEAgc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFibGVNZW1vcnkoKQogewogICAgIHNp
emVfdCByZXN1bHQgPSAwOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11
dGV4KCkpOworICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7CiAgICAgICAgICAgICBp
ZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>