<?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>222965</bug_id>
          
          <creation_ts>2021-03-09 00:39:34 -0800</creation_ts>
          <short_desc>Make RTCDataChannel transferable</short_desc>
          <delta_ts>2021-03-12 05:20:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737496</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-09 00:39:34 -0800</bug_when>
    <thetext>This would allow to use RTCDataChannel in workers, thus allowing to process/send messages without being blocked on main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737501</commentid>
    <comment_count>1</comment_count>
      <attachid>422675</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-09 01:12:10 -0800</bug_when>
    <thetext>Created attachment 422675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738390</commentid>
    <comment_count>2</comment_count>
      <attachid>422914</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-11 01:18:31 -0800</bug_when>
    <thetext>Created attachment 422914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738472</commentid>
    <comment_count>3</comment_count>
      <attachid>422914</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-11 09:07:42 -0800</bug_when>
    <thetext>Comment on attachment 422914
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:68
&gt; +        if (!channel-&gt;m_handler)
&gt; +            return;

Is this unexpected? If so, it may be worth logging an error to help track down errors later.

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:270
&gt; +    ASSERT(m_isDetachable);

Maybe ASSERT(canDetach())?

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:295
&gt; +    if (identifier.processIdentifier != Process::identifier()) {
&gt; +        // FIXME: Add support for out-of-process data channels.
&gt; +        return createClosedChannel(context, WTFMove(label), WTFMove(options));
&gt; +    }

Maybe log an error here to help diagnose error reports?

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:301
&gt; +    if (!handler)
&gt; +        return createClosedChannel(context, WTFMove(label), WTFMove(options));

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738804</commentid>
    <comment_count>4</comment_count>
      <attachid>422914</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-12 01:27:44 -0800</bug_when>
    <thetext>Comment on attachment 422914
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:68
&gt;&gt; +            return;
&gt; 
&gt; Is this unexpected? If so, it may be worth logging an error to help track down errors later.

It is not unexpected, in case a channel is created and closed immediately.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:270
&gt;&gt; +    ASSERT(m_isDetachable);
&gt; 
&gt; Maybe ASSERT(canDetach())?

Yep, sounds much better! And I will add that bufferedAmount is zero as well.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:295
&gt;&gt; +    }
&gt; 
&gt; Maybe log an error here to help diagnose error reports?

OK, will do.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:301
&gt;&gt; +        return createClosedChannel(context, WTFMove(label), WTFMove(options));
&gt; 
&gt; Ditto

For this one, it would be an error right now, but in the future if the connection gets closed before the transfer happens, we could end up in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738817</commentid>
    <comment_count>5</comment_count>
      <attachid>423025</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-12 02:16:59 -0800</bug_when>
    <thetext>Created attachment 423025
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738851</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-12 05:19:14 -0800</bug_when>
    <thetext>Committed r274351: &lt;https://commits.webkit.org/r274351&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423025.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738852</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-12 05:20:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/75358977&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422675</attachid>
            <date>2021-03-09 01:12:10 -0800</date>
            <delta_ts>2021-03-11 01:18:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222965-20210309101208.patch</filename>
            <type>text/plain</type>
            <size>62372</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI5ZWI3OGVmYjA0NDlj
ZTFmMWJkMTQzZjFjODc3M2RiZDgxZjIzYS4uZDRkY2NmMjE0NGQyZjI2ZWM0MWNmNjAzZjYxODNk
ZGYwMGJlYTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wMy0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBSVENEYXRhQ2hh
bm5lbCB0cmFuc2ZlcmFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjk2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRvIHRyYW5zZmVyIGEgUlRDRGF0YUNoYW5uZWwgdG8gd29ya2Vycywgd2UgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgUlRDRGF0YUNoYW5uZWwgdXNpbmcgdGhlIHNhbWUgZGF0YSBjaGFu
bmVsIGJhY2tlbmQsIHdoaWNoIGlzIGNyb3NzLXRocmVhZCBjb21wYXRpYmxlLgorICAgICAgICBX
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkbyBub3QgbWlzcyBmb3J3YXJkaW5nIGFueSBldmVudC4g
QW5kIGFsc28gaXQgaXMgYSBidXJkZW4gdG8gdHJhbnNmZXIgYSBkYXRhIGNoYW5uZWwgdGhhdCBp
cyBzZW5kaW5nIGRhdGEgKHNheSBibG9icyBmb3IgaW5zdGFuY2UpLgorICAgICAgICBGb3IgdGhh
dCByZWFzb24sIHdlIGN1cnJlbnRseSBvbmx5IGFsbG93IHRyYW5zZmVycmluZyBjb25uZWN0aW5n
IG9yIGNsb3NlZCBkYXRhIGNoYW5uZWxzLgorCisgICAgICAgIFdlIGFkZCB0aGUgaW5mcmFzdHJ1
Y3R1cmUgdG8gdHJhbnNmZXIgUlRDRGF0YUNoYW5uZWwgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
LgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgc2VyaWFsaXppbmcgYW4gaW5kZXggdG8gdGhlIHRy
YW5zZmVyZWQgZGF0YSBjaGFubmVsLiBUaGUgdHJhbnNmZXJlZCBkYXRhIGNoYW5uZWwgY29udGFp
bnMgc3RhdGUgaW5mb3JtYXRpb24gYW5kIGFuIGlkZW50aWZpZXIgd2hpY2ggYWxsb3dzIHRvIGtu
b3cKKyAgICAgICAgaW4gd2hpY2ggcHJvY2VzcyBpcyB0aGUgZGF0YSBjaGFubmVsIHRvIHRyYW5z
ZmVyIGFuZCBhbiBpZGVudGlmaWVyIHRvIHJldHJpZXZlIGl0IGZyb20gYSBnbG9iYWwgbWFwLgor
CisgICAgICAgIFdlIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIGNvZGUgc28gdGhhdCBkYXRhIGNo
YW5uZWwgYmFja2VuZHMgY2FuIGNoYW5nZSBvZiBjbGllbnQuCisgICAgICAgIEZvciB0aGF0IHB1
cnBvc2UsIHdlIGludHJvZHVjZSBzZXRBc1RyYW5zZmVycmluZyBhbmQgc2V0QXNUcmFuc2ZlcnJl
ZC4KKyAgICAgICAgQWZ0ZXIgc2V0QXNUcmFuc2ZlcnJpbmcgaXMgc2V0LCB0aGUgZGF0YSBjaGFu
bmVsIGJhY2tlbmQgd2lsbCBzdG9yZSBhbGwgbWVzc2FnZXMgYW5kIHN0YXRlIGNoYW5nZXMgaW4g
YSB2ZWN0b3IuCisgICAgICAgIEF0IHRoYXQgcG9pbnQsIHRoZSBkYXRhIGNoYW5uZWwgYmFja2Vu
ZCBjbGllbnQgY2FuIGJlIGNoYW5nZWQuCisgICAgICAgIE9uY2Ugc2V0QXNUcmFuc2ZlcnJlZCBp
cyBjYWxsZWQsIHRoZSBkYXRhIGNoYW5uZWwgYmFja2VuZCB3aWxsIGRlbGl2ZXIgYWxsIG1lc3Nh
Z2VzIGFuZCBzdGF0ZSBjaGFuZ2VzIHRvIHRoZSBkYXRhIGNoYW5uZWwuCisKKyAgICAgICAgVG8g
aW1wbGVtZW50IHN0b3Jpbmcgb2YgbWVzc2FnZXMgaW4gZGF0YSBjaGFubmVsIGJhY2tlbmQsIHdl
IGNoYW5nZSB0aGUgd2F5IHRoZXkgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZGF0YSBjaGFubmVsLgor
ICAgICAgICBXaGVuIHJlY2VpdmluZyBhIG1lc3NhZ2Ugb3Igc3RhdGUgY2hhbmdlLCB0aGUgZGF0
YSBjaGFubmVsIGJhY2tlbmQgd2lsbCBjaGVjayB3aGV0aGVyIGl0IGlzIGluIHRyYW5zZmVyaW5n
IHN0YXRlLgorICAgICAgICBJZiBzbyBpdCBzdG9yZXMgdGhlIHVwZGF0ZSBpbiBhIHZlY3Rvci4K
KyAgICAgICAgT3RoZXJ3aXNlLCBpdCB3aWxsIGhvcCB0byB0aGUgdGhyZWFkIHdoZXJlIGl0IGNh
biBkZWxpdmVyIHRoZXNlIHRvIHRoZSBkYXRhIGNoYW5uZWwuCisgICAgICAgIFByZXZpb3VzbHks
IHRoYXQgd291bGQgaGF2ZSBtZWFudCBhIGNhbGxPbk1haW5UaHJlYWQuIEl0IG5vdyBtZWFucyBh
IFNjcmlwdEV4ZWN1dGlvbjo6cG9zdFRhc2suCisgICAgICAgIE9uY2UgaW4gdGhlIHJpZ2h0IHRo
cmVhZCwgaXQgd2lsbCBjaGVjayBhZ2FpbiB3aGV0aGVyIGl0IGlzIGluIHRyYW5zZmVyaW5nIHN0
YXRlLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgc3RvcmUgdGhlIHVwZGF0ZSBpbiBhbm90aGVyIHZl
Y3Rvci4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCBzeW5jaHJvbm91c2x5IGRlbGl2ZXJzIHRoZSB1
cGRhdGUgdG8gaXRzIGRhdGEgY2hhbm5lbCBjbGllbnQuCisgICAgICAgIFNpbmNlIHdlIG5vdyBh
cmUgaG9wcGluZyBiZXR3ZWVuIHRocmVhZHMgYW5kIHdhbnQgdG8ga2VlcCB0aGUgY2hhbm5lbCBo
YW5kbGVyIGFsaXZlLCB3ZSBtYWtlIGl0IGEgVGhyZWFkU2FmZVJlZkNvdW50ZWQgb2JqZWN0Lgor
CisgICAgICAgIFRvIHVzZSBtX2NsaWVudCBhbmQgdHJhbnNmZXIgc3RhdGVzLCB3ZSB1c2UgbG9j
a3MgdG8gZW5zdXJlIHRoZXkgYXJlIHByb3Blcmx5IGFjY2Vzc2VkIHRocm91Z2ggdmFyaW91cyB0
aHJlYWRzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L3dlYnJ0Yy9kYXRhY2hhbm5lbC13b3Jr
ZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNv
cmU6Om1fY29udGV4dElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZl
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFRyYW5zZmVyZXI6OlJU
Q0RhdGFDaGFubmVsVHJhbnNmZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpydGNEYXRhQ2hhbm5l
bExvY2FsTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnJ0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjYW5EZXRhY2ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRldGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDbG9zZWRDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZFJUQ0RhdGFDaGFu
bmVsOjpEZXRhY2hlZFJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFjaGVk
UlRDRGF0YUNoYW5uZWw6Om1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoYW5uZWxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldEFzVHJhbnNm
ZXJyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
cHJvY2Vzc1N0b3JlZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpzZXRBc1RyYW5zZmVycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPblN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hlY2tTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnN0b3JlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnByb2Nlc3NNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25CdWZm
ZXJlZEFtb3VudENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI6OnBvc3RUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpmaWxsVHJhbnNmZXJNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNvbXB1dGVNZW1vcnlDb3N0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRldGFjaFJUQ0RhdGFDaGFubmVscyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSW5pdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
RGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6CisKIDIwMjEtMDMtMDkgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgUlRDRGF0YUNoYW5uZWwgdXNlIGEg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGEgRG9jdW1lbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDliZDJiZDk5YzA5ZjM3MGRjMWM1NTVmZjUzZWM5NDUxNGU4Y2U5OWIuLjEx
YmE0YjgyZDlmYjI2YWVkMWI2NGYyODdiNTg4NGNmZTcxNGRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZW1vdGVEZXNjcmlw
dGlvbihjb25zdCBSVENTZXNzaW9uRGVzY3JpcHRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CiAgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpID0gMDsKIAogICAgIHZvaWQgc3RvcCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCmluZGV4IDc5ZThhMjY4YzZiOTZjYmY3YzgzNTc0OTNjNjMxMzk5MjAyOWJkOGIu
LjYxZTE3ZmQ3ZjllYWJhMzFjYmM5ODU5Y2E3YWIxNjQ4NTcxMDhmMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBA
IC01NCwxMiArNTQsMTIgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGFycmF5YnVmZmVyS2V5
d29yZCgpCiAgICAgcmV0dXJuIGFycmF5YnVmZmVyOwogfQogCi1SZWY8UlRDRGF0YUNoYW5uZWw+
IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
c3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5kbGVyLCBTdHJpbmcm
JiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKK1JlZjxSVENEYXRhQ2hhbm5l
bD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiYmIGhhbmRsZXIsIFN0cmluZyYmIGxhYmVs
LCBSVENEYXRhQ2hhbm5lbEluaXQmJiBvcHRpb25zKQogewogICAgIEFTU0VSVChoYW5kbGVyKTsK
ICAgICBhdXRvIGNoYW5uZWwgPSBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQs
IFdURk1vdmUoaGFuZGxlciksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAg
ICAgY2hhbm5lbC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgY2hhbm5lbC0+bV9oYW5kbGVyLT5z
ZXRDbGllbnQoY2hhbm5lbC5nZXQoKSk7CisgICAgY2hhbm5lbC0+bV9oYW5kbGVyLT5zZXRDbGll
bnQoY2hhbm5lbC5nZXQoKSwgY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBjaGFu
bmVsLT5zZXRQZW5kaW5nQWN0aXZpdHkoY2hhbm5lbC5nZXQoKSk7CiAgICAgcmV0dXJuIGNoYW5u
ZWw7CiB9CkBAIC04MSw5ICs4MSwxMSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFJUQ0RhdGFDaGFubmVs
OjpjcmVhdGVNZXNzYWdlUXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIH0g
fTsKIH0KIAotUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYg
aGFuZGxlciwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCitS
VENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVmUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5kbGVyLCBTdHJpbmcmJiBs
YWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1faGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQorICAgICwgbV9p
ZGVudGlmaWVyKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciB7IFByb2Nlc3M6OmlkZW50aWZpZXIo
KSwgT2JqZWN0SWRlbnRpZmllcjxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXJUeXBlPjo6Z2VuZXJh
dGVUaHJlYWRTYWZlKCkgfSkKKyAgICAsIG1fY29udGV4dElkZW50aWZpZXIoY29udGV4dC5pc0Rv
Y3VtZW50KCkgPyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB7IH0gOiBjb250ZXh0
LmNvbnRleHRJZGVudGlmaWVyKCkpCiAgICAgLCBtX2xhYmVsKFdURk1vdmUobGFiZWwpKQogICAg
ICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX21lc3NhZ2VRdWV1ZShjcmVh
dGVNZXNzYWdlUXVldWUoY29udGV4dCwgKnRoaXMpKQpAQCAtMTY4LDcgKzE3MCw4IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWw6OmNsb3NlKCkKIAogICAgIG1fbWVzc2FnZVF1ZXVlLmNsZWFyKCk7CiAK
LSAgICBtX2hhbmRsZXItPmNsb3NlKCk7CisgICAgaWYgKG1faGFuZGxlcikKKyAgICAgICAgbV9o
YW5kbGVyLT5jbG9zZSgpOwogICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgdW5zZXRQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpOwogfQpAQCAtMTk4LDIzICsyMDEsMjQgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbDo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogfQogCiB2
b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCkKK3sKKyAgICBkaWRSZWNlaXZlUmF3RGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OmRp
ZFJlY2VpdmVSYXdEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHN3aXRj
aCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxl
bmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoYnVmZmVyKSwgZW1wdHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgc2NoZWR1
bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUo
ZGF0YSwgZGF0YUxlbmd0aCkpKTsKKyAgICAgICAgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBidWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpCisgICAgICAgICAgICBzY2hlZHVsZURpc3BhdGNo
RXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWREZXRlY3RFcnJvcigpCi17Ci0gICAgc2NoZWR1bGVE
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotfQotCiB2b2lkIFJU
Q0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QgYW1vdW50KQog
ewogICAgIGF1dG8gcHJldmlvdXNCdWZmZXJlZEFtb3VudCA9IG1fYnVmZmVyZWRBbW91bnQ7CkBA
IC0yMzcsNiArMjQxLDg5IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNjaGVkdWxlRGlzcGF0Y2hF
dmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0
aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKK2NsYXNz
IFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWxUcmFu
c2ZlcmVyPiBjcmVhdGUoUmVmUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5kbGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJlcihXVEZNb3ZlKGhh
bmRsZXIpKSk7IH0KKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiB0YWtlSGFuZGxl
cigpIHsgcmV0dXJuIFdURk1vdmUobV9oYW5kbGVyKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJlcihSZWZQdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiYmKTsKKworICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudAorICAgIHZvaWQgZGlk
Q2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3
RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
IG1faGFuZGxlcjsKK307CisKK1JUQ0RhdGFDaGFubmVsVHJhbnNmZXJlcjo6UlRDRGF0YUNoYW5u
ZWxUcmFuc2ZlcmVyKFJlZlB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYgaGFuZGxlcikKKyAg
ICA6IG1faGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQoreworICAgIG1faGFuZGxlci0+c2V0QXNU
cmFuc2ZlcnJpbmcoKTsKKyAgICBtX2hhbmRsZXItPnNldENsaWVudCgqdGhpcywgeyB9KTsKK30K
Kworc3RhdGljIExvY2sgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jazsKK3N0YXRpYyBIYXNo
TWFwPE9iamVjdElkZW50aWZpZXI8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyVHlwZT4sIFJlZjxS
VENEYXRhQ2hhbm5lbFRyYW5zZmVyZXI+PiYgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpCit7Cisg
ICAgQVNTRVJUKHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2suaXNIZWxkKCkpOworICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxPYmplY3RJZGVudGlmaWVyPFJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllclR5cGU+LCBSZWY8UlRDRGF0YUNoYW5uZWxUcmFuc2ZlcmVyPj4+IG1h
cDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0geworICAgICAgICBtYXAuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAg
cmV0dXJuIG1hcDsKK30KKworYm9vbCBSVENEYXRhQ2hhbm5lbDo6Y2FuRGV0YWNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlID09IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNvbm5l
Y3RpbmcgfHwgbV9yZWFkeVN0YXRlID09IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVs
OjpkZXRhY2goKQoreworICAgIEFTU0VSVChjYW5EZXRhY2goKSk7CisKKyAgICBhdXRvIHN0YXRl
ID0gbV9yZWFkeVN0YXRlOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gUlRDRGF0YUNoYW5uZWxT
dGF0ZTo6Q2xvc2VkKSB7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IFJUQ0RhdGFDaGFubmVsU3Rh
dGU6OkNsb3NlZDsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFu
bmVsTG9jYWxNYXBMb2NrKTsKKyAgICAgICAgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpLmFkZChp
ZGVudGlmaWVyKCkuY2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJlcjo6
Y3JlYXRlKFdURk1vdmUobV9oYW5kbGVyKSkpOworICAgIH0KKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPihpZGVudGlmaWVyKCksIGxhYmVsKCkuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMoKSwgc3RhdGUpOworfQorCitzdGF0aWMgUmVmPFJUQ0RhdGFDaGFubmVs
PiBjcmVhdGVDbG9zZWRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0
cmluZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBvcHRpb25zKQoreworICAgIGF1dG8g
Y2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgbnVsbHB0ciwgV1RGTW92
ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykpOworICAgIGNoYW5uZWwtPmNsb3NlKCk7CisgICAg
cmV0dXJuIGNoYW5uZWw7Cit9CisKK1JlZjxSVENEYXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYm
IG9wdGlvbnMsIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpCit7CisgICAgaWYgKGlkZW50aWZp
ZXIucHJvY2Vzc0lkZW50aWZpZXIgIT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3V0LW9mLXByb2Nlc3MgZGF0YSBjaGFubmVscy4K
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUNsb3NlZENoYW5uZWwoY29udGV4dCwgV1RGTW92ZShsYWJl
bCksIFdURk1vdmUob3B0aW9ucykpOworICAgIH0KKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7CisgICAgLy8gRklYTUU6IEF0IENvbnRl
eHREZXN0cnVjdGlvbiB0aW1lLCB3ZSBzaG91bGQgcHJvYmFibHkgcmVtb3ZlIGVudHJpZXMgZnJv
bSBydGNEYXRhQ2hhbm5lbExvY2FsTWFwIHRoYXQgaGF2ZSB0aGVpciBkYXRhIGNoYW5uZWxzIGlu
IGNsb3NlZCBzdGF0ZS4KKyAgICBhdXRvIHRyYW5zZmVyZXIgPSBydGNEYXRhQ2hhbm5lbExvY2Fs
TWFwKCkudGFrZShpZGVudGlmaWVyLmNoYW5uZWxJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRyYW5z
ZmVyZXIpCisgICAgICAgIHJldHVybiBjcmVhdGVDbG9zZWRDaGFubmVsKGNvbnRleHQsIFdURk1v
dmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKworICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0Rh
dGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgdHJhbnNmZXJlci0+dGFrZUhhbmRsZXIoKSwgV1RG
TW92ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykpOworICAgIGNoYW5uZWwtPm1fcmVhZHlTdGF0
ZSA9IHN0YXRlOworICAgIGNvbnRleHQucG9zdFRhc2soW2NoYW5uZWwsIHRyYW5zZmVyZXIgPSBX
VEZNb3ZlKHRyYW5zZmVyZXIpXShhdXRvJikgeworICAgICAgICBjaGFubmVsLT5tX2hhbmRsZXIt
PnNldEFzVHJhbnNmZXJyZWQoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY2hhbm5lbDsKK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aAppbmRleCAzMjk2MGZhZWFhMTYyNjIxOGYwZmE5ZmYwMTNiNzQ4MjQwY2FlODU4Li5iZTg5MDE2
YzI3ZGFiYTJiZTViMjJlNjVmMjcwNjgxNzgyZDU2NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOCArMzIsMTAgQEAK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1NlbmRRdWV1ZS5oIgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKQEAg
LTQ3LDEwICs0OSw0NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iOwogY2xhc3Mg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogCitlbnVtIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
clR5cGUgeyB9Oworc3RydWN0IFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciB7CisgICAgUHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgT2JqZWN0SWRlbnRpZmllcjxSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXJUeXBlPiBjaGFubmVsSWRlbnRpZmllcjsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIFN0cmluZyBs
b2dTdHJpbmcoKSBjb25zdDsKKyNlbmRpZgorfTsKKworc3RydWN0IERldGFjaGVkUlRDRGF0YUNo
YW5uZWwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldGFjaGVkUlRDRGF0YUNoYW5uZWwp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERldGFjaGVkUlRD
RGF0YUNoYW5uZWwoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucywgUlRDRGF0YUNo
YW5uZWxTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBpZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
ICAgICwgbGFiZWwobGFiZWwuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgb3B0aW9ucyhvcHRp
b25zLmlzb2xhdGVkQ29weSgpKQorICAgICAgICAsIHN0YXRlKHN0YXRlKQorICAgIHsKKyAgICB9
CisKKyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIGxhYmVsLnNpemVJbkJ5
dGVzKCk7IH0KKworICAgIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyOworICAg
IFN0cmluZyBsYWJlbDsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9uczsKKyAgICBSVENE
YXRhQ2hhbm5lbFN0YXRlIHN0YXRlIHsgUlRDRGF0YUNoYW5uZWxTdGF0ZTo6Q2xvc2VkIH07Cit9
OworCiBjbGFzcyBSVENEYXRhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ0RhdGFDaGFubmVs
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
JiYsIFN0cmluZyYmLCBSVENEYXRhQ2hhbm5lbEluaXQmJik7CisgICAgc3RhdGljIFJlZjxSVENE
YXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8UlRDRGF0
YUNoYW5uZWxIYW5kbGVyPiYmLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0JiYpOworICAg
IHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0
JiYsIFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogCiAgICAgYm9vbCBvcmRlcmVkKCkgY29uc3QgeyBy
ZXR1cm4gKm1fb3B0aW9ucy5vcmRlcmVkOyB9CiAgICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IG1heFBhY2tldExpZmVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLm1heFBhY2tldExp
ZmVUaW1lOyB9CkBAIC01OSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZ290aWF0ZWQo
KSBjb25zdCB7IHJldHVybiAqbV9vcHRpb25zLm5lZ290aWF0ZWQ7IH07CiAgICAgT3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IGlkKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmlkOyB9OwogICAg
IFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5wcmlv
cml0eTsgfTsKKyAgICBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFiZWw7IH0KICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7
cmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQpAQCAtNzYsMTEgKzExMywxNSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsb3NlKCk7CiAKKyAgICBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGJvb2wgY2FuRGV0YWNoKCkg
Y29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IGRldGFj
aCgpOworCiAgICAgdXNpbmcgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpyZWY7CiAgICAg
dXNpbmcgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAg
ICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiwgU3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYm
KTsKKyAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4mJiwgU3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYmKTsK
IAogICAgIHN0YXRpYyBOZXR3b3JrU2VuZFF1ZXVlIGNyZWF0ZU1lc3NhZ2VRdWV1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUlRDRGF0YUNoYW5uZWwmKTsKIApAQCAtMTAwLDExICsxNDEsMTMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxT
dGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
IGZpbmFsOwotICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZl
cmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVfdCkgZmluYWw7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAorICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5l
bEhhbmRsZXI+IG1faGFuZGxlcjsKKyAgICBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udGV4dElk
ZW50aWZpZXI7CiAgICAgLy8gRklYTUU6IG1fc3RvcHBlZCBpcyBwcm9iYWJseSByZWR1bmRhbnQg
d2l0aCBtX3JlYWR5U3RhdGUuCiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIFJU
Q0RhdGFDaGFubmVsU3RhdGUgbV9yZWFkeVN0YXRlIHsgUlRDRGF0YUNoYW5uZWxTdGF0ZTo6Q29u
bmVjdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmlkbAppbmRleCBkMjcxMWIxMmNhNDk1YjJhZGQ2Mzg1NTIxOTU0M2Rh
ZTE2NzE4ZWUxLi5lNDE5NGUyYTk3NTU5MmU5NzE3MmJhMWI2MGFmOTU2NzlhZTRlOGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1XRUJfUlRDLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9UGVlckNvbm5lY3Rpb24sCi0g
ICAgRXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKIF0gaW50ZXJm
YWNlIFJUQ0RhdGFDaGFubmVsIDogRXZlbnRUYXJnZXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3IgcHJpb3JpdHkgYXR0cmlidXRlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCA1YWM0NDk5NjgyNTBmOTk0NmI0MTgz
NDgxY2QyM2E2NTc2YjM0ODg3Li44YjJlNjFiYzM2MDQ1ZTBjYjJhYWUyNzFmNjNiMmE3M2FkNjhj
MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgogI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxFdmVudC5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDcgKzY4LDcgQEAgUmVmPFJUQ0RhdGFDaGFu
bmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hhbm5lbEV2ZW50KERvY3Vt
ZW50JiBkb2MKICAgICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7CiAgICAgaW5pdC5wcmlv
cml0eSA9IHRvUlRDUHJpb3JpdHlUeXBlKGRhdGFDaGFubmVsLT5wcmlvcml0eSgpKTsKIAotICAg
IGF1dG8gaGFuZGxlciA9ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4o
V1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9ICBMaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBj
aGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShoYW5kbGVy
KSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkpOwogCiAgICAgcmV0dXJuIFJU
Q0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGNo
YW5uZWwpKTsKQEAgLTc5LDE0ICs4MCw1NyBAQCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
On5MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKQogICAgICAgICBtX2NoYW5uZWwtPlVucmVn
aXN0ZXJPYnNlcnZlcigpOwogfQogCi12b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50KQordm9pZCBMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQmIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
ZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2NsaWVudCk7CisgICAgYm9vbCBoYXNDbGllbnQ7
CisgICAgeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRMb2NrKTsKKyAgICBB
U1NFUlQoIW1fY2xpZW50IHx8IG1faXNUcmFuc2ZlcnJpbmcpOworCisgICAgaGFzQ2xpZW50ID0g
ISFtX2NsaWVudDsKICAgICBtX2NsaWVudCA9ICZjbGllbnQ7Ci0gICAgbV9jaGFubmVsLT5SZWdp
c3Rlck9ic2VydmVyKHRoaXMpOworICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0SWRl
bnRpZmllcjsKKyAgICB9CisgICAgaWYgKCFoYXNDbGllbnQpCisgICAgICAgIG1fY2hhbm5lbC0+
UmVnaXN0ZXJPYnNlcnZlcih0aGlzKTsKKwogICAgIGNoZWNrU3RhdGUoKTsKIH0KIAordm9pZCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldEFzVHJhbnNmZXJyaW5nKCkKK3sKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50TG9jayk7CisgICAgbV9pc1RyYW5zZmVycmlu
ZyA9IHRydWU7Cit9CisKK3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpwcm9jZXNz
U3RvcmVkTWVzc2FnZShNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIHN3aXRjaE9uKG1lc3NhZ2Us
IFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0sIFt0aGlz
XShTdHJpbmcmIHRleHQpIHsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRh
KHRleHQpOworICAgIH0sIFt0aGlzXShSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKSB7CisgICAg
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKHN0YXRlKTsKKyAgICB9KTsKK30KKwor
dm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldEFzVHJhbnNmZXJyZWQoKQorewor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRMb2NrKTsKKyAgICBpZiAoIW1fY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2FmdGVy
SG9wcGluZ0J1ZmZlcikKKyAgICAgICAgcHJvY2Vzc1N0b3JlZE1lc3NhZ2UobWVzc2FnZSk7Cisg
ICAgbV9hZnRlckhvcHBpbmdCdWZmZXIuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYmVmb3JlSG9wcGluZ0J1ZmZlcikKKyAgICAgICAgcHJvY2Vzc1N0b3JlZE1lc3NhZ2Uo
bWVzc2FnZSk7CisgICAgbV9iZWZvcmVIb3BwaW5nQnVmZmVyLmNsZWFyKCk7CisKKyAgICBtX2lz
VHJhbnNmZXJyaW5nID0gZmFsc2U7Cit9CisKIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKIHsKICAgICByZXR1
cm4gbV9jaGFubmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRh
KCksIHV0ZjhUZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CkBAIC05OSwxNyArMTQzLDIwIEBAIGJv
b2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2xvc2UoKQogewotICAgIGlmIChtX2NsaWVudCkgewotICAgICAgICBtX2NoYW5uZWwtPlVucmVn
aXN0ZXJPYnNlcnZlcigpOworICAgIGJvb2wgaGFzQ2xpZW50OworICAgIHsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fY2xpZW50TG9jayk7CisgICAgaGFzQ2xpZW50ID0gISFtX2NsaWVu
dDsKKyAgICBpZiAoaGFzQ2xpZW50KQogICAgICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAgICAg
fQorICAgIGlmIChoYXNDbGllbnQpCisgICAgICAgIG1fY2hhbm5lbC0+VW5yZWdpc3Rlck9ic2Vy
dmVyKCk7CiAgICAgbV9jaGFubmVsLT5DbG9zZSgpOwogfQogCiB2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6T25TdGF0ZUNoYW5nZSgpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAg
ICAgICAgcmV0dXJuOwogICAgIGNoZWNrU3RhdGUoKTsKIH0KIApAQCAtMTMwLDM2ICsxNzcsODgg
QEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoZWNrU3RhdGUoKQogICAgICAg
ICBzdGF0ZSA9IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1f
Y2xpZW50KSwgc3RhdGVdIHsKLSAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRDaGFuZ2VSZWFk
eVN0YXRlKHN0YXRlKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRMb2Nr
KTsKKyAgICBpZiAobV9pc1RyYW5zZmVycmluZykgeworICAgICAgICBtX2JlZm9yZUhvcHBpbmdC
dWZmZXIuYXBwZW5kKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBvc3RU
YXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRlXSB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2socHJvdGVjdGVkVGhpcy0+bV9jbGllbnRMb2NrKTsKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNUcmFuc2ZlcnJpbmcpIHsKKyAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fYWZ0ZXJIb3BwaW5nQnVmZmVyLmFwcGVuZChzdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY2xp
ZW50KQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPmRpZENoYW5nZVJlYWR5
U3RhdGUoc3RhdGUpOwogICAgIH0pOwogfQogCi12b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQordm9pZCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMm
IG1lc3NhZ2VzLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50TG9jayk7CisKKyAgICBjb25zdCBjaGFyKiBkYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxjaGFyPigp
KTsKKyAgICBpZiAoYnVmZmVyLmJpbmFyeSkKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsKKyAgICBlbHNlCisgICAgICAg
IG1lc3NhZ2VzLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsK
K30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnByb2Nlc3NNZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9jbGllbnRMb2NrKTsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47
CisgICAgaWYgKG1faXNUcmFuc2ZlcnJpbmcpIHsKKyAgICAgICAgc3RvcmVNZXNzYWdlKG1fYWZ0
ZXJIb3BwaW5nQnVmZmVyLCBidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5k
YXRhLmRhdGE8Y2hhcj4oKSk7CisgICAgaWYgKGJ1ZmZlci5iaW5hcnkpCisgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmc6OmZyb21VVEY4KGRh
dGEsIGJ1ZmZlci5zaXplKCkpKTsKK30KIAordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKK3sKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpEYXRhQnVmZmVyPiBwcm90ZWN0ZWRCdWZmZXIobmV3IHdl
YnJ0Yzo6RGF0YUJ1ZmZlcihidWZmZXIpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9IFdURk1vdmUocHJvdGVjdGVk
QnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7Ci0gICAgICAgIGlmIChidWZm
ZXItPmJpbmFyeSkKLSAgICAgICAgICAgIHByb3RlY3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0Rh
dGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcm90
ZWN0ZWRDbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKFN0cmluZzo6ZnJvbVVURjgoZGF0YSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICBpZiAobV9pc1RyYW5zZmVycmluZykgeworICAgICAgICBz
dG9yZU1lc3NhZ2UobV9iZWZvcmVIb3BwaW5nQnVmZmVyLCBidWZmZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudExvY2spOwor
ICAgIHBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlciA9IFdU
Rk1vdmUocHJvdGVjdGVkQnVmZmVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhp
cy0+cHJvY2Vzc01lc3NhZ2UoKmJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdlKHVpbnQ2NF90IGFtb3Vu
dCkKIHsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGFtb3VudF0g
ewotICAgICAgICBwcm90ZWN0ZWRDbGllbnQtPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHN0
YXRpY19jYXN0PHNpemVfdD4oYW1vdW50KSk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NsaWVudExvY2spOworICAgIHBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGFtb3VudF0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc1RyYW5zZmVycmlu
ZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY2xp
ZW50KQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPmJ1ZmZlcmVkQW1vdW50
SXNEZWNyZWFzaW5nKHN0YXRpY19jYXN0PHNpemVfdD4oYW1vdW50KSk7CiAgICAgfSk7CiB9CiAK
K3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUKG1fY2xpZW50TG9jay5pc0hlbGQoKSk7CisK
KyAgICBpZiAoIW1fY29udGV4dElkZW50aWZpZXIpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhtX2NvbnRleHRJZGVudGlmaWVyLCBXVEZNb3Zl
KGZ1bmN0aW9uKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oCmluZGV4IGFlYTI2OTRkZTY4ZWU4NWI1OWExOTllZWQ2YTczZGUzNjc0Y2Q1ZjIuLjJk
ZWRlMmEyMTRlY2NlYjdjODg1YzI4M2Q5NmUwNzc2N2ZkYjlhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0yOCw2ICsyOCwxMCBAQAog
CiAjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxTdGF0ZS5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgogCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogCkBAIC01
MCwyNyArNTQsNDUgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIExpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIsIHByaXZhdGUgd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+
JiYgY2hhbm5lbCkgOiBtX2NoYW5uZWwoV1RGTW92ZShjaGFubmVsKSkgeyBBU1NFUlQobV9jaGFu
bmVsKTsgfQorICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYgY2hhbm5lbCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV1RGTW92
ZShjaGFubmVsKSkpOyB9CiAgICAgfkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigpOwogCiAg
ICAgc3RhdGljIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbml0IGZyb21SVENEYXRhQ2hhbm5lbEluaXQo
Y29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAgICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5l
bEV2ZW50PiBjaGFubmVsRXZlbnQoRG9jdW1lbnQmLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJik7CiAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFD
aGFubmVsSW50ZXJmYWNlPiYmIGNoYW5uZWwpIDogbV9jaGFubmVsKFdURk1vdmUoY2hhbm5lbCkp
IHsgQVNTRVJUKG1fY2hhbm5lbCk7IH0KKwogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlciBB
UEkKLSAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmKSBmaW5h
bDsKKyAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBjaGVja1N0YXRl
KCk7CiAgICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7CiAgICAg
Ym9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlKCkgZmluYWw7CisgICAgdm9pZCBzZXRBc1RyYW5zZmVycmluZygpIGZpbmFsOworICAgIHZv
aWQgc2V0QXNUcmFuc2ZlcnJlZCgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5l
bE9ic2VydmVyIEFQSQogICAgIHZvaWQgT25TdGF0ZUNoYW5nZSgpOwogICAgIHZvaWQgT25NZXNz
YWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgT25CdWZmZXJlZEFtb3Vu
dENoYW5nZSh1aW50NjRfdCk7CiAKKyAgICB1c2luZyBNZXNzYWdlID0gVmFyaWFudDxSVENEYXRh
Q2hhbm5lbFN0YXRlLCBTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBQZW5k
aW5nTWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CisgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVu
ZGluZ01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CisgICAgdm9pZCBwcm9j
ZXNzTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKKyAgICB2b2lkIHByb2Nlc3NT
dG9yZWRNZXNzYWdlKE1lc3NhZ2UmKTsKKworICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9p
ZCgpPiYmKTsKKwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50
ZXJmYWNlPiBtX2NoYW5uZWw7CisgICAgTG9jayBtX2NsaWVudExvY2s7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKICAgICBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworCisgICAgYm9vbCBt
X2lzVHJhbnNmZXJyaW5nIHsgZmFsc2UgfTsKKyAgICBQZW5kaW5nTWVzc2FnZXMgbV9iZWZvcmVI
b3BwaW5nQnVmZmVyOworICAgIFBlbmRpbmdNZXNzYWdlcyBtX2FmdGVySG9wcGluZ0J1ZmZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKaW5kZXggOThiNjFmOWRjNzU1MWY4YjA1MmI0YTcxZDIwY2M1ZWU2
NDZmNTFkNC4uZGQwZWI1NjYzNGI2OTRkN2NmMTg2YThmYzczM2Y2ZTkzNmFmM2U2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTUxMCwxMSArNTEw
LDEzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVUcmFjayhydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlCiAgICAgfSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0
ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5p
dCYgb3B0aW9ucykKK1JlZlB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJU
Q0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKIHsKICAgICBhdXRvIGluaXQgPSBMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQob3B0aW9ucyk7CiAgICAg
YXV0byBjaGFubmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4KCku
ZGF0YSgpLCAmaW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBtYWtlVW5pcXVlPExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRyOworICAgIGlm
ICghY2hhbm5lbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6Y3JlYXRlKFdURk1vdmUoY2hhbm5lbCkpOwogfQogCiB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IDk2NWQyNDNiMzIzNTk1NjcxNDJiZjFl
MmVmYmE3YjE3OTQ0ODNiZmMuLmQ2ZjhhNjFmODE4NjliNWM3OGZiYTdlNTExMTczZjBjMzAxZWFl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4m
Jik7CiAgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlJiwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6OlJ0cFNlbmRl
ckludGVyZmFjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFu
bmVsSW5pdCYpOwogICAgIGJvb2wgYWRkSWNlQ2FuZGlkYXRlKHdlYnJ0Yzo6SWNlQ2FuZGlkYXRl
SW50ZXJmYWNlJiBjYW5kaWRhdGUpIHsgcmV0dXJuIG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRl
KCZjYW5kaWRhdGUpOyB9CiAKICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCA4OTRjNmQyNzlk
ZDdlYTc2MjFkOWY0NDkwNDEzYjY5MDBhOTRjYmQ2Li4wNjE0M2YxNGNiMTY1ZjljZmRkNjdlZWM2
MTk5NzhiYThhZmIyNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIoc3Rk
Ojp1bmlxdWVfcAogICAgIHJldHVybiBSVENSdHBSZWNlaXZlcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHJlbW90ZVRyYWNrKSwgV1RGTW92ZShiYWNrZW5kKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0Rh
dGFDaGFubmVsSW5pdCYgb3B0aW9ucykKK1JlZlB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKIHsK
ICAgICByZXR1cm4gbV9lbmRwb2ludC0+Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIG9wdGlvbnMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaAppbmRleCBmZWM2OGY2MTZlZDBmZDNiMmQyMTQyNjA2ZGFjNzQ3Y2RiMGVhYTIwLi43MDc1
Y2U1MTk4YTZjZWRiNWZhMDBmNWY3NmM4MGRkZDI2ZmQ4OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihjb25zdCBSVENTZXNz
aW9uRGVzY3JpcHRpb24mKSBmaW5hbDsKICAgICB2b2lkIGRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0lj
ZUNhbmRpZGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgZG9TdG9wKCkgZmluYWw7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpIGZpbmFsOworICAgIFJl
ZlB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKSBmaW5hbDsKICAgICB2b2lkIHJl
c3RhcnRJY2UoKSBmaW5hbDsKICAgICBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2lu
dENvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAgICAgdm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDc0YTA5OWUyN2M5MmJhN2Y1ZDBkODA3MjEw
NmQ4ZTQ4YWU1MWU0MzEuLjkzMDJmNGM2ZDIyNDY3YTVhYWFjY2ExMmMxMjUzYmRkMzYzYzg4YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIK
ICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgogI2luY2x1ZGUgIkpTUlRDQ2VydGlmaWNhdGUuaCIK
KyNpbmNsdWRlICJKU1JUQ0RhdGFDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCkBAIC0xODUsNiArMTg2LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBC
aWdJbnRPYmplY3RUYWcgPSA0OCwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1l
bW9yeVRhZyA9IDQ5LAorI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgUlRDRGF0YUNo
YW5uZWxUcmFuc2ZlclRhZyA9IDUwLAogI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CkBA
IC0zNzUsNiArMzc5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRG
bGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVp
bnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJl
c29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRlRGF0
YTp1aW50OF90PikKICAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJUYWcgPHZhbHVlOnVp
bnQzMl90PgogICogICAgfCBXYXNtTWVtb3J5VGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwg
UlRDRGF0YUNoYW5uZWxUcmFuc2ZlclRhZyA8cHJvY2Vzc0lkZW50aWZpZXI6dWludDY0X3Q+PHJ0
Y0RhdGFDaGFubmVsSWRlbnRpZmllcjp1aW50NjRfdD48bGFiZWw6U3RyaW5nPgogICoKICAqIElu
c2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBl
ciBzcGVjOgogICoKQEAgLTU4NCw2ICs1ODksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE9GRlND
UkVFTl9DQU5WQVMpCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNh
bnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+JiBydGNEYXRhQ2hh
bm5lbHMsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNt
TW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFy
cmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKQEAgLTU5NCw2ICs2MDIsOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICAgICBvZmZzY3JlZW5DYW52YXNlcywK
ICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAgICAgcnRjRGF0YUNoYW5uZWxz
LAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgd2FzbU1vZHVs
ZXMsCiAgICAgICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKQEAgLTYyNSw2ICs2MzYsOSBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiYgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjZW5k
aWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8UlRD
RGF0YUNoYW5uZWw+PiYgcnRjRGF0YUNoYW5uZWxzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICAgICAg
ICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCkBAIC02NDcs
NiArNjYxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGltYWdlQml0bWFw
cywgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFwcyk7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVMpCiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChvZmZzY3JlZW5DYW52YXNlcywgbV90cmFuc2Zl
cnJlZE9mZnNjcmVlbkNhbnZhc2VzKTsKKyNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAg
ICAgICBmaWxsVHJhbnNmZXJNYXAocnRjRGF0YUNoYW5uZWxzLCBtX3RyYW5zZmVycmVkUlRDRGF0
YUNoYW5uZWxzKTsKICNlbmRpZgogICAgIH0KIApAQCAtNjYzLDYgKzY4MCwxOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQob2JqLCBpKTsKICAgICAgICAgfQogICAgIH0K
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICB2b2lkIGZpbGxUcmFuc2Zlck1hcChjb25zdCBW
ZWN0b3I8UmVmPFQ+PiYgaW5wdXQsIE9iamVjdFBvb2wmIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGlmIChpbnB1dC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPiht
X2xleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
cHV0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSB0b0pT
KG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbnB1dFtpXS5nZXQoKSk7Cisg
ICAgICAgICAgICBKU0M6OkpTT2JqZWN0KiBvYmogPSB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICAg
ICAgICAgIGlmIChvYmogJiYgIXJlc3VsdC5jb250YWlucyhvYmopKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQob2JqLCBpKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIHNlcmlhbGl6ZShKU1ZhbHVlIGluKTsKIApAQCAtMTA4NSw2ICsxMTE1LDIw
IEBAIHByaXZhdGU6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICB2
b2lkIGR1bXBSVENEYXRhQ2hhbm5lbChKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSYgY29kZSkKKyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkUlRD
RGF0YUNoYW5uZWxzLmZpbmQob2JqKTsKKyAgICAgICAgaWYgKGluZGV4ICE9IG1fdHJhbnNmZXJy
ZWRSVENEYXRhQ2hhbm5lbHMuZW5kKCkpIHsKKyAgICAgICAgICAgIHdyaXRlKFJUQ0RhdGFDaGFu
bmVsVHJhbnNmZXJUYWcpOworICAgICAgICAgICAgd3JpdGUoaW5kZXgtPnZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgfQorI2VuZGlmCisKICAgICBib29sIGR1
bXBJZlRlcm1pbmFsKEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2Rl
KQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkgewpAQCAtMTI1NSw2ICsxMjk5
LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgICAg
ICAgICAgICAgeyB9LAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICAgICAg
ICAgICAgIHsgfSwKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAg
ICAgICAgICAgZHVtbXlNb2R1bGVzLAogICAgICAgICAgICAgICAgICAgICBkdW1teU1lbW9yeUhh
bmRsZXMsCkBAIC0xMzM1LDYgKzEzODIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBk
dW1wT2Zmc2NyZWVuQ2FudmFzKG9iaiwgY29kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAg
ICAgIGlmIChvYmotPmluaGVyaXRzKHZtLCBKU1JUQ0RhdGFDaGFubmVsOjppbmZvKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZHVtcFJUQ0RhdGFDaGFubmVsKG9iaiwgY29kZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTY4NSw2ICsxNzM4LDkgQEAgcHJpdmF0ZToKICAg
ICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRJbWFnZUJpdG1hcHM7CiAjaWYgRU5BQkxFKE9GRlND
UkVFTl9DQU5WQVMpCiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
ZXM7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBPYmplY3RQb29sIG1fdHJhbnNm
ZXJyZWRSVENEYXRhQ2hhbm5lbHM7CiAjZW5kaWYKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50aWZpZXJSZXBIYXNoPiBTdHJpbmdD
b25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29sIG1fY29uc3RhbnRQb29sOwpAQCAt
MTk2OSw2ICsyMDI1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBi
YWNraW5nU3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXNlcworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRhY2hl
ZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVm
ZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTE5ODMsNiArMjA0Miw5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhc2VzKQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAg
ICAgICAsIFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAsIHdhc21Nb2R1bGVzCiAgICAgICAgICAgICAs
IHdhc21NZW1vcnlIYW5kbGVzCkBAIC0yMDM3LDYgKzIwOTksOSBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMgPSB7
IH0KICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5l
bHMgPSB7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNt
TW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzID0gbnVsbHB0cgogICAgICAgICAsIFdhc21NZW1vcnlI
YW5kbGVBcnJheSogd2FzbU1lbW9yeUhhbmRsZXMgPSBudWxscHRyCkBAIC0yMDU4LDYgKzIxMjMs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMoV1RG
TW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKICAgICAgICAgLCBtX29mZnNjcmVlbkNh
bnZhc2VzKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5zaXplKCkpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKyAgICAgICAgLCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1v
dmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpKQorICAgICAgICAsIG1fcnRjRGF0YUNoYW5uZWxz
KG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMuc2l6ZSgpKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCiAgICAgICAg
ICwgbV93YXNtTWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKQEAgLTIwNzEsNiArMjE0
MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAg
ICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKICAgICAgICAgLCBXYXNtTWVtb3J5
SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVzCkBAIC0yMDk1LDYgKzIxNjcsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMoV1RGTW92ZShkZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKICAgICAgICAgLCBtX29mZnNjcmVlbkNhbnZhc2VzKG1f
ZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5zaXplKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
X1JUQykKKyAgICAgICAgLCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbHMpKQorICAgICAgICAsIG1fcnRjRGF0YUNoYW5uZWxzKG1fZGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbHMuc2l6ZSgpKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCiAgICAgICAgICwgbV93YXNt
TWVtb3J5SGFuZGxlcyh3YXNtTWVtb3J5SGFuZGxlcykKQEAgLTMwMDUsNiArMzA4MSwyMyBAQCBw
cml2YXRlOgogICAgICAgICBhdXRvIHJ0Y0NlcnRpZmljYXRlID0gUlRDQ2VydGlmaWNhdGU6OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4tPnN0cmluZygpKSwg
ZXhwaXJlcywgV1RGTW92ZShmaW5nZXJwcmludHMpLCBjZXJ0aWZpY2F0ZS0+dGFrZVN0cmluZygp
LCBrZXllZE1hdGVyaWFsLT50YWtlU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gdG9KU05ld2x5
Q3JlYXRlZChtX2xleGljYWxHbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KG1fZ2xvYmFsT2JqZWN0KSwgV1RGTW92ZShydGNDZXJ0aWZpY2F0ZSkpOwogICAgIH0KKworICAg
IEpTVmFsdWUgcmVhZFJUQ0RhdGFDaGFubmVsKCkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGlu
ZGV4OworICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwor
ICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCBpbmRleCA+PSBtX2RldGFjaGVk
UlRDRGF0YUNoYW5uZWxzLnNpemUoKSkgeworICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbV9ydGNEYXRh
Q2hhbm5lbHNbaW5kZXhdKSB7CisgICAgICAgICAgICBhdXRvIGRldGFjaGVkQ2hhbm5lbCA9IFdU
Rk1vdmUobV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOworICAgICAgICAgICAg
bV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0
YWNoZWRDaGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwp
LCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3Rh
dGUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUobV9ydGNEYXRhQ2hh
bm5lbHNbaW5kZXhdLmdldCgpKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIEpTVmFsdWUgcmVhZElt
YWdlQml0bWFwKCkKQEAgLTM0NzcsNiArMzU3MCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICBjYXNlIE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVyVGFn
OgogICAgICAgICAgICAgcmV0dXJuIHJlYWRPZmZzY3JlZW5DYW52YXMoKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShXRUJfUlRDKQorICAgICAgICBjYXNlIFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJUYWc6
CisgICAgICAgICAgICByZXR1cm4gcmVhZFJUQ0RhdGFDaGFubmVsKCk7CiAjZW5kaWYKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBiYWNrCkBA
IC0zNTEyLDYgKzM2MDksMTAgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOwog
ICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gbV9vZmZzY3JlZW5DYW52YXNlczsK
ICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHM7CisgICAg
VmVjdG9yPFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4+IG1fcnRjRGF0YUNoYW5uZWxzOworI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSogbV93YXNtTW9k
dWxlczsKICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIG1fd2FzbU1lbW9yeUhhbmRsZXM7CkBA
IC0zNzM1LDYgKzM4MzYsOSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKKyNlbmRpZgog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1v
ZHVsZUFycmF5PiB3YXNtTW9kdWxlc0FycmF5CiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdh
c21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNBcnJheQpAQCAtMzc0Nyw2ICsz
ODUxLDkgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NB
TlZBUykKICAgICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzZXMpKQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgLCBt
X2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMp
KQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICwgbV93YXNtTW9kdWxlc0Fy
cmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJheSkpCiAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVz
QXJyYXkoV1RGTW92ZSh3YXNtTWVtb3J5SGFuZGxlc0FycmF5KSkKQEAgLTM3ODUsNiArMzg5Miwx
MiBAQCBzaXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29zdCgpIGNv
bnN0CiAgICAgICAgICAgICBjb3N0ICs9IGNhbnZhcy0+bWVtb3J5Q29zdCgpOwogICAgIH0KICNl
bmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGZvciAoYXV0byYgY2hhbm5lbCA6IG1fZGV0
YWNoZWRSVENEYXRhQ2hhbm5lbHMpIHsKKyAgICAgICAgaWYgKGNoYW5uZWwpCisgICAgICAgICAg
ICBjb3N0ICs9IGNoYW5uZWwtPm1lbW9yeUNvc3QoKTsKKyAgICB9CisjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBXZSBhcmUgbm90IHN1cHBvcnRpbmcgV2ViQXNzZW1i
bHkgTW9kdWxlIG1lbW9yeSBlc3RpbWF0aW9uIHlldC4KQEAgLTM4NzgsNiArMzk5MSw5IEBAIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IGR1
bW15SW1hZ2VCaXRtYXBzOwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgIFZlY3Rv
cjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKKyNlbmRp
ZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBk
dW1teVJUQ0RhdGFDaGFubmVsczsKICNlbmRpZgogICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAg
LTM4ODksNiArNDAwNSw5IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAjaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCiAgICAgICAgIGR1bW15T2Zmc2NyZWVuQ2FudmFzZXMsCiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgZHVtbXlSVENEYXRhQ2hhbm5lbHMsCisjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKICAgICAg
ICAgZHVtbXlNZW1vcnlIYW5kbGVzLApAQCAtMzkzNCw2ICs0MDUzLDIxIEBAIHN0YXRpYyBib29s
IGNhbk9mZnNjcmVlbkNhbnZhc2VzRGV0YWNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzPj4mIG9mCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorc3RhdGljIGJv
b2wgY2FuRGV0YWNoUlRDRGF0YUNoYW5uZWxzKGNvbnN0IFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5u
ZWw+PiYgY2hhbm5lbHMpCit7CisgICAgSGFzaFNldDxSVENEYXRhQ2hhbm5lbCo+IHZpc2l0ZWQ7
CisgICAgZm9yIChhdXRvJiBjaGFubmVsIDogY2hhbm5lbHMpIHsKKyAgICAgICAgaWYgKCFjaGFu
bmVsLT5jYW5EZXRhY2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8g
Q2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBhZGQsIHdlIHNob3VsZCBub3QgZW5jb3VudGVyIGR1
cGxpY2F0ZXMuCisgICAgICAgIGlmICghdmlzaXRlZC5hZGQoY2hhbm5lbC5wdHIoKSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisKIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
TGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFNlcmlhbGl6
YXRpb25Db250ZXh0IGNvbnRleHQpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwpAQCAtMzk0MSw2ICs0MDc1LDkgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAg
ICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gaW1hZ2VCaXRtYXBzOwogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQogICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gb2Zm
c2NyZWVuQ2FudmFzZXM7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBWZWN0b3I8
UmVmPFJUQ0RhdGFDaGFubmVsPj4gZGF0YUNoYW5uZWxzOwogI2VuZGlmCiAgICAgZm9yIChhdXRv
JiB0cmFuc2ZlcmFibGUgOiB0cmFuc2Zlckxpc3QpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXlC
dWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodm0sIHRyYW5zZmVyYWJsZS5nZXQo
KSkpIHsKQEAgLTM5NzUsNiArNDExMiwxMyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAg
ICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICBpZiAoYXV0byBj
aGFubmVsID0gSlNSVENEYXRhQ2hhbm5lbDo6dG9XcmFwcGVkKHZtLCB0cmFuc2ZlcmFibGUuZ2V0
KCkpKSB7CisgICAgICAgICAgICBkYXRhQ2hhbm5lbHMuYXBwZW5kKCpjaGFubmVsKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICB9CiAKQEAgLTM5ODQsNiArNDEyOCwxMCBA
QCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgIGlmICghY2FuT2Zmc2NyZWVuQ2FudmFzZXNE
ZXRhY2gob2Zmc2NyZWVuQ2FudmFzZXMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmICgh
Y2FuRGV0YWNoUlRDRGF0YUNoYW5uZWxzKGRhdGFDaGFubmVscykpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBEYXRhQ2xvbmVFcnJvciB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOwogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOwpAQCAtMzk5Niw2ICs0MTQ0
LDkgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
UykKICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JU
QykKKyAgICAgICAgZGF0YUNoYW5uZWxzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICB3YXNtTW9kdWxlcywKICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMsCkBAIC00
MDE2LDExICs0MTY3LDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgZm9yIChhdXRv
IG9mZnNjcmVlbkNhbnZhcyA6IG9mZnNjcmVlbkNhbnZhc2VzKQogICAgICAgICBkZXRhY2hlZENh
bnZhc2VzLmFwcGVuZChvZmZzY3JlZW5DYW52YXMtPmRldGFjaCgpKTsKICNlbmRpZgorI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRh
Q2hhbm5lbD4+IGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzOworICAgIGZvciAoYXV0byYgY2hhbm5l
bCA6IGRhdGFDaGFubmVscykKKyAgICAgICAgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMuYXBwZW5k
KGNoYW5uZWwtPmRldGFjaCgpKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVm
ZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxp
emF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMp
IDogbnVsbHB0ciwgV1RGTW92ZShiYWNraW5nU3RvcmVzKQogI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQogICAgICAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZENhbnZhc2VzKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFj
aGVkUlRDRGF0YUNoYW5uZWxzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQog
ICAgICAgICAgICAgICAgICwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2Vy
UG9zdE1lc3NhZ2UgPyBtYWtlVW5pcXVlPFdhc21NZW1vcnlIYW5kbGVBcnJheT4od2FzbU1lbW9y
eUhhbmRsZXMpIDogbnVsbHB0cgpAQCAtNDA3Nyw2ICs0MjM2LDkgQEAgSlNWYWx1ZSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LAogICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFs
aXplcjo6ZGVzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbWVz
c2FnZVBvcnRzLCBXVEZNb3ZlKG1fYmFja2luZ1N0b3JlcykKICNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBUykKICAgICAgICAgLCBXVEZNb3ZlKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykK
KyNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIFdURk1vdmUobV9kZXRhY2hl
ZFJUQ0RhdGFDaGFubmVscykKICNlbmRpZgogICAgICAgICAsIG1fYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LmdldCgpLCBtX2RhdGEsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBtX3NoYXJlZEJ1
ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IDBjZGI0MDE4Yzg0N2ZhMDBmZWQ3ZjVmYjBmY2JjYTM1Mzk4MzUyNTEuLjU0YzhlODBmNGUwYjAx
NDBmNjE0MmY5NDEyMmMxNTYwODViZGFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01MCw2ICs1MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKIGNsYXNzIERldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCitzdHJ1Y3Qg
RGV0YWNoZWRSVENEYXRhQ2hhbm5lbDsKKyNlbmRpZgogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBN
ZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKQEAgLTEyMiw2ICsxMjUsOSBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmID0geyB9CiAjZW5k
aWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmID0geyB9CisjZW5kaWYKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gPSBu
dWxscHRyCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4g
PSBudWxscHRyCkBAIC0xMzcsNiArMTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOwogI2VuZGlmCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFu
bmVsPj4gbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVsczsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1
bGVzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gbV93
YXNtTWVtb3J5SGFuZGxlc0FycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCBiNTE4NzY1
NWMwNjIwOTVhYWZlNmI0NjM4NmQ4YTAzMGVjZDFmNWQ4Li40MjE1YzRhZDNmMmE2ODRjNDE5ZDhl
MDQxOTY3OTA1MjhlMGRkZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMjgsNyArMjgs
OSBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiUlRDUHJpb3JpdHlUeXBlLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSwxOSAr
NDMsMzEgQEAgc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5pdCB7CiAgICAgT3B0aW9uYWw8Ym9vbD4g
bmVnb3RpYXRlZDsKICAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQ7CiAgICAgUlRDUHJp
b3JpdHlUeXBlIHByaW9yaXR5IHsgUlRDUHJpb3JpdHlUeXBlOjpMb3cgfTsKKworICAgIFJUQ0Rh
dGFDaGFubmVsSW5pdCBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKK2lubGluZSBSVENEYXRh
Q2hhbm5lbEluaXQgUlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENvcHkoKSBjb25zdAorewor
ICAgIGF1dG8gY29weSA9ICp0aGlzOworICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29s
YXRlZENvcHkoKTsKKyAgICByZXR1cm4gY29weTsKK30KKwogY2xhc3MgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50OwogCi1jbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgeworY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFu
ZGxlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldEFzVHJhbnNmZXJyaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc1RyYW5zZmVy
cmVkKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRm
OWYyNzQyLi4xNGU0OTJhMmQ0NDY2M2UwMWI4M2RkZDQyYjVlNGQ5YjRjMzkzMjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBz
aXplX3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVfdCkgPSAwOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAppbmRleCA0ZTA5ZWQ2YzYz
OTMyNDg3ZWUzNWIzMDVhOGM3MTYwZjI5MGZjN2U1Li44YThiNzVmN2FiMzY5MGI2M2FjNGJkMjhj
ODkwYTk1MjJhNTUyYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
ZUNvbm5lY3Rpb25TdGF0ZShSVENJY2VDb25uZWN0aW9uU3RhdGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtUHJp
dmF0ZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUmVmUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4p
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCmlu
ZGV4IGU4MDZhNjE1OTI5N2M5M2I4OTZjMmY4ZGZmMWQ5NzU1MGNkOGJjYTIuLmQwMzAwNTM2ZWQ5
MzBmYmY5YzIwMmJiOTcyNjEwZDRjNWY4OWE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpSVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0CiB7CiB9CiAKLXZvaWQgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCYgY2xpZW50KQordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZXRDbGllbnQoUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9jbGllbnQpOwogICAgIG1fY2xpZW50ID0gJmNs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggZjNjZmE2ODA0ODZmNzQ4YTVmNGM4NDk4OGI4ZGY4
MmRmN2YxMDJjYy4uODY1NDI1NzFlMDc4Nzk4MjZlYjE1MWQ3ZDJhMzgyODkwY2FiZWJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmgKQEAgLTM1LDE0ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CisgICAgc3RhdGljIFJlZjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBS
VENEYXRhQ2hhbm5lbEluaXQmIGluaXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jayhsYWJlbCwgaW5pdCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JikgZmluYWw7CisgICAgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbElu
aXQmKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOworICAg
IHZvaWQgc2V0QXNUcmFuc2ZlcnJpbmcoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNldEFzVHJhbnNm
ZXJyZWQoKSBmaW5hbCB7IH0KIAogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9j
bGllbnQgeyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0YjU4
Mzg1NjhiMThhNGUuLjYwODhhY2MyMDVjYTU3M2E4ZDdlYzgxMjE0MTNhOTExMmI0MjE0MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRh
Q2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaQogCiB2b2lkIFJlbW90
ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1v
dGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKKyAgICBtX2Ns
aWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6
Y3JlYXRlKCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkp
KTsKIH0KIAogRGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyOjpEYXRhQ2hhbm5lbFN0YXRlTm90aWZp
ZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQsIFJUQ0RhdGFDaGFubmVsU3Rh
dGUgc3RhdGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZmQ4ZjMyMWEwZjVjZTYzMzljMzQ5YmNjOTA1MTQwYTIxMjI0ZmZi
My4uYTgxZDc4ZmY3YmFjNzUyOTc4NGM5ZWY2ZDY5MjU2YmRjZWMyODcwMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTAzLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIFJUQ0RhdGFDaGFubmVsIHRyYW5zZmVyYWJsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvZGF0
YWNoYW5uZWwtd29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dw
dC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9ubWVzc2Fn
ZSk6CisKIDIwMjEtMDMtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFsgbWFjT3MgV2sxIF0gaHR0cC93cHQvZmlsZXJlYWRlci9maWxlcmVhZGVyLXN0b3Au
aHRtbCBpcyBhIGZsYWtleSB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnJ0Yy9kYXRhY2hhbm5lbC13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjc5NGZkZDI2Y2VkYWUxYmM1ZjJkYmQ3ODkyMTIyN2M5MmQ1YjdiZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9kYXRhY2hhbm5lbC13b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIGRhdGEgY2hhbm5lbCBpbiB3b3Jr
ZXJzCitQQVNTIGRhdGEgY2hhbm5lbCBjbG9zZSBldmVudCBpbiB3b3JrZXIKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRlNDc0NDJmY2NiOWExZmNiMWVlMzFlMTkzNDZjNzBiZTg1Njg5ZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2Vy
Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgordmFyIGxvY2FsQ2hhbm5lbDsKK3ZhciByZW1vdGVDaGFubmVs
OworCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCit7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3Jr
ZXIgPSBuZXcgV29ya2VyKCdkYXRhY2hhbm5lbC13b3JrZXIuanMnKTsKKyAgICBsZXQgZGF0YSA9
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVz
b2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBkYXRhLCAicmVnaXN0
ZXJlZCIpOworCisgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAg
ICAgICBsb2NhbENoYW5uZWwgPSBmaXJzdENvbm5lY3Rpb24uY3JlYXRlRGF0YUNoYW5uZWwoJ3Nl
bmREYXRhQ2hhbm5lbCcpOworICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtjaGFubmVs
OiBsb2NhbENoYW5uZWx9LCBbbG9jYWxDaGFubmVsXSk7CisKKyAgICAgICAgfSwgKHNlY29uZENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub25kYXRhY2hhbm5l
bCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlbW90ZUNoYW5uZWwgPSBldmVudC5j
aGFubmVsOworICAgICAgICAgICAgICAgIHJlbW90ZUNoYW5uZWwub25vcGVuID0gcmVzb2x2ZTsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJl
amVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgMjUwMDApOworICAgIH0pOworCisgICAgZGF0YSA9IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2
ZShldmVudC5kYXRhKSk7CisgICAgcmVtb3RlQ2hhbm5lbC5zZW5kKCJPSyIpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgZGF0YSwgIk9LIik7CisKKyAgICBkYXRhID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiByZW1vdGVDaGFubmVsLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVu
dC5kYXRhKSk7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHttZXNzYWdlOiAiT0syIn0pOworICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0YSwgIk9LMiIpOworfSwgImRhdGEgY2hhbm5lbCBpbiB3
b3JrZXJzIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9
IG5ldyBXb3JrZXIoJ2RhdGFjaGFubmVsLXdvcmtlci5qcycpOworICAgIGxldCBkYXRhID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJyZWdpc3RlcmVk
Iik7CisKKyAgICBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJz
dENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGxvY2FsQ2hhbm5lbCA9IGZpcnN0Q29ubmVj
dGlvbi5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7CisgICAgICAgICAgICB3
b3JrZXIucG9zdE1lc3NhZ2Uoe2NoYW5uZWw6IGxvY2FsQ2hhbm5lbH0sIFtsb2NhbENoYW5uZWxd
KTsKKworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vj
b25kQ29ubmVjdGlvbi5vbmRhdGFjaGFubmVsID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVtb3RlQ2hhbm5lbCA9IGV2ZW50LmNoYW5uZWw7CisgICAgICAgICAgICAgICAgcmVtb3Rl
Q2hhbm5lbC5vbm9wZW4gPSByZXNvbHZlOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCAyNTAwMCk7
CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJvcGVuZWQiKTsKKwor
ICAgIGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHJlbW90ZUNoYW5uZWwuY2xvc2UoKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJjbG9zZWQiKTsKKworfSwgImRhdGEgY2hh
bm5lbCBjbG9zZSBldmVudCBpbiB3b3JrZXIiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2Rh
dGFjaGFubmVsLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9kYXRhY2hh
bm5lbC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBkNzFmNjhmMDIyZjJjNzlkMzEyMGMwN2U0ZGE4
YTc2NTc5YmNmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9kYXRhY2hhbm5lbC13b3JrZXIuanMKQEAgLTAsMCArMSwxOSBAQAorbGV0IGNoYW5uZWw7Citv
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YS5jaGFubmVsKSB7Cisg
ICAgICAgIGNoYW5uZWwgPSBldmVudC5kYXRhLmNoYW5uZWw7CisgICAgICAgIGNoYW5uZWwub25v
cGVuID0gKCkgPT4gc2VsZi5wb3N0TWVzc2FnZSgib3BlbmVkIik7CisgICAgICAgIGNoYW5uZWwu
b25lcnJvciA9ICgpID0+IHNlbGYucG9zdE1lc3NhZ2UoImVycm9yZWQiKTsKKyAgICAgICAgY2hh
bm5lbC5vbmNsb3NlID0gKCkgPT4gc2VsZi5wb3N0TWVzc2FnZSgiY2xvc2VkIik7CisgICAgICAg
IGNoYW5uZWwub25tZXNzYWdlID0gZXZlbnQgPT4gc2VsZi5wb3N0TWVzc2FnZShldmVudC5kYXRh
KTsKKyAgICB9CisgICAgaWYgKGV2ZW50LmRhdGEubWVzc2FnZSkgeworICAgICAgICBpZiAoY2hh
bm5lbCkKKyAgICAgICAgICAgIGNoYW5uZWwuc2VuZChldmVudC5kYXRhLm1lc3NhZ2UpOworICAg
IH0KKyAgICBpZiAoZXZlbnQuZGF0YS5jbG9zZSkgeworICAgICAgICBpZiAoY2hhbm5lbCkKKyAg
ICAgICAgICAgIGNoYW5uZWwuY2xvc2UoKTsKKyAgICB9Cit9Oworc2VsZi5wb3N0TWVzc2FnZSgi
cmVnaXN0ZXJlZCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422914</attachid>
            <date>2021-03-11 01:18:31 -0800</date>
            <delta_ts>2021-03-12 02:16:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222965-20210311101829.patch</filename>
            <type>text/plain</type>
            <size>48180</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZhMGQ4ODBmYWJhMjMz
ODc2Y2M3ODZmNjdiZjViOTc4MDdjMWMwOS4uYzkxNDhhMzA5YzYyZjM2MTNjZWFmNmJlNzgwMTMw
MzlhZWY4YmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTAzLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFJUQ0RhdGFDaGFu
bmVsIHRyYW5zZmVyYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVG8gdHJhbnNmZXIgYSBSVENEYXRhQ2hhbm5lbCB0byB3b3JrZXJzLCB3ZSBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBSVENEYXRhQ2hhbm5lbCB1c2luZyB0aGUgc2FtZSBkYXRhIGNoYW5u
ZWwgYmFja2VuZCwgd2hpY2ggaXMgY3Jvc3MtdGhyZWFkIGNvbXBhdGlibGUuCisgICAgICAgIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBtaXNzIGZvcndhcmRpbmcgYW55IGV2ZW50LiBB
bmQgYWxzbyBpdCBpcyBhIGJ1cmRlbiB0byB0cmFuc2ZlciBhIGRhdGEgY2hhbm5lbCB0aGF0IGlz
IHNlbmRpbmcgZGF0YSAoc2F5IGJsb2JzIGZvciBpbnN0YW5jZSkuCisgICAgICAgIEZvciB0aGF0
IHJlYXNvbiwgd2UgY3VycmVudGx5IG9ubHkgYWxsb3cgdHJhbnNmZXJyaW5nIGRhdGEgY2hhbm5l
bHMgaW4gdGhlIGV2ZW50IGxvb3AgdGFzayB0aGF0IGNyZWF0ZWQgdGhlIGRhdGEgY2hhbm5lbC4K
KworICAgICAgICBXZSBhZGQgdGhlIGluZnJhc3RydWN0dXJlIHRvIHRyYW5zZmVyIFJUQ0RhdGFD
aGFubmVsIGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5
IHNlcmlhbGl6aW5nIGFuIGluZGV4IHRvIHRoZSB0cmFuc2ZlcmVkIGRhdGEgY2hhbm5lbC4gVGhl
IHRyYW5zZmVyZWQgZGF0YSBjaGFubmVsIGNvbnRhaW5zIHN0YXRlIGluZm9ybWF0aW9uIGFuZCBh
biBpZGVudGlmaWVyIHdoaWNoIGFsbG93cyB0byBrbm93CisgICAgICAgIGluIHdoaWNoIHByb2Nl
c3MgaXMgdGhlIGRhdGEgY2hhbm5lbCB0byB0cmFuc2ZlciBhbmQgYW4gaWRlbnRpZmllciB0byBy
ZXRyaWV2ZSBpdCBmcm9tIGEgZ2xvYmFsIG1hcC4KKworICAgICAgICBXZSBhbHNvIG5lZWQgdG8g
dXBkYXRlIHRoZSBjb2RlIHNvIHRoYXQgZGF0YSBjaGFubmVsIGJhY2tlbmRzIGNhbiBjaGFuZ2Ug
b2YgY2xpZW50LgorICAgICAgICBGb3IgdGhhdCBwdXJwb3NlLCB3ZSBkZWxheSBzZXR0aW5nIHRo
ZSBjbGllbnQgdG8gd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgdHJhbnNmZXJhYmxlLgorICAgICAg
ICBBdCB0aGF0IHRpbWUsIHdlIHJlZ2lzdGVyIHRoZSBkYXRhIGNoYW5uZWwgYXMgY2xpZW50IHRv
IGl0cyBiYWNrZWQuCisgICAgICAgIEluIHRoZSBtZWFudGltZSwgdGhlIGRhdGEgY2hhbm5lbCBi
YWNrZW5kIHdpbGwgc3RvcmUgYWxsIG1lc3NhZ2VzIHJlY2VpdmVkIHNvIGZhci4KKyAgICAgICAg
T25jZSBjbGllbnQgaXMgc2V0LCB0aGUgZGF0YSBjaGFubmVsIGJhY2tlbmQgd2lsbCBkZWxpdmVy
IGFsbCBtZXNzYWdlcyBhbmQgc3RhdGUgY2hhbmdlcyB0byB0aGUgZGF0YSBjaGFubmVsLgorCisg
ICAgICAgIFNpbmNlIGNsaWVudCBtaWdodCB3YW50IHRvIGdldCBtZXNzYWdlcyBpbiBhIHdvcmtl
ciB0aHJlYWQsIHRoZSBjbGllbnQgbm93IGFsc28gcmVnaXN0ZXJzIGl0cyBjb250ZXh0IGlkZW50
aWZpZXIsCisgICAgICAgIHdoaWNoIGlzIHVzZWQgdG8gcG9zdCBhIHRhc2sgdG8gdGhlIHJpZ2h0
IHRocmVhZC4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC93ZWJydGMvZGF0YWNoYW5uZWwtd29y
a2VyLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9jb250ZXh0SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6cnRjRGF0YUNoYW5uZWxMb2NhbE1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y2FuRGV0YWNoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2xvc2VkQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRSVENEYXRhQ2hhbm5l
bDo6RGV0YWNoZWRSVENEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZFJU
Q0RhdGFDaGFubmVsOjptZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjp+
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPblN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hlY2tTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uQnVmZmVyZWRBbW91bnRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpwb3N0
VGFzayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZmlsbFRyYW5zZmVyTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcFJUQ0RhdGFDaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFJUQ0RhdGFDaGFubmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5Q29z
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYW5EZXRhY2hSVENEYXRhQ2hhbm5lbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNldENsaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisKIDIwMjEtMDMtMTAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgUlRDRGF0YUNo
YW5uZWwgdXNlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGEgRG9jdW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKaW5kZXggNzllOGEyNjhjNmI5NmNiZjdjODM1NzQ5M2M2MzEzOTkyMDI5YmQ4Yi4u
ZmQwY2U5YWQxNzY2NWIzZDUxMDU2Y2Q5MjkyMjA0MjdhNDdlYjVhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAg
LTU5LDggKzU5LDE2IEBAIFJlZjxSVENEYXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6CiAgICAgQVNTRVJUKGhhbmRs
ZXIpOwogICAgIGF1dG8gY2hhbm5lbCA9IGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWwoY29u
dGV4dCwgV1RGTW92ZShoYW5kbGVyKSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykp
KTsKICAgICBjaGFubmVsLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICBjaGFubmVsLT5tX2hhbmRs
ZXItPnNldENsaWVudChjaGFubmVsLmdldCgpKTsKICAgICBjaGFubmVsLT5zZXRQZW5kaW5nQWN0
aXZpdHkoY2hhbm5lbC5nZXQoKSk7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKGNo
YW5uZWwuZ2V0KCksIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFtjaGFubmVsID0gY2hhbm5lbC5w
dHIoKV0geworICAgICAgICBpZiAoIWNoYW5uZWwtPm1faXNEZXRhY2hhYmxlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjaGFubmVsLT5tX2lzRGV0YWNoYWJsZSA9IGZhbHNlOworICAg
ICAgICBpZiAoIWNoYW5uZWwtPm1faGFuZGxlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjaGFubmVsLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
CisgICAgICAgICAgICBjaGFubmVsLT5tX2hhbmRsZXItPnNldENsaWVudCgqY2hhbm5lbCwgY29u
dGV4dC0+Y29udGV4dElkZW50aWZpZXIoKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIGNoYW5uZWw7
CiB9CiAKQEAgLTg0LDYgKzkyLDggQEAgTmV0d29ya1NlbmRRdWV1ZSBSVENEYXRhQ2hhbm5lbDo6
Y3JlYXRlTWVzc2FnZVF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQKIFJUQ0RhdGFD
aGFubmVsOjpSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiYmIGhhbmRsZXIsIFN0cmluZyYm
IGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBvcHRpb25zKQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQogICAgICwgbV9oYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCisgICAgLCBt
X2lkZW50aWZpZXIoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHsgUHJvY2Vzczo6aWRlbnRpZmll
cigpLCBPYmplY3RJZGVudGlmaWVyPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllclR5cGU+OjpnZW5l
cmF0ZVRocmVhZFNhZmUoKSB9KQorICAgICwgbV9jb250ZXh0SWRlbnRpZmllcihjb250ZXh0Lmlz
RG9jdW1lbnQoKSA/IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHsgfSA6IGNvbnRl
eHQuY29udGV4dElkZW50aWZpZXIoKSkKICAgICAsIG1fbGFiZWwoV1RGTW92ZShsYWJlbCkpCiAg
ICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fbWVzc2FnZVF1ZXVlKGNy
ZWF0ZU1lc3NhZ2VRdWV1ZShjb250ZXh0LCAqdGhpcykpCkBAIC0xNjgsNyArMTc4LDggQEAgdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6Y2xvc2UoKQogCiAgICAgbV9tZXNzYWdlUXVldWUuY2xlYXIoKTsK
IAotICAgIG1faGFuZGxlci0+Y2xvc2UoKTsKKyAgICBpZiAobV9oYW5kbGVyKQorICAgICAgICBt
X2hhbmRsZXItPmNsb3NlKCk7CiAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICB1bnNldFBl
bmRpbmdBY3Rpdml0eSgqdGhpcyk7CiB9CkBAIC0yMzcsNiArMjQ4LDYzIEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWw6OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAg
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBX
VEZNb3ZlKGV2ZW50KSk7CiB9CiAKK3N0YXRpYyBMb2NrIHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1h
cExvY2s7CitzdGF0aWMgSGFzaE1hcDxPYmplY3RJZGVudGlmaWVyPFJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllclR5cGU+LCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0
Y0RhdGFDaGFubmVsTG9jYWxNYXAoKQoreworICAgIEFTU0VSVChzX3J0Y0RhdGFDaGFubmVsTG9j
YWxNYXBMb2NrLmlzSGVsZCgpKTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8T2JqZWN0SWRlbnRpZmllcjxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXJUeXBlPiwgc3RkOjp1
bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4+PiBtYXA7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAg
ICAgICAgbWFwLmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBtYXA7Cit9CisKK2Jv
b2wgUlRDRGF0YUNoYW5uZWw6OmNhbkRldGFjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNE
ZXRhY2hhYmxlICYmIG1fcmVhZHlTdGF0ZSAhPSBSVENEYXRhQ2hhbm5lbFN0YXRlOjpDbG9zZWQ7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hh
bm5lbDo6ZGV0YWNoKCkKK3sKKyAgICBBU1NFUlQobV9pc0RldGFjaGFibGUpOworCisgICAgYXV0
byBzdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKworICAgIG1faXNEZXRhY2hhYmxlID0gZmFsc2U7Cisg
ICAgbV9yZWFkeVN0YXRlID0gUlRDRGF0YUNoYW5uZWxTdGF0ZTo6Q2xvc2VkOworCisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICBy
dGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkuYWRkKGlkZW50aWZpZXIoKS5jaGFubmVsSWRlbnRpZmll
ciwgV1RGTW92ZShtX2hhbmRsZXIpKTsKKworICAgIHJldHVybiBtYWtlVW5pcXVlPERldGFjaGVk
UlRDRGF0YUNoYW5uZWw+KGlkZW50aWZpZXIoKSwgbGFiZWwoKS5pc29sYXRlZENvcHkoKSwgb3B0
aW9ucygpLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZUNs
b3NlZENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbGFi
ZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCit7CisgICAgYXV0byBjaGFubmVsID0g
UlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBudWxscHRyLCBXVEZNb3ZlKGxhYmVsKSwg
V1RGTW92ZShvcHRpb25zKSk7CisgICAgY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICByZXR1cm4gY2hh
bm5lbDsKK30KKworUmVmPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcmJiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucywg
UlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAoaWRlbnRpZmllci5wcm9jZXNz
SWRlbnRpZmllciAhPSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBvdXQtb2YtcHJvY2VzcyBkYXRhIGNoYW5uZWxzLgorICAgICAgICBy
ZXR1cm4gY3JlYXRlQ2xvc2VkQ2hhbm5lbChjb250ZXh0LCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92
ZShvcHRpb25zKSk7CisgICAgfQorCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0Rh
dGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICAvLyBGSVhNRTogQXQgQ29udGV4dERlc3RydWN0
aW9uIHRpbWUsIHdlIHNob3VsZCBwcm9iYWJseSByZW1vdmUgZW50cmllcyBmcm9tIHJ0Y0RhdGFD
aGFubmVsTG9jYWxNYXAgdGhhdCBoYXZlIHRoZWlyIGRhdGEgY2hhbm5lbHMgaW4gY2xvc2VkIHN0
YXRlLgorICAgIGF1dG8gaGFuZGxlciA9IHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKS50YWtlKGlk
ZW50aWZpZXIuY2hhbm5lbElkZW50aWZpZXIpOworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUNsb3NlZENoYW5uZWwoY29udGV4dCwgV1RGTW92ZShsYWJlbCksIFdURk1v
dmUob3B0aW9ucykpOworCisgICAgYXV0byBjaGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0
ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShvcHRp
b25zKSk7CisgICAgY2hhbm5lbC0+bV9yZWFkeVN0YXRlID0gc3RhdGU7CisgICAgcmV0dXJuIGNo
YW5uZWw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5oCmluZGV4IDMyOTYwZmFlYWExNjI2MjE4ZjBmYTlmZjAxM2I3NDgyNDBjYWU4
NTguLmUxY2EwMTI0ODIzNDdhYzI2MmU4N2RkMWUzYzkzYzRjNjlmNzhkZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw4
ICszMiwxMCBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKICNpbmNsdWRlICJOZXR3b3JrU2VuZFF1ZXVlLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0lk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKIApAQCAtNDcsMTAgKzQ5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJs
b2I7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKK2VudW0gUlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyVHlwZSB7IH07CitzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHsK
KyAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBPYmplY3RJZGVu
dGlmaWVyPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllclR5cGU+IGNoYW5uZWxJZGVudGlmaWVyOwor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisKKyNpZiAhTE9HX0RJU0FCTEVECisg
ICAgU3RyaW5nIGxvZ1N0cmluZygpIGNvbnN0OworI2VuZGlmCit9OworCitzdHJ1Y3QgRGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGV0YWNoZWRSVENE
YXRhQ2hhbm5lbCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
RGV0YWNoZWRSVENEYXRhQ2hhbm5lbChSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JiBvcHRpb25z
LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQorICAgICAgICA6IGlkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICAgICAgLCBsYWJlbChsYWJlbC5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBv
cHRpb25zKG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgc3RhdGUoc3RhdGUpCisg
ICAgeworICAgIH0KKworICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gbGFi
ZWwuc2l6ZUluQnl0ZXMoKTsgfQorCisgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50
aWZpZXI7CisgICAgU3RyaW5nIGxhYmVsOworICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBvcHRpb25z
OworICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUgeyBSVENEYXRhQ2hhbm5lbFN0YXRlOjpD
bG9zZWQgfTsKK307CisKIGNsYXNzIFJUQ0RhdGFDaGFubmVsIGZpbmFsIDogcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUlRD
RGF0YUNoYW5uZWwpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4mJiwgU3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYmKTsKKyAgICBzdGF0
aWMgUmVmPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciwgU3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYmLCBS
VENEYXRhQ2hhbm5lbFN0YXRlKTsKIAogICAgIGJvb2wgb3JkZXJlZCgpIGNvbnN0IHsgcmV0dXJu
ICptX29wdGlvbnMub3JkZXJlZDsgfQogICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhQ
YWNrZXRMaWZlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5tYXhQYWNrZXRMaWZlVGlt
ZTsgfQpAQCAtNTksNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWdvdGlhdGVkKCkgY29u
c3QgeyByZXR1cm4gKm1fb3B0aW9ucy5uZWdvdGlhdGVkOyB9OwogICAgIE9wdGlvbmFsPHVuc2ln
bmVkIHNob3J0PiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5pZDsgfTsKICAgICBSVENQ
cmlvcml0eVR5cGUgcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucHJpb3JpdHk7
IH07CisgICAgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0JiBvcHRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9vcHRpb25zOyB9CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xh
YmVsOyB9CiAgICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qge3JldHVy
biBtX3JlYWR5U3RhdGU7IH0KQEAgLTc2LDYgKzExMywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsb3NlKCk7CiAKKyAgICBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGJvb2wgY2FuRGV0YWNoKCkgY29uc3Q7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IGRldGFjaCgpOwor
CiAgICAgdXNpbmcgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpyZWY7CiAgICAgdXNpbmcg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpkZXJlZjsKIApAQCAtMTA0LDcgKzE0NSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZp
bmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gbV9oYW5k
bGVyOwotCisgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOwogICAg
IC8vIEZJWE1FOiBtX3N0b3BwZWQgaXMgcHJvYmFibHkgcmVkdW5kYW50IHdpdGggbV9yZWFkeVN0
YXRlLgogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKICAgICBSVENEYXRhQ2hhbm5lbFN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNvbm5lY3RpbmcgfTsKQEAg
LTExNiw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBtX29wdGlv
bnM7CiAgICAgc2l6ZV90IG1fYnVmZmVyZWRBbW91bnQgeyAwIH07CiAgICAgc2l6ZV90IG1fYnVm
ZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQgeyAwIH07Ci0KKyAgICBib29sIG1faXNEZXRhY2hhYmxl
IHsgdHJ1ZSB9OwogICAgIE5ldHdvcmtTZW5kUXVldWUgbV9tZXNzYWdlUXVldWU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaWRsCmluZGV4IGQyNzExYjEyY2E0OTViMmFkZDYzODU1MjE5NTQzZGFlMTY3MThlZTEuLmU0
MTk0ZTJhOTc1NTkyZTk3MTcyYmExYjYwYWY5NTY3OWFlNGU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQl9S
VEMsCiAgICAgRW5hYmxlZEF0UnVudGltZT1QZWVyQ29ubmVjdGlvbiwKLSAgICBFeHBvc2VkPVdp
bmRvdworICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogXSBpbnRlcmZhY2UgUlRDRGF0YUNo
YW5uZWwgOiBFdmVudFRhcmdldCB7CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwcmlv
cml0eSBhdHRyaWJ1dGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCmluZGV4IDVhYzQ0OTk2ODI1MGY5OTQ2YjQxODM0ODFjZDIzYTY1NzZi
MzQ4ODcuLjdmNTgyY2EwZGM3ZGFiMWFjYmNiYzkwYTc4NjVkYjgzNjIwZGExMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtNzMs
MTcgKzczLDM3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI6OmNoYW5uZWxFdmVudChEb2N1bWVudCYgZG9jCiAgICAgcmV0dXJuIFJUQ0RhdGFD
aGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwp
KTsKIH0KIAorTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+
JiYgY2hhbm5lbCkKKyAgICA6IG1fY2hhbm5lbChXVEZNb3ZlKGNoYW5uZWwpKQoreworICAgIEFT
U0VSVChtX2NoYW5uZWwpOworICAgIG1fY2hhbm5lbC0+UmVnaXN0ZXJPYnNlcnZlcih0aGlzKTsK
K30KKwogTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjp+TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyKCkKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2hhbm5lbC0+VW5yZWdp
c3Rlck9ic2VydmVyKCk7CisgICAgbV9jaGFubmVsLT5VbnJlZ2lzdGVyT2JzZXJ2ZXIoKTsKIH0K
IAotdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCkKK3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewotICAgIEFT
U0VSVCghbV9jbGllbnQpOwotICAgIG1fY2xpZW50ID0gJmNsaWVudDsKLSAgICBtX2NoYW5uZWwt
PlJlZ2lzdGVyT2JzZXJ2ZXIodGhpcyk7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fY2xpZW50TG9jayk7CisgICAgICAgIEFTU0VSVCghbV9jbGllbnQpOworICAgICAg
ICBtX2NsaWVudCA9ICZjbGllbnQ7CisgICAgICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBjb250
ZXh0SWRlbnRpZmllcjsKKworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVk
TWVzc2FnZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFt0aGlzXShSZWY8U2hh
cmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9LCBbdGhp
c10oU3RyaW5nJiB0ZXh0KSB7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVT
dHJpbmdEYXRhKHRleHQpOworICAgICAgICAgICAgfSwgW3RoaXNdKFJUQ0RhdGFDaGFubmVsU3Rh
dGUgc3RhdGUpIHsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0
ZShzdGF0ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlcmVk
TWVzc2FnZXMuY2xlYXIoKTsKKyAgICB9CiAgICAgY2hlY2tTdGF0ZSgpOwogfQogCkBAIC05OSwx
NyArMTE5LDExIEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6Y2xvc2UoKQogewotICAgIGlmIChtX2NsaWVudCkgewotICAgICAgICBt
X2NoYW5uZWwtPlVucmVnaXN0ZXJPYnNlcnZlcigpOwotICAgICAgICBtX2NsaWVudCA9IG51bGxw
dHI7Ci0gICAgfQogICAgIG1fY2hhbm5lbC0+Q2xvc2UoKTsKIH0KIAogdm9pZCBMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6Ok9uU3RhdGVDaGFuZ2UoKQogewotICAgIGlmICghbV9jbGllbnQp
Ci0gICAgICAgIHJldHVybjsKICAgICBjaGVja1N0YXRlKCk7CiB9CiAKQEAgLTEzMCwxOCArMTQ0
LDMxIEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGVja1N0YXRlKCkKICAg
ICAgICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbFN0YXRlOjpDbG9zZWQ7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVm
KCptX2NsaWVudCksIHN0YXRlXSB7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xp
ZW50TG9jayk7CisgICAgaWYgKCFtX2NsaWVudCkgeworICAgICAgICBtX2J1ZmZlcmVkTWVzc2Fn
ZXMuYXBwZW5kKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwb3N0VGFzayhb
cHJvdGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBzdGF0ZV0gewogICAgICAgICBw
cm90ZWN0ZWRDbGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOwogICAgIH0pOwogfQog
CiB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdlYnJ0
Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmICghbV9jbGllbnQpCisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2NsaWVudExvY2spOworICAgIGlmICghbV9jbGllbnQpIHsKKyAg
ICAgICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1
ZmZlci5kYXRhLmRhdGE8Y2hhcj4oKSk7CisgICAgICAgIGlmIChidWZmZXIuYmluYXJ5KQorICAg
ICAgICAgICAgbV9idWZmZXJlZE1lc3NhZ2VzLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBidWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWRNZXNzYWdlcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChkYXRhLCBidWZmZXIuc2l6ZSgpKSk7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpE
YXRhQnVmZmVyPiBwcm90ZWN0ZWRCdWZmZXIobmV3IHdlYnJ0Yzo6RGF0YUJ1ZmZlcihidWZmZXIp
KTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2Ns
aWVudCksIGJ1ZmZlciA9IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0geworICAgIHBvc3RUYXNr
KFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9IFdURk1vdmUo
cHJvdGVjdGVkQnVmZmVyKV0gewogICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7CiAgICAgICAg
IGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3RlY3RlZENsaWVudC0+ZGlkUmVj
ZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwpAQCAtMTUyLDE0ICsxNzksMjQgQEAg
dm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6
OkRhdGFCdWZmZXImIGJ1ZmZlcikKIAogdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uQnVmZmVyZWRBbW91bnRDaGFuZ2UodWludDY0X3QgYW1vdW50KQogeworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9jbGllbnRMb2NrKTsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtl
UmVmKCptX2NsaWVudCksIGFtb3VudF0geworICAgIHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQg
PSBtYWtlUmVmKCptX2NsaWVudCksIGFtb3VudF0gewogICAgICAgICBwcm90ZWN0ZWRDbGllbnQt
PmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHN0YXRpY19jYXN0PHNpemVfdD4oYW1vdW50KSk7
CiAgICAgfSk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUKG1fY2xpZW50TG9j
ay5pc0hlbGQoKSk7CisKKyAgICBpZiAoIW1fY29udGV4dElkZW50aWZpZXIpCisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZShmdW5jdGlvbikpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnBvc3RUYXNrVG8obV9jb250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbikp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRl
eCBhZWEyNjk0ZGU2OGVlODViNTlhMTk5ZWVkNmE3M2RlMzY3NGNkNWYyLi41NTk3YWJmNGU3ZGEy
NjEwNWEwYzUxZGM2N2U5MGVjMTYxYzA2MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAi
TGliV2ViUlRDTWFjcm9zLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCisj
aW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxTdGF0ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lO
CiAKQEAgLTUwLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXIsIHByaXZhdGUgd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBMaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRl
cmZhY2U+JiYgY2hhbm5lbCkgOiBtX2NoYW5uZWwoV1RGTW92ZShjaGFubmVsKSkgeyBBU1NFUlQo
bV9jaGFubmVsKTsgfQorICAgIGV4cGxpY2l0IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcihy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJik7CiAgICAg
fkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigpOwogCiAgICAgc3RhdGljIHdlYnJ0Yzo6RGF0
YUNoYW5uZWxJbml0IGZyb21SVENEYXRhQ2hhbm5lbEluaXQoY29uc3QgUlRDRGF0YUNoYW5uZWxJ
bml0Jik7CkBAIC01OCw4ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBSVENE
YXRhQ2hhbm5lbEhhbmRsZXIgQVBJCi0gICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCBjaGVja1N0YXRlKCk7CisgICAgdm9pZCBz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0
cmluZyYpIGZpbmFsOwogICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwpAQCAtNjksOCArNzEsMjEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIE9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAgICB2
b2lkIE9uQnVmZmVyZWRBbW91bnRDaGFuZ2UodWludDY0X3QpOwogCisgICAgdm9pZCBjaGVja1N0
YXRlKCk7CisKKyAgICB1c2luZyBNZXNzYWdlID0gVmFyaWFudDxSVENEYXRhQ2hhbm5lbFN0YXRl
LCBTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBQZW5kaW5nTWVzc2FnZXMg
PSBWZWN0b3I8TWVzc2FnZT47CisgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3NhZ2Vz
JiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CisgICAgdm9pZCBwcm9jZXNzTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKKyAgICB2b2lkIHByb2Nlc3NTdG9yZWRNZXNzYWdl
KE1lc3NhZ2UmKTsKKworICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKKwog
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBtX2No
YW5uZWw7CisgICAgTG9jayBtX2NsaWVudExvY2s7CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOworICAgIFBlbmRpbmdNZXNzYWdlcyBtX2J1
ZmZlcmVkTWVzc2FnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRl
eCA3NGEwOTllMjdjOTJiYTdmNWQwZDgwNzIxMDZkOGU0OGFlNTFlNDMxLi45MzAyZjRjNmQyMjQ2
N2E1YWFhY2NhMTJjMTI1M2JkZDM2M2M4OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAK
ICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNp
bmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgiCisjaW5jbHVkZSAiSlNSVENEYXRhQ2hhbm5lbC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTg1LDYgKzE4Niw5IEBAIGVu
dW0gU2VyaWFsaXphdGlvblRhZyB7CiAgICAgQmlnSW50T2JqZWN0VGFnID0gNDgsCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21NZW1vcnlUYWcgPSA0OSwKKyNlbmRpZgorI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJUYWcgPSA1MCwKICNlbmRp
ZgogICAgIEVycm9yVGFnID0gMjU1CiB9OwpAQCAtMzc1LDYgKzM3OSw3IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IElt
YWdlQml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+
IDxsb2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxl
bmd0aDp1aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCiAgKiAgICB8IE9mZnNjcmVl
bkNhbnZhc1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgV2FzbU1lbW9yeVRh
ZyA8dmFsdWU6dWludDMyX3Q+CisgKiAgICB8IFJUQ0RhdGFDaGFubmVsVHJhbnNmZXJUYWcgPHBy
b2Nlc3NJZGVudGlmaWVyOnVpbnQ2NF90PjxydGNEYXRhQ2hhbm5lbElkZW50aWZpZXI6dWludDY0
X3Q+PGxhYmVsOlN0cmluZz4KICAqCiAgKiBJbnNpZGUgY2VydGlmaWNhdGUsIGRhdGEgaXMgc2Vy
aWFsaXplZCBpbiB0aGlzIGZvcm1hdCBhcyBwZXIgc3BlYzoKICAqCkBAIC01ODQsNiArNTg5LDkg
QEAgcHVibGljOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiYgb2Zmc2NyZWVuQ2FudmFzZXMsCiAj
ZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8
UlRDRGF0YUNoYW5uZWw+PiYgcnRjRGF0YUNoYW5uZWxzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICAg
ICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCkBAIC01
OTQsNiArNjAyLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAg
ICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykK
KyAgICAgICAgICAgIHJ0Y0RhdGFDaGFubmVscywKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAgICAgICAgIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgd2FzbU1lbW9yeUhh
bmRsZXMsCkBAIC02MjUsNiArNjM2LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBUykKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFz
Pj4mIG9mZnNjcmVlbkNhbnZhc2VzLAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4mIHJ0Y0RhdGFDaGFubmVs
cywKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1
bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkm
IHdhc21NZW1vcnlIYW5kbGVzLApAQCAtNjQ3LDYgKzY2MSw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGZpbGxUcmFuc2Zlck1hcChpbWFnZUJpdG1hcHMsIG1fdHJhbnNmZXJyZWRJbWFnZUJpdG1hcHMp
OwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICBmaWxsVHJhbnNmZXJNYXAo
b2Zmc2NyZWVuQ2FudmFzZXMsIG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlcyk7CisjZW5k
aWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgZmlsbFRyYW5zZmVyTWFwKHJ0Y0RhdGFD
aGFubmVscywgbV90cmFuc2ZlcnJlZFJUQ0RhdGFDaGFubmVscyk7CiAjZW5kaWYKICAgICB9CiAK
QEAgLTY2Myw2ICs2ODAsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KG9iaiwgaSk7CiAgICAgICAgIH0KICAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAg
dm9pZCBmaWxsVHJhbnNmZXJNYXAoY29uc3QgVmVjdG9yPFJlZjxUPj4mIGlucHV0LCBPYmplY3RQ
b29sJiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9sZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dC5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gdG9KUyhtX2xleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5wdXRbaV0uZ2V0KCkpOworICAgICAgICAgICAgSlNDOjpKU09iamVjdCogb2Jq
ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgICAgICAgICBpZiAob2JqICYmICFyZXN1bHQuY29u
dGFpbnMob2JqKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKG9iaiwgaSk7CisgICAgICAg
IH0KKyAgICB9CiAKICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUoSlNWYWx1
ZSBpbik7CiAKQEAgLTEwODUsNiArMTExNSwyMCBAQCBwcml2YXRlOgogICAgIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgdm9pZCBkdW1wUlRDRGF0YUNoYW5uZWwoSlNPYmpl
Y3QqIG9iaiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCisgICAgeworICAgICAgICBh
dXRvIGluZGV4ID0gbV90cmFuc2ZlcnJlZFJUQ0RhdGFDaGFubmVscy5maW5kKG9iaik7CisgICAg
ICAgIGlmIChpbmRleCAhPSBtX3RyYW5zZmVycmVkUlRDRGF0YUNoYW5uZWxzLmVuZCgpKSB7Cisg
ICAgICAgICAgICB3cml0ZShSVENEYXRhQ2hhbm5lbFRyYW5zZmVyVGFnKTsKKyAgICAgICAgICAg
IHdyaXRlKGluZGV4LT52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCBkdW1wSWZUZXJtaW5hbChKU1ZhbHVlIHZhbHVlLCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNDZWxsKCkpIHsKQEAgLTEyNTUsNiArMTI5OSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICAgICAgICAgICAgIHsgfSwKICNlbmRpZgorI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgICAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKICAgICAg
ICAgICAgICAgICAgICAgZHVtbXlNZW1vcnlIYW5kbGVzLApAQCAtMTMzNSw2ICsxMzgyLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZHVtcE9mZnNjcmVlbkNhbnZhcyhvYmosIGNvZGUp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cyh2bSwgSlNS
VENEYXRhQ2hhbm5lbDo6aW5mbygpKSkgeworICAgICAgICAgICAgICAgIGR1bXBSVENEYXRhQ2hh
bm5lbChvYmosIGNvZGUpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE2
ODUsNiArMTczOCw5IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkSW1h
Z2VCaXRtYXBzOwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgIE9iamVjdFBvb2wg
bV90cmFuc2ZlcnJlZE9mZnNjcmVlbkNhbnZhc2VzOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9S
VEMpCisgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkUlRDRGF0YUNoYW5uZWxzOwogI2VuZGlm
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIHVpbnQzMl90
LCBJZGVudGlmaWVyUmVwSGFzaD4gU3RyaW5nQ29uc3RhbnRQb29sOwogICAgIFN0cmluZ0NvbnN0
YW50UG9vbCBtX2NvbnN0YW50UG9vbDsKQEAgLTE5NjksNiArMjAyNSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgVmVjdG9yPE9wdGlv
bmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKKyNlbmRpZgorI2lm
IEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKICNlbmRpZgogICAg
ICAgICAsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0x
OTgzLDYgKzIwNDIsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAg
ICAgICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRDRGF0
YUNoYW5uZWxzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAg
LCB3YXNtTW9kdWxlcwogICAgICAgICAgICAgLCB3YXNtTWVtb3J5SGFuZGxlcwpAQCAtMjAzNyw2
ICsyMDk5LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAg
ICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBk
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzID0geyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JU
QykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5u
ZWw+PiYmIGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzID0geyB9CisjZW5kaWYKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcyA9IG51
bGxwdHIKICAgICAgICAgLCBXYXNtTWVtb3J5SGFuZGxlQXJyYXkqIHdhc21NZW1vcnlIYW5kbGVz
ID0gbnVsbHB0cgpAQCAtMjA1OCw2ICsyMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9k
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cykpCiAgICAgICAgICwgbV9vZmZzY3JlZW5DYW52YXNlcyhtX2RldGFjaGVkT2Zmc2NyZWVuQ2Fu
dmFzZXMuc2l6ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICwgbV9k
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscyhXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSkK
KyAgICAgICAgLCBtX3J0Y0RhdGFDaGFubmVscyhtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzLnNp
emUoKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21N
b2R1bGVzKHdhc21Nb2R1bGVzKQogICAgICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1l
bW9yeUhhbmRsZXMpCkBAIC0yMDcxLDYgKzIxNDAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKKyNlbmRpZgog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21N
b2R1bGVzCiAgICAgICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVtb3J5SGFuZGxl
cwpAQCAtMjA5NSw2ICsyMTY3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9kZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykpCiAgICAg
ICAgICwgbV9vZmZzY3JlZW5DYW52YXNlcyhtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuc2l6
ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICwgbV9kZXRhY2hlZFJU
Q0RhdGFDaGFubmVscyhXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSkKKyAgICAgICAg
LCBtX3J0Y0RhdGFDaGFubmVscyhtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzLnNpemUoKSkKKyNl
bmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdh
c21Nb2R1bGVzKQogICAgICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXMod2FzbU1lbW9yeUhhbmRs
ZXMpCkBAIC0zMDA1LDYgKzMwODEsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBydGNDZXJ0
aWZpY2F0ZSA9IFJUQ0NlcnRpZmljYXRlOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcob3JpZ2luLT5zdHJpbmcoKSksIGV4cGlyZXMsIFdURk1vdmUoZmluZ2VycHJpbnRz
KSwgY2VydGlmaWNhdGUtPnRha2VTdHJpbmcoKSwga2V5ZWRNYXRlcmlhbC0+dGFrZVN0cmluZygp
KTsKICAgICAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQobV9sZXhpY2FsR2xvYmFsT2JqZWN0
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIFdURk1vdmUocnRj
Q2VydGlmaWNhdGUpKTsKICAgICB9CisKKyAgICBKU1ZhbHVlIHJlYWRSVENEYXRhQ2hhbm5lbCgp
CisgICAgeworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAgYm9vbCBpbmRleFN1Y2Nl
c3NmdWxseVJlYWQgPSByZWFkKGluZGV4KTsKKyAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxs
eVJlYWQgfHwgaW5kZXggPj0gbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5zaXplKCkpIHsKKyAg
ICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIW1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSkgeworICAgICAgICAg
ICAgYXV0byBkZXRhY2hlZENoYW5uZWwgPSBXVEZNb3ZlKG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5l
bHMuYXQoaW5kZXgpKTsKKyAgICAgICAgICAgIG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSA9IFJU
Q0RhdGFDaGFubmVsOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGRldGFjaGVkQ2hhbm5lbC0+aWRlbnRpZmllciwgV1RG
TW92ZShkZXRhY2hlZENoYW5uZWwtPmxhYmVsKSwgV1RGTW92ZShkZXRhY2hlZENoYW5uZWwtPm9w
dGlvbnMpLCBkZXRhY2hlZENoYW5uZWwtPnN0YXRlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBnZXRKU1ZhbHVlKG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XS5nZXQoKSk7CisgICAgfQog
I2VuZGlmCiAKICAgICBKU1ZhbHVlIHJlYWRJbWFnZUJpdG1hcCgpCkBAIC0zNDc3LDYgKzM1NzAs
MTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgY2Fz
ZSBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZzoKICAgICAgICAgICAgIHJldHVybiByZWFkT2Zm
c2NyZWVuQ2FudmFzKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgY2Fz
ZSBSVENEYXRhQ2hhbm5lbFRyYW5zZmVyVGFnOgorICAgICAgICAgICAgcmV0dXJuIHJlYWRSVENE
YXRhQ2hhbm5lbCgpOwogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtX3B0
ci0tOyAvLyBQdXNoIHRoZSB0YWcgYmFjawpAQCAtMzUxMiw2ICszNjA5LDEwIEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+IG1f
ZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlczsKICAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNh
bnZhcz4+IG1fb2Zmc2NyZWVuQ2FudmFzZXM7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiBtX2Rl
dGFjaGVkUlRDRGF0YUNoYW5uZWxzOworICAgIFZlY3RvcjxSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
PiBtX3J0Y0RhdGFDaGFubmVsczsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBXYXNtTW9kdWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CiAgICAgV2FzbU1lbW9yeUhhbmRsZUFy
cmF5KiBtX3dhc21NZW1vcnlIYW5kbGVzOwpAQCAtMzczNSw2ICszODM2LDkgQEAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVm
ZmVyLCBjb25zdCBWZWMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAg
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmIGRldGFj
aGVkUlRDRGF0YUNoYW5uZWxzCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gd2FzbU1vZHVsZXNBcnJheQog
ICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+IHdhc21NZW1v
cnlIYW5kbGVzQXJyYXkKQEAgLTM3NDcsNiArMzg1MSw5IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3Qg
VmVjCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgLCBtX2RldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMoV1RGTW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgICwgbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscyhXVEZN
b3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJyYXkp
KQogICAgICwgbV93YXNtTWVtb3J5SGFuZGxlc0FycmF5KFdURk1vdmUod2FzbU1lbW9yeUhhbmRs
ZXNBcnJheSkpCkBAIC0zNzg1LDYgKzM4OTIsMTIgQEAgc2l6ZV90IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdAogICAgICAgICAgICAgY29zdCArPSBjYW52
YXMtPm1lbW9yeUNvc3QoKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAg
ICBmb3IgKGF1dG8mIGNoYW5uZWwgOiBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSB7CisgICAg
ICAgIGlmIChjaGFubmVsKQorICAgICAgICAgICAgY29zdCArPSBjaGFubmVsLT5tZW1vcnlDb3N0
KCk7CisgICAgfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gV2Ug
YXJlIG5vdCBzdXBwb3J0aW5nIFdlYkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5
ZXQuCkBAIC0zODc4LDYgKzM5OTEsOSBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aQogICAgIFZl
Y3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKICNpZiBFTkFCTEUo
T0ZGU0NSRUVOX0NBTlZBUykKICAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1
bW15T2Zmc2NyZWVuQ2FudmFzZXM7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBW
ZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4gZHVtbXlSVENEYXRhQ2hhbm5lbHM7CiAjZW5kaWYK
ICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0zODg5LDYgKzQwMDUsOSBAQCBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCYgbGV4aQogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICBkdW1t
eU9mZnNjcmVlbkNhbnZhc2VzLAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAg
IGR1bW15UlRDRGF0YUNoYW5uZWxzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICBkdW1teU1vZHVsZXMsCiAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKQEAgLTM5
MzQsNiArNDA1MywyMSBAQCBzdGF0aWMgYm9vbCBjYW5PZmZzY3JlZW5DYW52YXNlc0RldGFjaChj
b25zdCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZgogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKK3N0YXRpYyBib29sIGNhbkRldGFjaFJUQ0RhdGFDaGFubmVscyhj
b25zdCBWZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4mIGNoYW5uZWxzKQoreworICAgIEhhc2hT
ZXQ8UlRDRGF0YUNoYW5uZWwqPiB2aXNpdGVkOworICAgIGZvciAoYXV0byYgY2hhbm5lbCA6IGNo
YW5uZWxzKSB7CisgICAgICAgIGlmICghY2hhbm5lbC0+Y2FuRGV0YWNoKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYWRk
LCB3ZSBzaG91bGQgbm90IGVuY291bnRlciBkdXBsaWNhdGVzLgorICAgICAgICBpZiAoIXZpc2l0
ZWQuYWRkKGNoYW5uZWwucHRyKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQogewogICAg
IFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKQEAgLTM5NDEsNiArNDA3NSw5IEBA
IEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+
IGltYWdlQml0bWFwczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBWZWN0b3I8
UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IG9mZnNjcmVlbkNhbnZhc2VzOworI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9SVEMpCisgICAgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+IGRhdGFDaGFu
bmVsczsKICNlbmRpZgogICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0
KSB7CiAgICAgICAgIGlmIChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5
QnVmZmVyKHZtLCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CkBAIC0zOTc1LDYgKzQxMTIsMTMgQEAg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKyAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9IEpTUlRDRGF0YUNoYW5uZWw6OnRv
V3JhcHBlZCh2bSwgdHJhbnNmZXJhYmxlLmdldCgpKSkgeworICAgICAgICAgICAgZGF0YUNoYW5u
ZWxzLmFwcGVuZCgqY2hhbm5lbCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
I2VuZGlmCisKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAg
ICAgfQogCkBAIC0zOTg0LDYgKzQxMjgsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAg
ICBpZiAoIWNhbk9mZnNjcmVlbkNhbnZhc2VzRGV0YWNoKG9mZnNjcmVlbkNhbnZhc2VzKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKyAgICBpZiAoIWNhbkRldGFjaFJUQ0RhdGFDaGFubmVscyhkYXRh
Q2hhbm5lbHMpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsK
KyNlbmRpZgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBWZWN0b3I8U3RyaW5n
PiBibG9iVVJMczsKQEAgLTM5OTYsNiArNDE0NCw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9i
CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2Vz
LAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgIGRhdGFDaGFubmVscywKKyNl
bmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgd2FzbU1vZHVsZXMsCiAgICAg
ICAgIHdhc21NZW1vcnlIYW5kbGVzLApAQCAtNDAxNiwxMSArNDE2NywxOSBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYgogICAgIGZvciAoYXV0byBvZmZzY3JlZW5DYW52YXMgOiBvZmZzY3JlZW5D
YW52YXNlcykKICAgICAgICAgZGV0YWNoZWRDYW52YXNlcy5hcHBlbmQob2Zmc2NyZWVuQ2FudmFz
LT5kZXRhY2goKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiBkZXRhY2hlZFJUQ0RhdGFDaGFu
bmVsczsKKyAgICBmb3IgKGF1dG8mIGNoYW5uZWwgOiBkYXRhQ2hhbm5lbHMpCisgICAgICAgIGRl
dGFjaGVkUlRDRGF0YUNoYW5uZWxzLmFwcGVuZChjaGFubmVsLT5kZXRhY2goKSk7CisjZW5kaWYK
IAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3Zl
KGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVy
blZhbHVlKCksIGNvbnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNz
YWdlID8gV1RGTW92ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdURk1vdmUoYmFja2luZ1N0
b3JlcykKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgICAgICAgICAsIFdU
Rk1vdmUoZGV0YWNoZWRDYW52YXNlcykKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAg
ICAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZFJUQ0RhdGFDaGFubmVscykKKyNlbmRpZgog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2Fz
bU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKICAgICAgICAgICAgICAgICAsIGNvbnRleHQgPT0g
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlID8gbWFrZVVuaXF1ZTxXYXNt
TWVtb3J5SGFuZGxlQXJyYXk+KHdhc21NZW1vcnlIYW5kbGVzKSA6IG51bGxwdHIKQEAgLTQwNzcs
NiArNDIzNiw5IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICBEZXNlcmlhbGl6YXRpb25S
ZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgV1RGTW92ZShtX2JhY2tpbmdT
dG9yZXMpCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICwgV1RGTW92ZSht
X2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykK
KyAgICAgICAgLCBXVEZNb3ZlKG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAjZW5kaWYKICAg
ICAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJM
cywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LmdldCgpCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAwY2RiNDAxOGM4NDdmYTAwZmVkN2Y1ZmIwZmNi
Y2EzNTM5ODM1MjUxLi41NGM4ZTgwZjRlMGIwMTQwZjYxNDJmOTQxMjJjMTU2MDg1YmRhYjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtNTAsNiArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCiBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfUlRDKQorc3RydWN0IERldGFjaGVkUlRDRGF0YUNoYW5uZWw7CisjZW5k
aWYKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1h
cEJhY2tpbmc7CkBAIC0xMjIsNiArMTI1LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zm
c2NyZWVuQ2FudmFzPj4mJiA9IHsgfQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAg
ICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiA9
IHsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIHN0ZDo6dW5p
cXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+ID0gbnVsbHB0cgogICAgICAgICAsIHN0ZDo6dW5pcXVl
X3B0cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+ID0gbnVsbHB0cgpAQCAtMTM3LDYgKzE0Myw5IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+IG1fZGV0YWNoZWRPZmZzY3JlZW5D
YW52YXNlczsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5l
bHM7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdhc21Nb2R1bGVBcnJheT4gbV93YXNtTW9kdWxlc0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXYXNtTWVtb3J5SGFuZGxlQXJyYXk+IG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKaW5kZXggYjUxODc2NTVjMDYyMDk1YWFmZTZiNDYzODZkOGEwMzBlY2Qx
ZjVkOC4uMWMwMzQ3ZGY2MGE5ZTI2ODQ5YmE0ZDg2YjBkODZlMDQyZDNhNzg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAog
I2luY2x1ZGUgIlJUQ1ByaW9yaXR5VHlwZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtNDEsMTUgKzQyLDI0IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5lbElu
aXQgewogICAgIE9wdGlvbmFsPGJvb2w+IG5lZ290aWF0ZWQ7CiAgICAgT3B0aW9uYWw8dW5zaWdu
ZWQgc2hvcnQ+IGlkOwogICAgIFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5
VHlwZTo6TG93IH07CisKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CiB9OwogCitpbmxpbmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSAqdGhpczsKKyAgICBjb3B5
LnByb3RvY29sID0gcHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9
CisKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDsKIAogY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXggZTgwNmE2MTU5Mjk3YzkzYjg5NmMyZjhkZmYx
ZDk3NTUwY2Q4YmNhMi4uZDAzMDA1MzZlZDkzMGZiZjljMjAyYmI5NzI2MTBkNGM1Zjg5YThjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2s6OlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QKIHsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZXRDbGllbnQo
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQpCit2b2lkIFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2s6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVu
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Ns
aWVudCk7CiAgICAgbV9jbGllbnQgPSAmY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCBmM2Nm
YTY4MDQ4NmY3NDhhNWY0Yzg0OTg4YjhkZjgyZGY3ZjEwMmNjLi40YTUxMDkyYmM0MWYyY2Y5Zjdm
M2QwNGYyNzdhNzVjMjk0ZTFjYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBj
b25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldENsaWVu
dChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHNldENsaWVu
dChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcikgZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
KSBmaW5hbDsKICAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGEzNGYwMTI0N2ZjOGM3NWEyZTg3OGFiZDcwYTJmMGUyZmRiNDQ4OTIuLjExZjNj
ZWNmOTA0NWU1ZjdkYjYzMDc3ZWZjNGE4YjFjN2M4ZGZiZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wMy0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBSVENEYXRhQ2hhbm5lbCB0cmFuc2ZlcmFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVs
LXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9k
YXRhY2hhbm5lbC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2VicnRj
L2RhdGFjaGFubmVsLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgIChvbm1lc3NhZ2UpOgorCiAy
MDIxLTAzLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUg
c3BlYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVs
LXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvZGF0YWNo
YW5uZWwtd29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmE1YWRjZmRiNzkxNjFiNzdj
YzQ1YzVmOWMwODBmOTNkM2MzN2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
IEBACisKK1BBU1Mgb2ZmZXJlciBkYXRhIGNoYW5uZWwgaW4gd29ya2VycworUEFTUyBhbnN3ZXJl
ciBkYXRhIGNoYW5uZWwgaW4gd29ya2VycworUEFTUyBkYXRhIGNoYW5uZWwgY2xvc2UgZXZlbnQg
aW4gd29ya2VyCitQQVNTIEZhaWxpbmcgdG8gdHJhbnNmZXIgYSBkYXRhIGNoYW5uZWwKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUxNmMwOGZhZDY5ZGEyY2QzNDMwZWE3ZmM1ZWE2NjFlNGY0MDE2ZTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvZGF0YWNoYW5uZWwt
d29ya2VyLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZhciBsb2NhbENoYW5uZWw7Cit2YXIgcmVtb3Rl
Q2hhbm5lbDsKKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQor
eworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YWNoYW5uZWwtd29ya2VyLmpzJyk7CisgICAgbGV0
IGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0YSwg
InJlZ2lzdGVyZWQiKTsKKworICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgbG9jYWxDaGFubmVsID0gZmlyc3RDb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFu
bmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7
Y2hhbm5lbDogbG9jYWxDaGFubmVsfSwgW2xvY2FsQ2hhbm5lbF0pOworCisgICAgICAgIH0sIChz
ZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9uZGF0
YWNoYW5uZWwgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZW1vdGVDaGFubmVsID0g
ZXZlbnQuY2hhbm5lbDsKKyAgICAgICAgICAgICAgICByZW1vdGVDaGFubmVsLm9ub3BlbiA9IHJl
c29sdmU7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgo
KSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDI1MDAwKTsKKyAgICB9KTsKKworICAgIGRh
dGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHJlbW90ZUNoYW5uZWwuc2VuZCgiT0siKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJPSyIpOworCisgICAgZGF0YSA9IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gcmVtb3RlQ2hhbm5lbC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29s
dmUoZXZlbnQuZGF0YSkpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7bWVzc2FnZTogIk9LMiJ9
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJPSzIiKTsKK30sICJvZmZlcmVyIGRh
dGEgY2hhbm5lbCBpbiB3b3JrZXJzIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ2RhdGFjaGFubmVsLXdvcmtlci5qcycpOworICAg
IGxldCBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2
ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRh
dGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBh
d2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNv
bm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGxvY2FsQ2hhbm5l
bCA9IGZpcnN0Q29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7
CisgICAgICAgICAgICBsb2NhbENoYW5uZWwub25vcGVuID0gcmVzb2x2ZTsKKyAgICAgICAgfSwg
KHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub25k
YXRhY2hhbm5lbCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlbW90ZUNoYW5uZWwg
PSBldmVudC5jaGFubmVsOworICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7Y2hh
bm5lbDogcmVtb3RlQ2hhbm5lbH0sIFtyZW1vdGVDaGFubmVsXSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQg
b3V0IiksIDI1MDAwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJv
cGVuZWQiKTsKKworICAgIGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1l
c3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGxvY2FsQ2hhbm5l
bC5zZW5kKCJPSyIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0YSwgIk9LIik7CisKKyAg
ICBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBsb2NhbENoYW5uZWwub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2Uo
e21lc3NhZ2U6ICJPSzIifSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBkYXRhLCAiT0syIik7
Cit9LCAiYW5zd2VyZXIgZGF0YSBjaGFubmVsIGluIHdvcmtlcnMiKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YWNoYW5uZWwt
d29ya2VyLmpzJyk7CisgICAgbGV0IGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtl
ci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgZGF0YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGRhdGEgPSBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZl
bnQuZGF0YSkpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAg
ICAgICAgbG9jYWxDaGFubmVsID0gZmlyc3RDb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCdz
ZW5kRGF0YUNoYW5uZWwnKTsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7Y2hhbm5l
bDogbG9jYWxDaGFubmVsfSwgW2xvY2FsQ2hhbm5lbF0pOworCisgICAgICAgIH0sIChzZWNvbmRD
b25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9uZGF0YWNoYW5u
ZWwgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZW1vdGVDaGFubmVsID0gZXZlbnQu
Y2hhbm5lbDsKKyAgICAgICAgICAgICAgICByZW1vdGVDaGFubmVsLm9ub3BlbiA9IHJlc29sdmU7
CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiBy
ZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDI1MDAwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IGRhdGEsICJvcGVuZWQiKTsKKworICAgIGRhdGEgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkp
OworICAgIHJlbW90ZUNoYW5uZWwuY2xvc2UoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRh
dGEsICJjbG9zZWQiKTsKKworfSwgImRhdGEgY2hhbm5lbCBjbG9zZSBldmVudCBpbiB3b3JrZXIi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdv
cmtlcignZGF0YWNoYW5uZWwtd29ya2VyLmpzJyk7CisgICAgbGV0IGRhdGEgPSBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0YSwgInJlZ2lzdGVyZWQiKTsKKwor
ICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3Jl
YXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgbG9jYWxD
aGFubmVsID0gZmlyc3RDb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5u
ZWwnKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNl
Y29uZENvbm5lY3Rpb24ub25kYXRhY2hhbm5lbCA9IChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIHJlbW90ZUNoYW5uZWwgPSBldmVudC5jaGFubmVsOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVtb3RlQ2hhbm5lbC5zZW5kKCJhIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2NoYW5uZWw6IHJlbW90ZUNoYW5uZWx9LCBbcmVtb3RlQ2hh
bm5lbF0pOworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJwb3N0TWVzc2FnZSBvayIp
OworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0s
IDApOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKK30sICJGYWlsaW5n
IHRvIHRyYW5zZmVyIGEgZGF0YSBjaGFubmVsIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9k
YXRhY2hhbm5lbC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvZGF0YWNo
YW5uZWwtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZDcxZjY4ZjAyMmYyYzc5ZDMxMjBjMDdlNGRh
OGE3NjU3OWJjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvZGF0YWNoYW5uZWwtd29ya2VyLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2xldCBjaGFubmVsOwor
b25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEuY2hhbm5lbCkgewor
ICAgICAgICBjaGFubmVsID0gZXZlbnQuZGF0YS5jaGFubmVsOworICAgICAgICBjaGFubmVsLm9u
b3BlbiA9ICgpID0+IHNlbGYucG9zdE1lc3NhZ2UoIm9wZW5lZCIpOworICAgICAgICBjaGFubmVs
Lm9uZXJyb3IgPSAoKSA9PiBzZWxmLnBvc3RNZXNzYWdlKCJlcnJvcmVkIik7CisgICAgICAgIGNo
YW5uZWwub25jbG9zZSA9ICgpID0+IHNlbGYucG9zdE1lc3NhZ2UoImNsb3NlZCIpOworICAgICAg
ICBjaGFubmVsLm9ubWVzc2FnZSA9IGV2ZW50ID0+IHNlbGYucG9zdE1lc3NhZ2UoZXZlbnQuZGF0
YSk7CisgICAgfQorICAgIGlmIChldmVudC5kYXRhLm1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKGNo
YW5uZWwpCisgICAgICAgICAgICBjaGFubmVsLnNlbmQoZXZlbnQuZGF0YS5tZXNzYWdlKTsKKyAg
ICB9CisgICAgaWYgKGV2ZW50LmRhdGEuY2xvc2UpIHsKKyAgICAgICAgaWYgKGNoYW5uZWwpCisg
ICAgICAgICAgICBjaGFubmVsLmNsb3NlKCk7CisgICAgfQorfTsKK3NlbGYucG9zdE1lc3NhZ2Uo
InJlZ2lzdGVyZWQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423025</attachid>
            <date>2021-03-12 02:16:59 -0800</date>
            <delta_ts>2021-03-12 05:19:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222965-20210312111657.patch</filename>
            <type>text/plain</type>
            <size>49177</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZiNDYyNTI4N2RjZGRh
YjlmNjFiNjc4ODJiYjlkNjA0ZDMwMjgxMi4uNGUxYzExOGNiMTRhZjdmNjAxNzM0MGFkYjkyNjE5
OTY4ODNhMWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTAzLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFJUQ0RhdGFDaGFu
bmVsIHRyYW5zZmVyYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIFRvIHRyYW5zZmVyIGEgUlRDRGF0YUNoYW5uZWwgdG8gd29ya2Vycywgd2UgbmVlZCB0
byBjcmVhdGUgYSBuZXcgUlRDRGF0YUNoYW5uZWwgdXNpbmcgdGhlIHNhbWUgZGF0YSBjaGFubmVs
IGJhY2tlbmQsIHdoaWNoIGlzIGNyb3NzLXRocmVhZCBjb21wYXRpYmxlLgorICAgICAgICBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkbyBub3QgbWlzcyBmb3J3YXJkaW5nIGFueSBldmVudC4gQW5k
IGFsc28gaXQgaXMgYSBidXJkZW4gdG8gdHJhbnNmZXIgYSBkYXRhIGNoYW5uZWwgdGhhdCBpcyBz
ZW5kaW5nIGRhdGEgKHNheSBibG9icyBmb3IgaW5zdGFuY2UpLgorICAgICAgICBGb3IgdGhhdCBy
ZWFzb24sIHdlIGN1cnJlbnRseSBvbmx5IGFsbG93IHRyYW5zZmVycmluZyBkYXRhIGNoYW5uZWxz
IGluIHRoZSBldmVudCBsb29wIHRhc2sgdGhhdCBjcmVhdGVkIHRoZSBkYXRhIGNoYW5uZWwuCisK
KyAgICAgICAgV2UgYWRkIHRoZSBpbmZyYXN0cnVjdHVyZSB0byB0cmFuc2ZlciBSVENEYXRhQ2hh
bm5lbCBpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBz
ZXJpYWxpemluZyBhbiBpbmRleCB0byB0aGUgdHJhbnNmZXJlZCBkYXRhIGNoYW5uZWwuIFRoZSB0
cmFuc2ZlcmVkIGRhdGEgY2hhbm5lbCBjb250YWlucyBzdGF0ZSBpbmZvcm1hdGlvbiBhbmQgYW4g
aWRlbnRpZmllciB3aGljaCBhbGxvd3MgdG8ga25vdworICAgICAgICBpbiB3aGljaCBwcm9jZXNz
IGlzIHRoZSBkYXRhIGNoYW5uZWwgdG8gdHJhbnNmZXIgYW5kIGFuIGlkZW50aWZpZXIgdG8gcmV0
cmlldmUgaXQgZnJvbSBhIGdsb2JhbCBtYXAuCisKKyAgICAgICAgV2UgYWxzbyBuZWVkIHRvIHVw
ZGF0ZSB0aGUgY29kZSBzbyB0aGF0IGRhdGEgY2hhbm5lbCBiYWNrZW5kcyBjYW4gY2hhbmdlIG9m
IGNsaWVudC4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgZGVsYXkgc2V0dGluZyB0aGUg
Y2xpZW50IHRvIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHRyYW5zZmVyYWJsZS4KKyAgICAgICAg
QXQgdGhhdCB0aW1lLCB3ZSByZWdpc3RlciB0aGUgZGF0YSBjaGFubmVsIGFzIGNsaWVudCB0byBp
dHMgYmFja2VkLgorICAgICAgICBJbiB0aGUgbWVhbnRpbWUsIHRoZSBkYXRhIGNoYW5uZWwgYmFj
a2VuZCB3aWxsIHN0b3JlIGFsbCBtZXNzYWdlcyByZWNlaXZlZCBzbyBmYXIuCisgICAgICAgIE9u
Y2UgY2xpZW50IGlzIHNldCwgdGhlIGRhdGEgY2hhbm5lbCBiYWNrZW5kIHdpbGwgZGVsaXZlciBh
bGwgbWVzc2FnZXMgYW5kIHN0YXRlIGNoYW5nZXMgdG8gdGhlIGRhdGEgY2hhbm5lbC4KKworICAg
ICAgICBTaW5jZSBjbGllbnQgbWlnaHQgd2FudCB0byBnZXQgbWVzc2FnZXMgaW4gYSB3b3JrZXIg
dGhyZWFkLCB0aGUgY2xpZW50IG5vdyBhbHNvIHJlZ2lzdGVycyBpdHMgY29udGV4dCBpZGVudGlm
aWVyLAorICAgICAgICB3aGljaCBpcyB1c2VkIHRvIHBvc3QgYSB0YXNrIHRvIHRoZSByaWdodCB0
aHJlYWQuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtl
ci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNv
cmU6Om1fY29udGV4dElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OnJ0Y0RhdGFDaGFubmVsTG9jYWxNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNhbkRldGFjaCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUNsb3NlZENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFjaGVkUlRDRGF0YUNoYW5uZWw6
OkRldGFjaGVkUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRSVENE
YXRhQ2hhbm5lbDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6fkxp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6T25TdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoZWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6cG9zdFRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmZpbGxUcmFuc2Zlck1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBSVENEYXRhQ2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6Q2xvbmVEZXNlcmlhbGl6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSVENEYXRhQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y2FuRGV0YWNoUlRDRGF0YUNoYW5uZWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorCiAyMDIxLTAzLTExICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cCByZWZlcmVuY2Vz
IHRvIGZsb2F0IGFuZCBvdXQtb2YtZmxvdyByZW5kZXJlcnMgYmVmb3JlIGRlc3Ryb3lpbmcgdGhl
bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5jcHAKaW5kZXggNzllOGEyNjhjNmI5NmNiZjdjODM1NzQ5M2M2MzEzOTkyMDI5YmQ4
Yi4uMjU0YzIwZmJiODY0NWJjMjU4MmE5MmUzMzU2ZTVkNDFmZWI5MzMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNTksOCArNjAsMTYgQEAgUmVmPFJU
Q0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDoKICAgICBBU1NFUlQoaGFuZGxlcik7CiAgICAgYXV0byBjaGFubmVs
ID0gYWRvcHRSZWYoKm5ldyBSVENEYXRhQ2hhbm5lbChjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIp
LCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShvcHRpb25zKSkpOwogICAgIGNoYW5uZWwtPnN1c3Bl
bmRJZk5lZWRlZCgpOwotICAgIGNoYW5uZWwtPm1faGFuZGxlci0+c2V0Q2xpZW50KGNoYW5uZWwu
Z2V0KCkpOwogICAgIGNoYW5uZWwtPnNldFBlbmRpbmdBY3Rpdml0eShjaGFubmVsLmdldCgpKTsK
KyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoY2hhbm5lbC5nZXQoKSwgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW2NoYW5uZWwgPSBjaGFubmVsLnB0cigpXSB7CisgICAgICAgIGlmICgh
Y2hhbm5lbC0+bV9pc0RldGFjaGFibGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNo
YW5uZWwtPm1faXNEZXRhY2hhYmxlID0gZmFsc2U7CisgICAgICAgIGlmICghY2hhbm5lbC0+bV9o
YW5kbGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9
IGNoYW5uZWwtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgICAgIGNoYW5uZWwt
Pm1faGFuZGxlci0+c2V0Q2xpZW50KCpjaGFubmVsLCBjb250ZXh0LT5jb250ZXh0SWRlbnRpZmll
cigpKTsKKyAgICB9KTsKICAgICByZXR1cm4gY2hhbm5lbDsKIH0KIApAQCAtODQsNiArOTMsOCBA
QCBOZXR3b3JrU2VuZFF1ZXVlIFJUQ0RhdGFDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRh
Q2hhbm5lbEhhbmRsZXI+JiYgaGFuZGxlciwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVs
SW5pdCYmIG9wdGlvbnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBt
X2hhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKKyAgICAsIG1faWRlbnRpZmllcihSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIgeyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElkZW50aWZpZXI8
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyVHlwZT46OmdlbmVyYXRlVGhyZWFkU2FmZSgpIH0pCisg
ICAgLCBtX2NvbnRleHRJZGVudGlmaWVyKGNvbnRleHQuaXNEb2N1bWVudCgpID8gU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgeyB9IDogY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigp
KQogICAgICwgbV9sYWJlbChXVEZNb3ZlKGxhYmVsKSkKICAgICAsIG1fb3B0aW9ucyhXVEZNb3Zl
KG9wdGlvbnMpKQogICAgICwgbV9tZXNzYWdlUXVldWUoY3JlYXRlTWVzc2FnZVF1ZXVlKGNvbnRl
eHQsICp0aGlzKSkKQEAgLTE2OCw3ICsxNzksOCBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpjbG9z
ZSgpCiAKICAgICBtX21lc3NhZ2VRdWV1ZS5jbGVhcigpOwogCi0gICAgbV9oYW5kbGVyLT5jbG9z
ZSgpOworICAgIGlmIChtX2hhbmRsZXIpCisgICAgICAgIG1faGFuZGxlci0+Y2xvc2UoKTsKICAg
ICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsK
IH0KQEAgLTIyNSw2ICsyMzcsOCBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3Vu
dElzRGVjcmVhc2luZyhzaXplX3QgYW1vdW50KQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzdG9w
KCkKIHsKKyAgICByZW1vdmVGcm9tRGF0YUNoYW5uZWxMb2NhbE1hcElmTmVlZGVkKCk7CisKICAg
ICBjbG9zZSgpOwogfQogCkBAIC0yMzcsNiArMjUxLDcyIEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgcXVldWVUYXNr
VG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBXVEZNb3ZlKGV2
ZW50KSk7CiB9CiAKK3N0YXRpYyBMb2NrIHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2s7Citz
dGF0aWMgSGFzaE1hcDxPYmplY3RJZGVudGlmaWVyPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllclR5
cGU+LCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0Y0RhdGFDaGFu
bmVsTG9jYWxNYXAoKQoreworICAgIEFTU0VSVChzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2Nr
LmlzSGVsZCgpKTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8T2JqZWN0
SWRlbnRpZmllcjxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXJUeXBlPiwgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4+PiBtYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgbWFw
LmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBtYXA7Cit9CisKK2Jvb2wgUlRDRGF0
YUNoYW5uZWw6OmNhbkRldGFjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNEZXRhY2hhYmxl
ICYmICFtX2lzRGV0YWNoZWQgJiYgIW1fYnVmZmVyZWRBbW91bnQgJiYgbV9yZWFkeVN0YXRlICE9
IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERldGFj
aGVkUlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpkZXRhY2goKQoreworICAgIEFTU0VS
VChjYW5EZXRhY2goKSk7CisKKyAgICBhdXRvIHN0YXRlID0gbV9yZWFkeVN0YXRlOworCisgICAg
bV9pc0RldGFjaGFibGUgPSBmYWxzZTsKKyAgICBtX2lzRGV0YWNoZWQgPSB0cnVlOworICAgIG1f
cmVhZHlTdGF0ZSA9IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsKKworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7CisgICAgcnRjRGF0
YUNoYW5uZWxMb2NhbE1hcCgpLmFkZChpZGVudGlmaWVyKCkuY2hhbm5lbElkZW50aWZpZXIsIFdU
Rk1vdmUobV9oYW5kbGVyKSk7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZXRhY2hlZFJUQ0Rh
dGFDaGFubmVsPihpZGVudGlmaWVyKCksIGxhYmVsKCkuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMo
KSwgc3RhdGUpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5u
ZWxMb2NhbE1hcElmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1faXNEZXRhY2hlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFubmVsTG9j
YWxNYXBMb2NrKTsKKyAgICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkucmVtb3ZlKGlkZW50aWZp
ZXIoKS5jaGFubmVsSWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+
IGNyZWF0ZUNsb3NlZENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU3Ry
aW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCit7CisgICAgYXV0byBj
aGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBudWxscHRyLCBXVEZNb3Zl
KGxhYmVsKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBy
ZXR1cm4gY2hhbm5lbDsKK30KKworUmVmPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcmJiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYg
b3B0aW9ucywgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAoaWRlbnRpZmll
ci5wcm9jZXNzSWRlbnRpZmllciAhPSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiT3V0LW9mLXByb2Nlc3MgZGF0YSBjaGFubmVscyBh
cmUgbm90IHlldCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUNsb3NlZENoYW5u
ZWwoY29udGV4dCwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykpOworICAgIH0KKwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7
CisgICAgYXV0byBoYW5kbGVyID0gcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpLnRha2UoaWRlbnRp
Zmllci5jaGFubmVsSWRlbnRpZmllcik7CisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICByZXR1
cm4gY3JlYXRlQ2xvc2VkQ2hhbm5lbChjb250ZXh0LCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShv
cHRpb25zKSk7CisKKyAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKGNv
bnRleHQsIFdURk1vdmUoaGFuZGxlciksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKKyAgICBjaGFubmVsLT5tX3JlYWR5U3RhdGUgPSBzdGF0ZTsKKyAgICByZXR1cm4gY2hhbm5l
bDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9S
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsLmgKaW5kZXggMzI5NjBmYWVhYTE2MjYyMThmMGZhOWZmMDEzYjc0ODI0MGNhZTg1OC4u
NTkwYTljYjdlZTRjZjQxYWM5NjM0NDBiZGVjMDkxYjhiODQwYzFiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDggKzMy
LDEwIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTZW5kUXVldWUuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogCkBAIC00NywxMCArNDksNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsK
IGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIAorZW51bSBSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXJUeXBlIHsgfTsKK3N0cnVjdCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgeworICAg
IFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyOworICAgIE9iamVjdElkZW50aWZp
ZXI8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyVHlwZT4gY2hhbm5lbElkZW50aWZpZXI7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBT
dHJpbmcgbG9nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKK307CisKK3N0cnVjdCBEZXRhY2hlZFJU
Q0RhdGFDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRhY2hlZFJUQ0RhdGFD
aGFubmVsKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEZXRh
Y2hlZFJUQ0RhdGFDaGFubmVsKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMsIFJU
Q0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpCisgICAgICAgIDogaWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICAsIGxhYmVsKGxhYmVsLmlzb2xhdGVkQ29weSgpKQorICAgICAgICAsIG9wdGlv
bnMob3B0aW9ucy5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBzdGF0ZShzdGF0ZSkKKyAgICB7
CisgICAgfQorCisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiBsYWJlbC5z
aXplSW5CeXRlcygpOyB9CisKKyAgICBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
cjsKKyAgICBTdHJpbmcgbGFiZWw7CisgICAgUlRDRGF0YUNoYW5uZWxJbml0IG9wdGlvbnM7Cisg
ICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSB7IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3Nl
ZCB9OworfTsKKwogY2xhc3MgUlRDRGF0YUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0LCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSVENEYXRh
Q2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxI
YW5kbGVyPiYmLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0JiYpOworICAgIHN0YXRpYyBS
ZWY8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0JiYsIFJUQ0Rh
dGFDaGFubmVsU3RhdGUpOwogCiAgICAgYm9vbCBvcmRlcmVkKCkgY29uc3QgeyByZXR1cm4gKm1f
b3B0aW9ucy5vcmRlcmVkOyB9CiAgICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFBhY2tl
dExpZmVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLm1heFBhY2tldExpZmVUaW1lOyB9
CkBAIC01OSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZ290aWF0ZWQoKSBjb25zdCB7
IHJldHVybiAqbV9vcHRpb25zLm5lZ290aWF0ZWQ7IH07CiAgICAgT3B0aW9uYWw8dW5zaWduZWQg
c2hvcnQ+IGlkKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmlkOyB9OwogICAgIFJUQ1ByaW9y
aXR5VHlwZSBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5wcmlvcml0eTsgfTsK
KyAgICBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnM7IH0KIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7cmV0dXJuIG1f
cmVhZHlTdGF0ZTsgfQpAQCAtNzYsNiArMTEzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xv
c2UoKTsKIAorICAgIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBjYW5EZXRhY2goKSBjb25zdDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4gZGV0YWNoKCk7CisKICAg
ICB1c2luZyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OnJlZjsKICAgICB1c2luZyBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OmRlcmVmOwogCkBAIC04NSw2ICsxMjYsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBOZXR3b3JrU2VuZFF1ZXVlIGNyZWF0ZU1lc3NhZ2VRdWV1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUlRDRGF0YUNoYW5uZWwmKTsKIAogICAgIHZvaWQgc2NoZWR1
bGVEaXNwYXRjaEV2ZW50KFJlZjxFdmVudD4mJik7CisgICAgdm9pZCByZW1vdmVGcm9tRGF0YUNo
YW5uZWxMb2NhbE1hcElmTmVlZGVkKCk7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfQpAQCAtMTA0LDcgKzE0Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWZm
ZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gbV9oYW5kbGVyOwotCisgICAgUlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOwogICAgIC8vIEZJWE1FOiBtX3N0b3BwZWQgaXMg
cHJvYmFibHkgcmVkdW5kYW50IHdpdGggbV9yZWFkeVN0YXRlLgogICAgIGJvb2wgbV9zdG9wcGVk
IHsgZmFsc2UgfTsKICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIG1fcmVhZHlTdGF0ZSB7IFJUQ0Rh
dGFDaGFubmVsU3RhdGU6OkNvbm5lY3RpbmcgfTsKQEAgLTExNiw3ICsxNTksOCBAQCBwcml2YXRl
OgogICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBtX29wdGlvbnM7CiAgICAgc2l6ZV90IG1fYnVmZmVy
ZWRBbW91bnQgeyAwIH07CiAgICAgc2l6ZV90IG1fYnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQg
eyAwIH07Ci0KKyAgICBib29sIG1faXNEZXRhY2hhYmxlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9p
c0RldGFjaGVkIHsgZmFsc2UgfTsKICAgICBOZXR3b3JrU2VuZFF1ZXVlIG1fbWVzc2FnZVF1ZXVl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbAppbmRleCBkMjcxMWIxMmNhNDk1YjJhZGQ2Mzg1NTIxOTU0M2RhZTE2
NzE4ZWUxLi5lNDE5NGUyYTk3NTU5MmU5NzE3MmJhMWI2MGFmOTU2NzlhZTRlOGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9UGVlckNvbm5lY3Rpb24sCi0gICAg
RXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKIF0gaW50ZXJmYWNl
IFJUQ0RhdGFDaGFubmVsIDogRXZlbnRUYXJnZXQgewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgcHJpb3JpdHkgYXR0cmlidXRlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCA1YWM0NDk5NjgyNTBmOTk0NmI0MTgzNDgx
Y2QyM2E2NTc2YjM0ODg3Li43ZjU4MmNhMGRjN2RhYjFhY2JjYmM5MGE3ODY1ZGI4MzYyMGRhMTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAKQEAgLTczLDE3ICs3MywzNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoRG9jdW1lbnQmIGRvYwogICAgIHJldHVy
biBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgV1RGTW92
ZShjaGFubmVsKSk7CiB9CiAKK0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6TGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVs
SW50ZXJmYWNlPiYmIGNoYW5uZWwpCisgICAgOiBtX2NoYW5uZWwoV1RGTW92ZShjaGFubmVsKSkK
K3sKKyAgICBBU1NFUlQobV9jaGFubmVsKTsKKyAgICBtX2NoYW5uZWwtPlJlZ2lzdGVyT2JzZXJ2
ZXIodGhpcyk7Cit9CisKIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6fkxpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcigpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NoYW5u
ZWwtPlVucmVnaXN0ZXJPYnNlcnZlcigpOworICAgIG1fY2hhbm5lbC0+VW5yZWdpc3Rlck9ic2Vy
dmVyKCk7CiB9CiAKLXZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQo
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQpCit2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xp
ZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikK
IHsKLSAgICBBU1NFUlQoIW1fY2xpZW50KTsKLSAgICBtX2NsaWVudCA9ICZjbGllbnQ7Ci0gICAg
bV9jaGFubmVsLT5SZWdpc3Rlck9ic2VydmVyKHRoaXMpOworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2NsaWVudExvY2spOworICAgICAgICBBU1NFUlQoIW1fY2xpZW50
KTsKKyAgICAgICAgbV9jbGllbnQgPSAmY2xpZW50OworICAgICAgICBtX2NvbnRleHRJZGVudGlm
aWVyID0gY29udGV4dElkZW50aWZpZXI7CisKKyAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbdGhp
c10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgfSwgW3RoaXNdKFN0cmluZyYgdGV4dCkgeworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKKyAgICAgICAgICAgIH0sIFt0aGlzXShSVENEYXRh
Q2hhbm5lbFN0YXRlIHN0YXRlKSB7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZENoYW5n
ZVJlYWR5U3RhdGUoc3RhdGUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAg
bV9idWZmZXJlZE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgfQogICAgIGNoZWNrU3RhdGUoKTsKIH0K
IApAQCAtOTksMTcgKzExOSwxMSBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIAogdm9pZCBMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAobV9jbGllbnQpIHsK
LSAgICAgICAgbV9jaGFubmVsLT5VbnJlZ2lzdGVyT2JzZXJ2ZXIoKTsKLSAgICAgICAgbV9jbGll
bnQgPSBudWxscHRyOwotICAgIH0KICAgICBtX2NoYW5uZWwtPkNsb3NlKCk7CiB9CiAKIHZvaWQg
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPblN0YXRlQ2hhbmdlKCkKIHsKLSAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICByZXR1cm47CiAgICAgY2hlY2tTdGF0ZSgpOwogfQogCkBAIC0x
MzAsMTggKzE0NCwzMSBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hlY2tT
dGF0ZSgpCiAgICAgICAgIHN0YXRlID0gUlRDRGF0YUNoYW5uZWxTdGF0ZTo6Q2xvc2VkOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkQ2xpZW50
ID0gbWFrZVJlZigqbV9jbGllbnQpLCBzdGF0ZV0geworCisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2NsaWVudExvY2spOworICAgIGlmICghbV9jbGllbnQpIHsKKyAgICAgICAgbV9idWZm
ZXJlZE1lc3NhZ2VzLmFwcGVuZChzdGF0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
cG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xpZW50KSwgc3RhdGVdIHsK
ICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKHN0YXRlKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fY2xpZW50KQor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRMb2NrKTsKKyAgICBpZiAoIW1fY2xp
ZW50KSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXIuZGF0YS5kYXRhPGNoYXI+KCkpOworICAgICAgICBpZiAoYnVmZmVyLmJp
bmFyeSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWRNZXNzYWdlcy5hcHBlbmQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgYnVmZmVyLnNpemUoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZGF0YSwgYnVmZmVy
LnNpemUoKSkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZm
ZXIoYnVmZmVyKSk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkQ2xpZW50ID0gbWFr
ZVJlZigqbV9jbGllbnQpLCBidWZmZXIgPSBXVEZNb3ZlKHByb3RlY3RlZEJ1ZmZlcildIHsKKyAg
ICBwb3N0VGFzayhbcHJvdGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBidWZmZXIg
PSBXVEZNb3ZlKHByb3RlY3RlZEJ1ZmZlcildIHsKICAgICAgICAgY29uc3QgY2hhciogZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci0+ZGF0YS5kYXRhPGNoYXI+KCkp
OwogICAgICAgICBpZiAoYnVmZmVyLT5iaW5hcnkpCiAgICAgICAgICAgICBwcm90ZWN0ZWRDbGll
bnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIGJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTE1MiwxNCAr
MTc5LDI0IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2UoY29u
c3Qgd2VicnRjOjpEYXRhQnVmZmVyJiBidWZmZXIpCiAKIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjpPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdlKHVpbnQ2NF90IGFtb3VudCkKIHsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50TG9jayk7CiAgICAgaWYgKCFtX2NsaWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkQ2xp
ZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBhbW91bnRdIHsKKyAgICBwb3N0VGFzayhbcHJvdGVj
dGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBhbW91bnRdIHsKICAgICAgICAgcHJvdGVj
dGVkQ2xpZW50LT5idWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzdGF0aWNfY2FzdDxzaXplX3Q+
KGFtb3VudCkpOwogICAgIH0pOwogfQogCit2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIEFTU0VSVCht
X2NsaWVudExvY2suaXNIZWxkKCkpOworCisgICAgaWYgKCFtX2NvbnRleHRJZGVudGlmaWVyKQor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKG1fY29udGV4dElkZW50aWZpZXIsIFdURk1vdmUo
ZnVuY3Rpb24pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKaW5kZXggYWVhMjY5NGRlNjhlZTg1YjU5YTE5OWVlZDZhNzNkZTM2NzRjZDVmMi4uNTU5
N2FiZjRlN2RhMjYxMDVhMGM1MWRjNjdlOTBlYzE2MWMwNjM5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTI4LDYgKzI4LDkgQEAKIAog
I2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsU3RhdGUuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBBTExPV19VTlVTRURfUEFSQU1F
VEVSU19CRUdJTgogCkBAIC01MCw3ICs1Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLCBwcml2YXRlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxPYnNlcnZlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFD
aGFubmVsSW50ZXJmYWNlPiYmIGNoYW5uZWwpIDogbV9jaGFubmVsKFdURk1vdmUoY2hhbm5lbCkp
IHsgQVNTRVJUKG1fY2hhbm5lbCk7IH0KKyAgICBleHBsaWNpdCBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+
JiYpOwogICAgIH5MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKTsKIAogICAgIHN0YXRpYyB3
ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBmcm9tUlRDRGF0YUNoYW5uZWxJbml0KGNvbnN0IFJUQ0Rh
dGFDaGFubmVsSW5pdCYpOwpAQCAtNTgsOCArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQotICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgY2hlY2tTdGF0ZSgpOwor
ICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRh
KGNvbnN0IENTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKQEAgLTY5LDggKzcxLDIx
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBPbk1lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVy
Jik7CiAgICAgdm9pZCBPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdlKHVpbnQ2NF90KTsKIAorICAgIHZv
aWQgY2hlY2tTdGF0ZSgpOworCisgICAgdXNpbmcgTWVzc2FnZSA9IFZhcmlhbnQ8UlRDRGF0YUNo
YW5uZWxTdGF0ZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUGVuZGlu
Z01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OworICAgIHZvaWQgc3RvcmVNZXNzYWdlKFBlbmRp
bmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOworICAgIHZvaWQgcHJvY2Vz
c01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CisgICAgdm9pZCBwcm9jZXNzU3Rv
cmVkTWVzc2FnZShNZXNzYWdlJik7CisKKyAgICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJik7CisKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVy
ZmFjZT4gbV9jaGFubmVsOworICAgIExvY2sgbV9jbGllbnRMb2NrOwogICAgIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKKyAgICBQZW5kaW5nTWVz
c2FnZXMgbV9idWZmZXJlZE1lc3NhZ2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKaW5kZXggNzRhMDk5ZTI3YzkyYmE3ZjVkMGQ4MDcyMTA2ZDhlNDhhZTUxZTQzMS4uOTMw
MmY0YzZkMjI0NjdhNWFhYWNjYTEyYzEyNTNiZGQzNjNjODhiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdh
dG9yLmgiCiAjaW5jbHVkZSAiSlNSVENDZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgIkpTUlRDRGF0
YUNoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE4NSw2ICsx
ODYsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIEJpZ0ludE9iamVjdFRhZyA9IDQ4
LAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTWVtb3J5VGFnID0gNDksCisjZW5k
aWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBSVENEYXRhQ2hhbm5lbFRyYW5zZmVyVGFnID0g
NTAsCiAjZW5kaWYKICAgICBFcnJvclRhZyA9IDI1NQogfTsKQEAgLTM3NSw2ICszNzksNyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwog
ICogICAgfCBJbWFnZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxvZ2ljYWxXaWR0
aDppbnQzMl90PiA8bG9naWNhbEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNjYWxlOmRvdWJs
ZT4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQogICogICAg
fCBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFdh
c21NZW1vcnlUYWcgPHZhbHVlOnVpbnQzMl90PgorICogICAgfCBSVENEYXRhQ2hhbm5lbFRyYW5z
ZmVyVGFnIDxwcm9jZXNzSWRlbnRpZmllcjp1aW50NjRfdD48cnRjRGF0YUNoYW5uZWxJZGVudGlm
aWVyOnVpbnQ2NF90PjxsYWJlbDpTdHJpbmc+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBk
YXRhIGlzIHNlcmlhbGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNTg0
LDYgKzU4OSw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNh
bnZhc2VzLAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4mIHJ0Y0RhdGFDaGFubmVscywKKyNlbmRpZgogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1v
ZHVsZXMsCiAgICAgICAgICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkmIHdhc21NZW1vcnlIYW5k
bGVzLApAQCAtNTk0LDYgKzYwMiw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NB
TlZBUykKICAgICAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2VzLAogI2VuZGlmCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgICAgICAgICBydGNEYXRhQ2hhbm5lbHMsCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKICAgICAgICAgICAgIHdh
c21NZW1vcnlIYW5kbGVzLApAQCAtNjI1LDYgKzYzNiw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE9mZnNj
cmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgorI2lmIEVOQUJMRShXRUJf
UlRDKQorICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+JiBydGNE
YXRhQ2hhbm5lbHMsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAg
ICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2FzbU1lbW9yeUhh
bmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKQEAgLTY0Nyw2ICs2NjEsOSBAQCBwcml2YXRl
OgogICAgICAgICBmaWxsVHJhbnNmZXJNYXAoaW1hZ2VCaXRtYXBzLCBtX3RyYW5zZmVycmVkSW1h
Z2VCaXRtYXBzKTsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgZmlsbFRy
YW5zZmVyTWFwKG9mZnNjcmVlbkNhbnZhc2VzLCBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
ZXMpOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgIGZpbGxUcmFuc2Zlck1h
cChydGNEYXRhQ2hhbm5lbHMsIG1fdHJhbnNmZXJyZWRSVENEYXRhQ2hhbm5lbHMpOwogI2VuZGlm
CiAgICAgfQogCkBAIC02NjMsNiArNjgwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChvYmosIGkpOwogICAgICAgICB9CiAgICAgfQorICAgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICAgIHZvaWQgZmlsbFRyYW5zZmVyTWFwKGNvbnN0IFZlY3RvcjxSZWY8VD4+JiBpbnB1
dCwgT2JqZWN0UG9vbCYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKGlucHV0LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXQuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHRvSlMobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGlucHV0W2ldLmdldCgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNP
YmplY3QqIG9iaiA9IHZhbHVlLmdldE9iamVjdCgpOworICAgICAgICAgICAgaWYgKG9iaiAmJiAh
cmVzdWx0LmNvbnRhaW5zKG9iaikpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChvYmosIGkp
OworICAgICAgICB9CisgICAgfQogCiAgICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFs
aXplKEpTVmFsdWUgaW4pOwogCkBAIC0xMDg1LDYgKzExMTUsMjAgQEAgcHJpdmF0ZToKICAgICB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHZvaWQgZHVtcFJUQ0RhdGFDaGFu
bmVsKEpTT2JqZWN0KiBvYmosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2RlKQorICAgIHsK
KyAgICAgICAgYXV0byBpbmRleCA9IG1fdHJhbnNmZXJyZWRSVENEYXRhQ2hhbm5lbHMuZmluZChv
YmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZFJUQ0RhdGFDaGFubmVscy5l
bmQoKSkgeworICAgICAgICAgICAgd3JpdGUoUlRDRGF0YUNoYW5uZWxUcmFuc2ZlclRhZyk7Cisg
ICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xv
bmVFcnJvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgZHVtcElmVGVybWluYWwoSlNWYWx1
ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCiAgICAgewogICAgICAgICBp
ZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMjU1LDYgKzEyOTksOSBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAgICAgICAgICAgICB7IH0sCiAjZW5k
aWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgICAgICAgICAgICAgeyB9LAorI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVs
ZXMsCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKQEAgLTEzMzUsNiAr
MTM4MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGR1bXBPZmZzY3JlZW5DYW52YXMo
b2JqLCBjb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
KyNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJp
dHModm0sIEpTUlRDRGF0YUNoYW5uZWw6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBkdW1w
UlRDRGF0YUNoYW5uZWwob2JqLCBjb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CkBAIC0xNjg1LDYgKzE3MzgsOSBAQCBwcml2YXRlOgogICAgIE9iamVjdFBvb2wgbV90cmFu
c2ZlcnJlZEltYWdlQml0bWFwczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBP
YmplY3RQb29sIG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlczsKKyNlbmRpZgorI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZFJUQ0RhdGFDaGFubmVs
czsKICNlbmRpZgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmluZ0NvbnN0YW50UG9vbDsKICAgICBT
dHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBvb2w7CkBAIC0xOTY5LDYgKzIwMjUsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZl
Y3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisj
ZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmIGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzCiAj
ZW5kaWYKICAgICAgICAgLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQpAQCAtMTk4Myw2ICsyMDQyLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQogICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMp
CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscykKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgICAgICwgd2FzbU1vZHVsZXMKICAgICAgICAgICAgICwgd2FzbU1lbW9yeUhhbmRsZXMK
QEAgLTIwMzcsNiArMjA5OSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyA9IHsgfQogI2VuZGlmCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJU
Q0RhdGFDaGFubmVsPj4mJiBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscyA9IHsgfQorI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1v
ZHVsZXMgPSBudWxscHRyCiAgICAgICAgICwgV2FzbU1lbW9yeUhhbmRsZUFycmF5KiB3YXNtTWVt
b3J5SGFuZGxlcyA9IG51bGxwdHIKQEAgLTIwNTgsNiArMjEyMywxMCBAQCBwcml2YXRlOgogICAg
ICAgICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMpKQogICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhc2VzLnNpemUoKSkKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAg
ICAgICAsIG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMoV1RGTW92ZShkZXRhY2hlZFJUQ0RhdGFD
aGFubmVscykpCisgICAgICAgICwgbV9ydGNEYXRhQ2hhbm5lbHMobV9kZXRhY2hlZFJUQ0RhdGFD
aGFubmVscy5zaXplKCkpCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAg
ICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykKICAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5k
bGVzKHdhc21NZW1vcnlIYW5kbGVzKQpAQCAtMjA3MSw2ICsyMTQwLDkgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmIGRldGFjaGVkUlRDRGF0YUNoYW5uZWxz
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFy
cmF5KiB3YXNtTW9kdWxlcwogICAgICAgICAsIFdhc21NZW1vcnlIYW5kbGVBcnJheSogd2FzbU1l
bW9yeUhhbmRsZXMKQEAgLTIwOTUsNiArMjE2NywxMCBAQCBwcml2YXRlOgogICAgICAgICAsIG1f
ZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFz
ZXMpKQogICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNjcmVlbkNh
bnZhc2VzLnNpemUoKSkKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICAsIG1f
ZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMoV1RGTW92ZShkZXRhY2hlZFJUQ0RhdGFDaGFubmVscykp
CisgICAgICAgICwgbV9ydGNEYXRhQ2hhbm5lbHMobV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5z
aXplKCkpCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNt
TW9kdWxlcyh3YXNtTW9kdWxlcykKICAgICAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzKHdhc21N
ZW1vcnlIYW5kbGVzKQpAQCAtMzAwNSw2ICszMDgxLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8gcnRjQ2VydGlmaWNhdGUgPSBSVENDZXJ0aWZpY2F0ZTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi0+c3RyaW5nKCkpLCBleHBpcmVzLCBXVEZNb3ZlKGZp
bmdlcnByaW50cyksIGNlcnRpZmljYXRlLT50YWtlU3RyaW5nKCksIGtleWVkTWF0ZXJpYWwtPnRh
a2VTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKG1fbGV4aWNhbEds
b2JhbE9iamVjdCwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBX
VEZNb3ZlKHJ0Y0NlcnRpZmljYXRlKSk7CiAgICAgfQorCisgICAgSlNWYWx1ZSByZWFkUlRDRGF0
YUNoYW5uZWwoKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIGJvb2wg
aW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7CisgICAgICAgIGlmICghaW5kZXhT
dWNjZXNzZnVsbHlSZWFkIHx8IGluZGV4ID49IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMuc2l6
ZSgpKSB7CisgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX3J0Y0RhdGFDaGFubmVsc1tpbmRleF0pIHsK
KyAgICAgICAgICAgIGF1dG8gZGV0YWNoZWRDaGFubmVsID0gV1RGTW92ZShtX2RldGFjaGVkUlRD
RGF0YUNoYW5uZWxzLmF0KGluZGV4KSk7CisgICAgICAgICAgICBtX3J0Y0RhdGFDaGFubmVsc1tp
bmRleF0gPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBkZXRhY2hlZENoYW5uZWwtPmlkZW50
aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5sYWJlbCksIFdURk1vdmUoZGV0YWNoZWRD
aGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRDaGFubmVsLT5zdGF0ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX3J0Y0RhdGFDaGFubmVsc1tpbmRleF0uZ2V0KCkp
OworICAgIH0KICNlbmRpZgogCiAgICAgSlNWYWx1ZSByZWFkSW1hZ2VCaXRtYXAoKQpAQCAtMzQ3
Nyw2ICszNTcwLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAg
ICAgICAgIGNhc2UgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJUYWc6CiAgICAgICAgICAgICByZXR1
cm4gcmVhZE9mZnNjcmVlbkNhbnZhcygpOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisg
ICAgICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxUcmFuc2ZlclRhZzoKKyAgICAgICAgICAgIHJldHVy
biByZWFkUlRDRGF0YUNoYW5uZWwoKTsKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgbV9wdHItLTsgLy8gUHVzaCB0aGUgdGFnIGJhY2sKQEAgLTM1MTIsNiArMzYwOSwxMCBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxP
ZmZzY3JlZW5DYW52YXM+PiBtX29mZnNjcmVlbkNhbnZhc2VzOwogI2VuZGlmCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFu
bmVsPj4gbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVsczsKKyAgICBWZWN0b3I8UmVmUHRyPFJUQ0Rh
dGFDaGFubmVsPj4gbV9ydGNEYXRhQ2hhbm5lbHM7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5KiBtX3dhc21Nb2R1bGVzOwogICAgIFdhc21NZW1v
cnlIYW5kbGVBcnJheSogbV93YXNtTWVtb3J5SGFuZGxlczsKQEAgLTM3MzUsNiArMzgzNiw5IEBA
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAg
ICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+
JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVs
Pj4mJiBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1
bGVzQXJyYXkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5
PiB3YXNtTWVtb3J5SGFuZGxlc0FycmF5CkBAIC0zNzQ3LDYgKzM4NTEsOSBAQCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZm
ZXIsIGNvbnN0IFZlYwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICwgbV9kZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykp
CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICAsIG1fZGV0YWNoZWRSVENEYXRhQ2hh
bm5lbHMoV1RGTW92ZShkZXRhY2hlZFJUQ0RhdGFDaGFubmVscykpCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkoV1RGTW92ZSh3YXNtTW9k
dWxlc0FycmF5KSkKICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheShXVEZNb3ZlKHdhc21N
ZW1vcnlIYW5kbGVzQXJyYXkpKQpAQCAtMzc4NSw2ICszODkyLDEyIEBAIHNpemVfdCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3QKICAgICAgICAgICAgIGNv
c3QgKz0gY2FudmFzLT5tZW1vcnlDb3N0KCk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisgICAgZm9yIChhdXRvJiBjaGFubmVsIDogbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVs
cykgeworICAgICAgICBpZiAoY2hhbm5lbCkKKyAgICAgICAgICAgIGNvc3QgKz0gY2hhbm5lbC0+
bWVtb3J5Q29zdCgpOworICAgIH0KKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIC8vIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBXZWJBc3NlbWJseSBNb2R1bGUgbWVtb3J5IGVz
dGltYXRpb24geWV0LgpAQCAtMzg3OCw2ICszOTkxLDkgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxl
eGkKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFnZUJpdG1hcHM7CiAj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5D
YW52YXM+PiBkdW1teU9mZnNjcmVlbkNhbnZhc2VzOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9S
VEMpCisgICAgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+IGR1bW15UlRDRGF0YUNoYW5uZWxz
OwogI2VuZGlmCiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJh
eUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtMzg4OSw2ICs0MDA1LDkgQEAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAg
ICAgICAgZHVtbXlPZmZzY3JlZW5DYW52YXNlcywKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRD
KQorICAgICAgICBkdW1teVJUQ0RhdGFDaGFubmVscywKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgZHVtbXlNb2R1bGVzLAogICAgICAgICBkdW1teU1lbW9yeUhhbmRs
ZXMsCkBAIC0zOTM0LDYgKzQwNTMsMjEgQEAgc3RhdGljIGJvb2wgY2FuT2Zmc2NyZWVuQ2FudmFz
ZXNEZXRhY2goY29uc3QgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiYgb2YKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9SVEMpCitzdGF0aWMgYm9vbCBjYW5EZXRhY2hSVENEYXRh
Q2hhbm5lbHMoY29uc3QgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+JiBjaGFubmVscykKK3sK
KyAgICBIYXNoU2V0PFJUQ0RhdGFDaGFubmVsKj4gdmlzaXRlZDsKKyAgICBmb3IgKGF1dG8mIGNo
YW5uZWwgOiBjaGFubmVscykgeworICAgICAgICBpZiAoIWNoYW5uZWwtPmNhbkRldGFjaCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBDaGVjayB0aGUgcmV0dXJuIHZh
bHVlIG9mIGFkZCwgd2Ugc2hvdWxkIG5vdCBlbmNvdW50ZXIgZHVwbGljYXRlcy4KKyAgICAgICAg
aWYgKCF2aXNpdGVkLmFkZChjaGFubmVsLnB0cigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogRXhjZXB0aW9uT3I8UmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJMaXN0LCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4
dCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CkBAIC0zOTQxLDYg
KzQwNzUsOSBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgIFZlY3RvcjxSZWZQdHI8SW1h
Z2VCaXRtYXA+PiBpbWFnZUJpdG1hcHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAg
ICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBvZmZzY3JlZW5DYW52YXNlczsKKyNl
bmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+
PiBkYXRhQ2hhbm5lbHM7CiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIHRyYW5zZmVyYWJsZSA6IHRy
YW5zZmVyTGlzdCkgewogICAgICAgICBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlT
aGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNmZXJhYmxlLmdldCgpKSkgewpAQCAtMzk3NSw2ICs0
MTEyLDEzIEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBKU1JUQ0RhdGFD
aGFubmVsOjp0b1dyYXBwZWQodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAgICAg
IGRhdGFDaGFubmVscy5hcHBlbmQoKmNoYW5uZWwpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhQ2xvbmVF
cnJvciB9OwogICAgIH0KIApAQCAtMzk4NCw2ICs0MTI4LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0ds
b2JhbE9iCiAgICAgaWYgKCFjYW5PZmZzY3JlZW5DYW52YXNlc0RldGFjaChvZmZzY3JlZW5DYW52
YXNlcykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owog
I2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgaWYgKCFjYW5EZXRhY2hSVENEYXRhQ2hh
bm5lbHMoZGF0YUNoYW5uZWxzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9u
ZUVycm9yIH07CisjZW5kaWYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVj
dG9yPFN0cmluZz4gYmxvYlVSTHM7CkBAIC0zOTk2LDYgKzQxNDQsOSBAQCBFeGNlcHRpb25PcjxS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
SlNHbG9iYWxPYgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICBvZmZzY3Jl
ZW5DYW52YXNlcywKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgICAgICBkYXRhQ2hh
bm5lbHMsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1
bGVzLAogICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKQEAgLTQwMTYsMTEgKzQxNjcsMTkgQEAg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBmb3IgKGF1dG8gb2Zmc2NyZWVuQ2FudmFzIDog
b2Zmc2NyZWVuQ2FudmFzZXMpCiAgICAgICAgIGRldGFjaGVkQ2FudmFzZXMuYXBwZW5kKG9mZnNj
cmVlbkNhbnZhcy0+ZGV0YWNoKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4gZGV0YWNoZWRS
VENEYXRhQ2hhbm5lbHM7CisgICAgZm9yIChhdXRvJiBjaGFubmVsIDogZGF0YUNoYW5uZWxzKQor
ICAgICAgICBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hcHBlbmQoY2hhbm5lbC0+ZGV0YWNoKCkp
OworI2VuZGlmCiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3Jr
ZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBXVEZNb3Zl
KGJhY2tpbmdTdG9yZXMpCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICAg
ICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkQ2FudmFzZXMpCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
X1JUQykKKyAgICAgICAgICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMp
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgLCBtYWtl
VW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAgICAgICAgICAgICAgICAgLCBj
b250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IG1ha2VV
bmlxdWU8V2FzbU1lbW9yeUhhbmRsZUFycmF5Pih3YXNtTWVtb3J5SGFuZGxlcykgOiBudWxscHRy
CkBAIC00MDc3LDYgKzQyMzYsOSBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgRGVzZXJp
YWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIFdURk1vdmUo
bV9iYWNraW5nU3RvcmVzKQogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgICAgICAs
IFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKQorI2VuZGlmCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgICAgICwgV1RGTW92ZShtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKQog
I2VuZGlmCiAgICAgICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0
YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5n
ZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMGNkYjQwMThjODQ3ZmEwMGZl
ZDdmNWZiMGZjYmNhMzUzOTgzNTI1MS4uNTRjOGU4MGY0ZTBiMDE0MGY2MTQyZjk0MTIyYzE1NjA4
NWJkYWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKQEAgLTUwLDYgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKK3N0cnVjdCBEZXRhY2hlZFJUQ0RhdGFDaGFu
bmVsOworI2VuZGlmCiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3Mg
SW1hZ2VCaXRtYXBCYWNraW5nOwpAQCAtMTIyLDYgKzEyNSw5IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgPSB7IH0KICNlbmRpZgorI2lmIEVOQUJMRShXRUJf
UlRDKQorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hh
bm5lbD4+JiYgPSB7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
LCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiA9IG51bGxwdHIKICAgICAgICAgLCBz
dGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiA9IG51bGxwdHIKQEAgLTEzNyw2
ICsxNDMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzZXM7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiBtX2RldGFjaGVkUlRD
RGF0YUNoYW5uZWxzOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJheTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21NZW1vcnlIYW5kbGVzQXJy
YXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IGI1MTg3NjU1YzA2MjA5NWFhZmU2YjQ2Mzg2
ZDhhMDMwZWNkMWY1ZDguLjFjMDM0N2RmNjBhOWUyNjg0OWJhNGQ4NmIwZDg2ZTA0MmQzYTc4OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAKICNpbmNsdWRlICJSVENQcmlvcml0eVR5cGUuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0MiwyNCBAQCBzdHJ1Y3QgUlRDRGF0
YUNoYW5uZWxJbml0IHsKICAgICBPcHRpb25hbDxib29sPiBuZWdvdGlhdGVkOwogICAgIE9wdGlv
bmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKICAgICBSVENQcmlvcml0eVR5cGUgcHJpb3JpdHkgeyBS
VENQcmlvcml0eVR5cGU6OkxvdyB9OworCisgICAgUlRDRGF0YUNoYW5uZWxJbml0IGlzb2xhdGVk
Q29weSgpIGNvbnN0OwogfTsKIAoraW5saW5lIFJUQ0RhdGFDaGFubmVsSW5pdCBSVENEYXRhQ2hh
bm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgYXV0byBjb3B5ID0gKnRoaXM7
CisgICAgY29weS5wcm90b2NvbCA9IHByb3RvY29sLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVy
biBjb3B5OworfQorCiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CiAKIGNsYXNz
IFJUQ0RhdGFDaGFubmVsSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDRGF0YUNo
YW5uZWxIYW5kbGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENs
aWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0
IENTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCmluZGV4IGU4MDZhNjE1OTI5N2M5M2I4
OTZjMmY4ZGZmMWQ5NzU1MGNkOGJjYTIuLmQwMzAwNTM2ZWQ5MzBmYmY5YzIwMmJiOTcyNjEwZDRj
NWY4OWE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0CiB7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6
c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50KQordm9pZCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKQogewogICAgIEFT
U0VSVCghbV9jbGllbnQpOwogICAgIG1fY2xpZW50ID0gJmNsaWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
aW5kZXggZjNjZmE2ODA0ODZmNzQ4YTVmNGM4NDk4OGI4ZGY4MmRmN2YxMDJjYy4uNGE1MTA5MmJj
NDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25z
dCBDU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6
ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBlNTIxYTg1NWYwZGIzNzI5YTgyNmFhNzA0Njg2NmQyNWM4YzQ5
NjVhLi5mMDVmZTFiM2JjNjRkMmYyMTY4YTkwOWIzZjk2MDY2MjFiOWJjNDEyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMDMtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgUlRDRGF0YUNoYW5uZWwgdHJhbnNmZXJhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvZGF0
YWNoYW5uZWwtd29ya2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dw
dC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9ubWVzc2Fn
ZSk6CisKIDIwMjEtMDMtMTEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbnVwIHJlZmVyZW5jZXMgdG8gZmxvYXQgYW5kIG91dC1vZi1mbG93IHJlbmRlcmVy
cyBiZWZvcmUgZGVzdHJveWluZyB0aGVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMmE1YWRjZmRiNzkxNjFiNzdjYzQ1YzVmOWMwODBmOTNkM2MzN2IyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1Mgb2ZmZXJlciBkYXRhIGNoYW5uZWwgaW4g
d29ya2VycworUEFTUyBhbnN3ZXJlciBkYXRhIGNoYW5uZWwgaW4gd29ya2VycworUEFTUyBkYXRh
IGNoYW5uZWwgY2xvc2UgZXZlbnQgaW4gd29ya2VyCitQQVNTIEZhaWxpbmcgdG8gdHJhbnNmZXIg
YSBkYXRhIGNoYW5uZWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L2RhdGFjaGFubmVsLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2Rh
dGFjaGFubmVsLXdvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzZTEwNDY0MWYwZDU5ZjJkZWIxZDc3
ZTJiOGE5NzJkMzcwMmExMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwxMzMgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0
IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZhciBsb2Nh
bENoYW5uZWw7Cit2YXIgcmVtb3RlQ2hhbm5lbDsKKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1l
c3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNvbnN0
IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEgPT09
IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YWNoYW5uZWwt
d29ya2VyLmpzJyk7CisgICAgbGV0IGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtl
ci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXdhaXQgZGF0YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGF3YWl0IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZp
cnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgbG9jYWxDaGFubmVsID0gZmlyc3RDb25u
ZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKKyAgICAgICAgICAg
IHdvcmtlci5wb3N0TWVzc2FnZSh7Y2hhbm5lbDogbG9jYWxDaGFubmVsfSwgW2xvY2FsQ2hhbm5l
bF0pOworCisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9uZGF0YWNoYW5uZWwgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICByZW1vdGVDaGFubmVsID0gZXZlbnQuY2hhbm5lbDsKKyAgICAgICAgICAgICAgICByZW1v
dGVDaGFubmVsLm9ub3BlbiA9IHJlc29sdmU7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsK
KyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDI1MDAw
KTsKKyAgICB9KTsKKworICAgIGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5v
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHJlbW90ZUNo
YW5uZWwuc2VuZCgiT0siKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJPSyIpOwor
CisgICAgZGF0YSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVtb3RlQ2hhbm5lbC5vbm1lc3Nh
Z2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHdvcmtlci5wb3N0TWVz
c2FnZSh7bWVzc2FnZTogIk9LMiJ9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJP
SzIiKTsKK30sICJvZmZlcmVyIGRhdGEgY2hhbm5lbCBpbiB3b3JrZXJzIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ2RhdGFjaGFu
bmVsLXdvcmtlci5qcycpOworICAgIGxldCBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBkYXRhID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgIGxvY2FsQ2hhbm5lbCA9IGZpcnN0Q29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5l
bCgnc2VuZERhdGFDaGFubmVsJyk7CisgICAgICAgICAgICBsb2NhbENoYW5uZWwub25vcGVuID0g
cmVzb2x2ZTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAg
IHNlY29uZENvbm5lY3Rpb24ub25kYXRhY2hhbm5lbCA9IChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIHJlbW90ZUNoYW5uZWwgPSBldmVudC5jaGFubmVsOworICAgICAgICAgICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSh7Y2hhbm5lbDogcmVtb3RlQ2hhbm5lbH0sIFtyZW1vdGVDaGFubmVs
XSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9
PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDI1MDAwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGRhdGEsICJvcGVuZWQiKTsKKworICAgIGRhdGEgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworICAgIGxvY2FsQ2hhbm5lbC5zZW5kKCJPSyIpOworICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgZGF0YSwgIk9LIik7CisKKyAgICBkYXRhID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBsb2Nh
bENoYW5uZWwub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAg
ICB3b3JrZXIucG9zdE1lc3NhZ2Uoe21lc3NhZ2U6ICJPSzIifSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBkYXRhLCAiT0syIik7Cit9LCAiYW5zd2VyZXIgZGF0YSBjaGFubmVsIGluIHdvcmtl
cnMiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3
IFdvcmtlcignZGF0YWNoYW5uZWwtd29ya2VyLmpzJyk7CisgICAgbGV0IGRhdGEgPSBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZl
bnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0YSwgInJlZ2lzdGVyZWQiKTsK
KworICAgIGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAo
ZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29u
bmVjdGlvbikgPT4geworICAgICAgICAgICAgbG9jYWxDaGFubmVsID0gZmlyc3RDb25uZWN0aW9u
LmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKKyAgICAgICAgICAgIHdvcmtl
ci5wb3N0TWVzc2FnZSh7Y2hhbm5lbDogbG9jYWxDaGFubmVsfSwgW2xvY2FsQ2hhbm5lbF0pOwor
CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRD
b25uZWN0aW9uLm9uZGF0YWNoYW5uZWwgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBy
ZW1vdGVDaGFubmVsID0gZXZlbnQuY2hhbm5lbDsKKyAgICAgICAgICAgICAgICByZW1vdGVDaGFu
bmVsLm9ub3BlbiA9IHJlc29sdmU7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAg
ICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDI1MDAwKTsKKyAg
ICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJvcGVuZWQiKTsKKworICAgIGRh
dGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHJlbW90ZUNoYW5uZWwuY2xvc2UoKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IGRhdGEsICJjbG9zZWQiKTsKKworfSwgImRhdGEgY2hhbm5lbCBj
bG9zZSBldmVudCBpbiB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignZGF0YWNoYW5uZWwtd29ya2VyLmpzJyk7CisgICAg
bGV0IGRhdGEgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgZGF0
YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgbG9jYWxDaGFubmVsID0gZmlyc3RDb25uZWN0aW9uLmNyZWF0ZURhdGFD
aGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub25kYXRhY2hhbm5lbCA9IChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgIHJlbW90ZUNoYW5uZWwgPSBldmVudC5jaGFubmVsOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtjaGFubmVs
OiByZW1vdGVDaGFubmVsfSwgW3JlbW90ZUNoYW5uZWxdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlamVjdCgicG9zdE1lc3NhZ2Ugb2siKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
IH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwg
NTAwMCk7CisgICAgfSk7Cit9LCAiRmFpbGluZyB0byB0cmFuc2ZlciBhIGRhdGEgY2hhbm5lbCIp
OworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvZGF0YWNoYW5uZWwtd29ya2VyLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MGQ3MWY2OGYwMjJmMmM3OWQzMTIwYzA3ZTRkYThhNzY1NzliY2YwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2RhdGFjaGFubmVsLXdvcmtlci5qcwpAQCAt
MCwwICsxLDE5IEBACitsZXQgY2hhbm5lbDsKK29ubWVzc2FnZSA9IChldmVudCkgPT4geworICAg
IGlmIChldmVudC5kYXRhLmNoYW5uZWwpIHsKKyAgICAgICAgY2hhbm5lbCA9IGV2ZW50LmRhdGEu
Y2hhbm5lbDsKKyAgICAgICAgY2hhbm5lbC5vbm9wZW4gPSAoKSA9PiBzZWxmLnBvc3RNZXNzYWdl
KCJvcGVuZWQiKTsKKyAgICAgICAgY2hhbm5lbC5vbmVycm9yID0gKCkgPT4gc2VsZi5wb3N0TWVz
c2FnZSgiZXJyb3JlZCIpOworICAgICAgICBjaGFubmVsLm9uY2xvc2UgPSAoKSA9PiBzZWxmLnBv
c3RNZXNzYWdlKCJjbG9zZWQiKTsKKyAgICAgICAgY2hhbm5lbC5vbm1lc3NhZ2UgPSBldmVudCA9
PiBzZWxmLnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEpOworICAgIH0KKyAgICBpZiAoZXZlbnQuZGF0
YS5tZXNzYWdlKSB7CisgICAgICAgIGlmIChjaGFubmVsKQorICAgICAgICAgICAgY2hhbm5lbC5z
ZW5kKGV2ZW50LmRhdGEubWVzc2FnZSk7CisgICAgfQorICAgIGlmIChldmVudC5kYXRhLmNsb3Nl
KSB7CisgICAgICAgIGlmIChjaGFubmVsKQorICAgICAgICAgICAgY2hhbm5lbC5jbG9zZSgpOwor
ICAgIH0KK307CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>