<?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>220519</bug_id>
          
          <creation_ts>2021-01-11 11:49:51 -0800</creation_ts>
          <short_desc>Some type serialization encoders are implemented in Encoder class</short_desc>
          <delta_ts>2021-01-29 05:03:18 -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>WebKit2</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>
          
          <blocked>217211</blocked>
    
    <blocked>219641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718758</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-11 11:49:51 -0800</bug_when>
    <thetext>Some type encoders are implemented in Encoder class

Most type encoders for IPC serialization are implemented in the type (T::encode(Encoder&amp;)) or in ArgumentCoder&lt;T&gt; template.

However, arithmetic types and enums are implemented in Encoder.

This makes it hard to implement other types of Encoders, since this code should be somehow duplicated or extracted redundantly to a base template.

Instead, it would be consistent if all the serialization would be in in the T::encode or ArgumentCoder&lt;T&gt;::encode.

This would be important for WebGL IPC, where the stream serialization would in general use the base serialization code, but some details of the Encoder would need to differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718771</commentid>
    <comment_count>1</comment_count>
      <attachid>417398</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-11 12:05:57 -0800</bug_when>
    <thetext>Created attachment 417398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718788</commentid>
    <comment_count>2</comment_count>
      <attachid>417404</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-11 12:52:10 -0800</bug_when>
    <thetext>Created attachment 417404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720376</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-18 11:50:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73327684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722526</commentid>
    <comment_count>4</comment_count>
      <attachid>417404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-26 08:46:54 -0800</bug_when>
    <thetext>Comment on attachment 417404
Patch

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

&gt; Source/WebKit/ChangeLog:15
&gt; +        corresponidng modification to Decoder class for consistency.

typo: corresponidng</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723054</commentid>
    <comment_count>5</comment_count>
      <attachid>418559</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-27 10:42:09 -0800</bug_when>
    <thetext>Created attachment 418559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723068</commentid>
    <comment_count>6</comment_count>
      <attachid>418563</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-27 11:08:20 -0800</bug_when>
    <thetext>Created attachment 418563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723687</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-29 05:03:16 -0800</bug_when>
    <thetext>Committed r272058: &lt;https://trac.webkit.org/changeset/272058&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418563.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417398</attachid>
            <date>2021-01-11 12:05:57 -0800</date>
            <delta_ts>2021-01-11 13:27:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220519-20210111220555.patch</filename>
            <type>text/plain</type>
            <size>27087</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBmZmYxZTc4ZDk1MzZlOWJh
M2UwMzJmZmRmNGYzYjY0NjdjNmQ1OTguLjgyZWE0ODI2MjNlNDFmNmRiZTcwNzMyN2FhZjE1OTgy
ZTEyY2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDEtMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHR5cGUgc2VyaWFs
aXphdGlvbiBlbmNvZGVycyBhcmUgaW1wbGVtZW50ZWQgaW4gRW5jb2RlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhcml0aG1ldGlj
IHR5cGUgYW5kIGVudW0gdHlwZSBzZXJpYWxpemF0aW9uIGZyb20gRW5jb2RlciB0bworICAgICAg
ICBBcmd1bWVudENvZGVyLiBUaGlzIG1ha2VzIGl0IGEgYml0IHNpbXBsZXIgdG8gaW1wbGVtZW50
IG11bHRpcGxlCisgICAgICAgIEVuY29kZXIgdHlwZXMsIGFzIHRoZSBzZXJpYWxpemF0aW9uIGNv
ZGUgaXMgY29uc2lzdGVudGx5IHNlcGFyYXRlCisgICAgICAgIGZyb20gdGhlIEVuY29kZXIuIFdl
YkdMIFNITSBJUEMgc3RyZWFtIGV4dGVuc2lvbnMgd291bGQgZXZlbnR1YWxseQorICAgICAgICBu
ZWVkIGEgc2ltaWxhciBidXQgc2xpZ2h0bHkgZGlmZmVyZW50IEVuY29kZXIuCisKKyAgICAgICAg
U2luY2UgRW5jb2RlciBpcyBpbnRlbnRpb25hbGx5IGNvdXBsZWQgd2l0aCB0aGUgRGVjb2Rlciwg
ZG8gdGhlCisgICAgICAgIGNvcnJlc3BvbmlkbmcgbW9kaWZpY2F0aW9uIHRvIERlY29kZXIgY2xh
c3MgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgIFJlaW1wbGVtZW50IEhhc3tMZWdhY3ksTW9k
ZXJufURlY29kZXIgZm9yIGVhc2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
KHBlcmhhcHM/KSBpbiBhIGJpdCBzaW1wbGVyIHRlcm1zLgorCisgICAgICAgIEVuY29kZXI6Om9w
ZXJhdG9yPDwoKSBhbmQgRW5jb2Rlcjo6ZW5jb2RlKCkgd2VyZSB0aGUgc2FtZSBmdW5jdGlvbi4K
KyAgICAgICAgUmVtb3ZlIEVuY29kZXI6OmVuY29kZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGV0YWlsOjpUZXN0TGVnYWN5RGVjb2Rlcik6CisgICAgICAgIChJUEM6OkRldGFp
bDo6VGVzdE1vZGVybkRlY29kZXIpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6b3BlcmF0
b3I+Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAqIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVUlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1VJ
U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNS
ZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIxLTAxLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMg
ZGVmaW5pdGlvbnMgb2YgYWxsIGN1c3RvbSBlbnVtIHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZp
bml0aW9uIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldENoYW5uZWwuaAppbmRleCAwNDM0YmY4ODA5YTdlYjNlY2MxOGU4ZjY1MGNjMDI3OGFl
NmViNTE3Li40N2UwNjU3MzVhZGM1YmEwYzE5M2NjZDI2YTQ2M2NlNDc2NjExY2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDRmMjQ1ODA3
NzgxOWIyMWVlYjAwMTk3M2MyMjhkMzkxZGQ4NWU3MjQuLjMyMDc2YWZkMDJhODk4YTFlMzlkZTI4
M2UxMDJiODU5NDdmOGVkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmgKQEAgLTI1LDkwICsyNSw4NSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEludENvbnN0cmFpbnQ7Ci1jbGFzcyBE
b3VibGVDb25zdHJhaW50OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLXN0cnVjdCBWaWV3cG9y
dEFyZ3VtZW50czsKLX0KLQogbmFtZXNwYWNlIElQQyB7CituYW1lc3BhY2UgRGV0YWlsIHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEk+IGF1dG8gVGVzdExlZ2FjeURlY29kZXIoaW50
KSAtPiBkZWNsdHlwZShJOjpkZWNvZGUoc3RkOjpkZWNsdmFsPERlY29kZXImPigpLCBzdGQ6OmRl
Y2x2YWw8VCY+KCkpLCBzdGQ6OnRydWVfdHlwZSB7IH0pOwordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgST4gYXV0byBUZXN0TGVnYWN5RGVjb2Rlcihsb25nKSAtPiBzdGQ6OmZhbHNlX3R5
cGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJPiBhdXRvIFRlc3RNb2Rlcm5EZWNv
ZGVyKGludCkgLT4gZGVjbHR5cGUoSTo6ZGVjb2RlKHN0ZDo6ZGVjbHZhbDxEZWNvZGVyJj4oKSks
IHN0ZDo6dHJ1ZV90eXBlIHsgfSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJPiBh
dXRvIFRlc3RNb2Rlcm5EZWNvZGVyKGxvbmcpIC0+IHN0ZDo6ZmFsc2VfdHlwZTsKK30KK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBzdHJ1Y3QgSGFzTGVnYWN5RGVjb2RlciA6
IGRlY2x0eXBlKERldGFpbDo6VGVzdExlZ2FjeURlY29kZXI8VCwgST4oMCkpIHsgfTsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
TGVnYWN5RGVjb2RlclYgPSBIYXNMZWdhY3lEZWNvZGVyPFQsIEk+Ojp2YWx1ZTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBzdHJ1Y3QgSGFzTW9kZXJuRGVjb2RlciA6IGRl
Y2x0eXBlKERldGFpbDo6VGVzdE1vZGVybkRlY29kZXI8VCwgST4oMCkpIHsgfTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzTW9k
ZXJuRGVjb2RlclYgPSBIYXNNb2Rlcm5EZWNvZGVyPFQsIEk+Ojp2YWx1ZTsKIAotY2xhc3MgRGVj
b2RlcjsKLWNsYXNzIEVuY29kZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyOwot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotY2xhc3MgVXNlc01vZGVybkRlY29kZXIgewotcHJpdmF0
ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUPiBzdHJ1Y3QgSGVscGVyOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrKEhlbHBlcjxPcHRpb25hbDxVPiAo
KikoRGVjb2RlciYpLCAmVDo6ZGVjb2RlPiopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyB1aW50MTZfdCBjaGVjayguLi4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB1aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8T3B0aW9uYWw8VT4gKCopKERlY29k
ZXImKSwgJkFyZ3VtZW50Q29kZXI8VD46OmRlY29kZT4qKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgdWludDE2X3QgY2hlY2tBcmd1bWVudENvZGVyKC4uLik7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFyZ3VtZW50Q29kZXJWYWx1ZSA9IHNpemVvZihjaGVj
azxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2YWx1ZSA9IGFyZ3VtZW50Q29kZXJWYWx1ZSB8fCBzaXplb2YoY2hlY2tBcmd1bWVudENv
ZGVyPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7Ci19OwotICAgIAotdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVHlwZXM+Ci1jbGFzcyBVc2VzTW9kZXJuRGVjb2RlcjxzdGQ6OnR1cGxlPFR5
cGVzLi4uPj4gewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRy
dWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFyZ3VtZW50Q29kZXJWYWx1ZSA9IHRydWU7
Ci19OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFQmIHQpCisgICAgeworICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKKyAgICB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFU+Ci1jbGFzcyBVc2VzTGVnYWN5RGVjb2RlciB7Ci1wcml2YXRlOgotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQ+IHN0cnVjdCBIZWxwZXI7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2soSGVscGVyPGJvb2wgKCopKERlY29kZXImLCBV
JiksICZUOjpkZWNvZGU+Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQx
Nl90IGNoZWNrKC4uLik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3Qg
Y2hlY2tBcmd1bWVudENvZGVyKEhlbHBlcjxib29sICgqKShEZWNvZGVyJiwgVSYpLCAmQXJndW1l
bnRDb2RlcjxUPjo6ZGVjb2RlPiopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
aW50MTZfdCBjaGVja0FyZ3VtZW50Q29kZXIoLi4uKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZhbHVlID0gc2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIp
KSA9PSBzaXplb2YodWludDhfdCk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0g
YXJndW1lbnRDb2RlclZhbHVlIHx8IHNpemVvZihjaGVja0FyZ3VtZW50Q29kZXI8VT4obnVsbHB0
cikpID09IHNpemVvZih1aW50OF90KTsKLX07CisgICAgc3RhdGljIE9wdGlvbmFsPFQ+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVy
bkRlY29kZXJWPFQ+KQorICAgICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShkZWNvZGVyKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBUIHQ7CisgICAgICAgICAgICBpZiAoVDo6ZGVjb2Rl
KGRlY29kZXIsIHQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qm9vbFR5cGU+Ci1jbGFzcyBEZWZhdWx0RGVjb2RlclZhbHVlcyB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGFyZ3VtZW50Q29kZXJWYWx1ZSA9IEJvb2xUeXBlOjp2YWx1ZTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBCb29sVHlwZTo6dmFsdWU7CisgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBU
JiB0KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc0xlZ2FjeURlY29kZXJWPFQ+KQor
ICAgICAgICAgICAgcmV0dXJuIFQ6OmRlY29kZShkZWNvZGVyLCB0KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBPcHRpb25hbDxUPiBvcHRpb25hbCA9IFQ6OmRlY29kZShkZWNvZGVyKTsK
KyAgICAgICAgICAgIGlmICghb3B0aW9uYWwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFsKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQogfTsKIAotLy8gUmVzb3VyY2VSZXNwb25zZUJhc2Ug
aGFzIHRoZSBsZWdhY3kgZGVjb2RlIHRlbXBsYXRlLCBub3QgUmVzb3VyY2VSZXNwb25zZS4KLXRl
bXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZT4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpmYWxzZV90eXBlPiB7IH07Ci10
ZW1wbGF0ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2U+IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1ZV90eXBlPiB7IH07Ci0K
LS8vIEludENvbnN0cmFpbnQgYW5kIERvdWJsZUNvbnN0cmFpbnQgaGF2ZSB0aGVpciBsZWdhY3kg
ZGVjb2RlciB0ZW1wbGF0ZXMgaW4gTnVtZXJpY0NvbnN0cmFpbnQuCi10ZW1wbGF0ZTw+IGNsYXNz
IFVzZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6OkludENvbnN0cmFpbnQ+IDogcHVibGljIERlZmF1
bHREZWNvZGVyVmFsdWVzPHN0ZDo6ZmFsc2VfdHlwZT4geyB9OwotdGVtcGxhdGU8PiBjbGFzcyBV
c2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpJbnRDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0
RGVjb2RlclZhbHVlczxzdGQ6OnRydWVfdHlwZT4geyB9OwotdGVtcGxhdGU8PiBjbGFzcyBVc2Vz
TW9kZXJuRGVjb2RlcjxXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0
RGVjb2RlclZhbHVlczxzdGQ6OmZhbHNlX3R5cGU+IHsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgVXNl
c0xlZ2FjeURlY29kZXI8V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludD4gOiBwdWJsaWMgRGVmYXVs
dERlY29kZXJWYWx1ZXM8c3RkOjp0cnVlX3R5cGU+IHsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpY192PFQ+Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKKyAgICB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyIHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVCYgdCkKKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewotICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKKyAgICAgICAgVCByZXN1bHQ7Cisg
ICAgICAgIGlmIChkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmcmVzdWx0KSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQorfTsK
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBULCBzdGQ6OmVuYWJsZV9pZl90PFVzZXNMZWdh
Y3lEZWNvZGVyPFU+Ojphcmd1bWVudENvZGVyVmFsdWU+KiA9IG51bGxwdHI+IFdBUk5fVU5VU0VE
X1JFVFVSTgotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVJiB1KQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gVTo6
ZGVjb2RlKGRlY29kZXIsIHUpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihX
VEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOworICAgICAgICBlbmNvZGVyIDw8
IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBULCBzdGQ6OmVuYWJsZV9pZl90PFVzZXNNb2Rlcm5EZWNvZGVyPFU+
Ojphcmd1bWVudENvZGVyVmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFU+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBPcHRpb25hbDxUPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBVOjpkZWNvZGUoZGVjb2Rl
cik7CisgICAgICAgIE9wdGlvbmFsPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8VD4+IHZhbHVlOwor
ICAgICAgICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1Zh
bGlkRW51bTxUPigqdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KCp2
YWx1ZSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTM4YmMxYzYwYWY2
ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4ZDRiNjI2Mi4uMDQzZjg3ZDJmZjkyZTkzODM1NzQ3YmVmYzg5
MmEwN2QxMDE2M2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkFycmF5UmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiRGVj
b2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1
ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAgLTc3
LDcgKzc2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJy
YXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWkKICAgICB1c2luZyBBcnJheVJlZmVy
ZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
OwogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJl
ZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKLSAgICAgICAgZW5jb2Rlci5lbmNv
ZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSkpOworICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkp
OwogICAgICAgICBpZiAoIWFycmF5UmVmZXJlbmNlLnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uu
c2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCA1MTE2Yjc0NDJkM2RiYmZjMDJiZTAwMGRmM2MwYmNjNGU3MmQ3
NDRlLi5jMDRhY2Y4ODA0NTEzNmE1ZDQwOWViMDE3NzA4M2ZiNjc2ZDQxNTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC01MDUsNyArNTA1LDcgQEAgYm9vbCBD
b25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4KICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01l
c3NhZ2VFeHBlY3RlZCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Uu
YXJndW1lbnRzKCkpOworICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAg
CiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsK
IH0KQEAgLTUyNyw4ICs1MjcsOCBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBs
eShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBUOjpjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfSwgQ29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkKSk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwotICAgIGVuY29kZXItPmVuY29kZShtZXNz
YWdlLmFyZ3VtZW50cygpKTsKKyAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOworICAgICplbmNv
ZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNv
ZGVyKSwgc2VuZE9wdGlvbnMpOwogfQogCkBAIC01NjUsNyArNTY1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMo
VCYmIG1lc3NhZ2UKICAgICB9CiAKICAgICAvLyBFbmNvZGUgdGhlIHJlc3Qgb2YgdGhlIGlucHV0
IGFyZ3VtZW50cy4KLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7Cisg
ICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKIAogICAgIC8vIE5vdyBzZW5kIHRo
ZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92
ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuaAppbmRleCA4YTk3MDQ4ODBjODI5YzVmNTAzMTUwMzU1ZjcxNTRiYzFiZmNm
Mjg5Li42Njk4NWJjMzg3ZDc0MzkxMzcwMWIxMTdiOTE4MDBiOWEyNzcxYWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC0yNSwxMSArMjUsOSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00NCw2ICs0MiwxMCBAQCBjbGFzcyBJbXBvcnRhbmNlQXNzZXJ0aW9u
OwogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRE
aXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKIAordGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKK3RlbXBsYXRlPHR5cGVuYW1l
LCB0eXBlbmFtZT4gc3RydWN0IEhhc0xlZ2FjeURlY29kZXI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyOworCiBjbGFzcyBEZWNvZGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTc3LDQ1ICs3OSwzNyBAQCBw
dWJsaWM6CiAKICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERh
dGEodWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAgIC8vIFRo
ZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUgd2lsbCBvbmx5IGJlIHZhbGlkIGZv
ciB0aGUgbGlmZXRpbWUgb2YgdGhlIEFyZ3VtZW50RGVjb2RlciBvYmplY3QuCisgICAgLy8gVGhl
IGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9y
IHRoZSBsaWZldGltZSBvZiB0aGUgRGVjb2RlciBvYmplY3QuCiAgICAgLy8gUmV0dXJucyBudWxs
cHRyIG9uIGZhaWx1cmUuCiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN0IHVpbnQ4X3QqIGRl
Y29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRp
YzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKFQmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCksIGFsaWdub2Yo
VCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLSAgICB7Ci0gICAgICAgIFQgcmVzdWx0
OwotICAgICAgICBpZiAoZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpKQotICAgICAgICAgICAgb3B0
aW9uYWwgPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+
KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKEUmIGVudW1W
YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShUJiB0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
PiB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAoIVdURjo6aXNWYWxpZEVudW08RT4odmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PEU+
KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHVzaW5nIEltcGwgPSBBcmd1
bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+
LCB2b2lkPjsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc0xlZ2FjeURlY29kZXI8VCwgSW1wbD46
OnZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEltcGw6OmRlY29kZSgqdGhpcywgdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgT3B0aW9uYWw8VD4gb3B0aW9uYWw7CisgICAgICAgICAg
ICAqdGhpcyA+PiBvcHRpb25hbDsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWwpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFs
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgotICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIG9wdGlv
bmFsKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxUPiYgdCkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4+IHZhbHVlOwotICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKLSAgICAgICAgaWYgKHZh
bHVlICYmIFdURjo6aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKLSAgICAgICAgICAgIG9wdGlvbmFs
ID0gc3RhdGljX2Nhc3Q8RT4oKnZhbHVlKTsKKyAgICAgICAgdXNpbmcgSW1wbCA9IEFyZ3VtZW50
Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZv
aWQ+OworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlcjxULCBJbXBsPjo6dmFs
dWUpCisgICAgICAgICAgICB0ID0gSW1wbDo6ZGVjb2RlKCp0aGlzKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBUIHY7CisgICAgICAgICAgICBpZiAoSW1wbDo6ZGVjb2RlKCp0aGlzLCB2
KSkKKyAgICAgICAgICAgICAgICB0ID0gV1RGTW92ZSh2KTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCkBAIC0xMzAsNDIgKzEyNCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oYWxpZ25vZihUKSwgbnVtRWxl
bWVudHMgKiBzaXplb2YoVCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWUgJiYgVXNlc0xlZ2FjeURlY29kZXI8VD46OnZhbHVlPiogPSBudWxscHRy
PgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB0KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEFyZ3VtZW50Q29kZXI8VD46OmRlY29kZSgqdGhpcywgdCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+
Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSAmJiAhVXNlc0xlZ2FjeURl
Y29kZXI8VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShUJiB0KQotICAgIHsKLSAgICAgICAgT3B0aW9uYWw8VD4gb3B0aW9uYWw7Ci0gICAg
ICAgICp0aGlzID4+IG9wdGlvbmFsOwotICAgICAgICBpZiAoIW9wdGlvbmFsKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB0ID0gV1RGTW92ZSgqb3B0aW9uYWwpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVu
YWJsZV9pZl90PFVzZXNNb2Rlcm5EZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB0KQotICAgIHsKLSAgICAgICAgdCA9IEFy
Z3VtZW50Q29kZXI8VD46OmRlY29kZSgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSAmJiAh
VXNlc01vZGVybkRlY29kZXI8VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQotICAgIHsKLSAgICAgICAgVCB0OwotICAg
ICAgICBpZiAoQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzLCB0KSkgewotICAgICAgICAg
ICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHQpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
ICAgICB9Ci0gICAgICAgIG9wdGlvbmFsID0gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCiAgICAgYm9vbCByZW1vdmVBdHRhY2htZW50KEF0dGFjaG1lbnQmKTsK
IAogICAgIHN0YXRpYyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggNDIxMmQ2NmMzNzg4ZGU3NjI1NjI2ZmYzMGE1MjVi
N2I1MDE4MDlhMC4uNzJlYjMzZDkwMTYwNmQyODljNzBkOGMxM2JkYzQzN2VmYTNhNmU3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMjUsMTEgKzI1LDkgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVy
ZW5jZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzcsOSArMzUsMTAgQEAKIG5hbWVzcGFjZSBJUEMgewog
CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIE1lc3NhZ2VO
YW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkgOiB1aW50OF90OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVj
dCBBcmd1bWVudENvZGVyOworCiBjbGFzcyBFbmNvZGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTYxLDMzICs2MCwxMyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qs
IHNpemVfdCBhbGlnbm1lbnQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFi
bGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpy
ZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZh
bHVlPiogPSBudWxscHRyPgotICAgIHZvaWQgZW5jb2RlKFQmJiB0KQotICAgIHsKLSAgICAgICAg
QXJndW1lbnRDb2Rlcjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0eXBlPjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndh
cmQ8VD4odCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBv
cGVyYXRvcjw8KEUmJiBlbnVtVmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQoV1RGOjppc1Zh
bGlkRW51bTxFPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpKTsKLSAg
ICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51bVZhbHVlKSk7Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
dGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKICAg
ICB7Ci0gICAgICAgIGVuY29kZShzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAgICBBcmd1bWVu
dENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2
b2lkPjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8VD4odCkpOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIHZvaWQgZW5j
b2RlKFQgdmFsdWUpCi0gICAgewotICAgICAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKLSAgICB9Ci0KICAgICB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXpl
OyB9CiAKQEAgLTExNywxMyArOTYsNiBAQCBwcml2YXRlOgogCiAgICAgdWludDhfdCogZ3Jvdyhz
aXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgotICAgIHZv
aWQgZW5jb2RlKEUgZW51bVZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxp
ZEVudW08RT4oV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxFPihlbnVtVmFsdWUpKSk7Ci0gICAg
ICAgIGVuY29kZShXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpOwotICAg
IH0KLQogICAgIGJvb2wgaGFzQXR0YWNobWVudHMoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2Rl
SGVhZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5k
ZXggZThiNTQ2YjBiYjc0ZmYzNmEwNjg0ODBmMDUxZmNkNjg3MWFiYmJjNS4uN2NkYWNlNzY1NGUw
NGM1ODg1OTgxMmM3MzM1MGE0YTQwYzI3ODBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAogICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6Om5hbWUoKSwgZGVzdGluYXRpb25J
RCk7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKyAgICAg
ICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQpA
QCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIHVp
bnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0gICAg
ICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwor
ICAgICAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgICAgICBzZW5kTWVz
c2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywge3sgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGRlY29kZXIgJiYgZGVjb2Rlci0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgqZGVjb2RlciwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tCmluZGV4IGMxZDk2NjU5NWQyOWM4MzQ0NDUzNzJmZDQ5Y2I1OTQ5ZDM3
NGE2NWMuLjNmNTE3MjMxODAxMjc4MjUyZjA2ZmU1MjE5OTEyYjE0MDVmODkyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0K
QEAgLTIxOSw3ICsyMTksNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICAKICAg
ICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNl
bmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgogICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7
Ci0gICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01T
R19UWVBFX01BS0VfU0VORCkpOworICAgICAgICAqZW5jb2RlciA8PCBNYWNoUG9ydChtX3JlY2Vp
dmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNl
bmRTb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9T
aGFyZWRNZW1vcnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJl
ZE1lbW9yeUNvY29hLmNwcAppbmRleCAyNzEzMTg5Yjg3OTE4MjZlNGI1ZTE3Mzc2NzZmY2EyNmVh
OTkyYTI3Li4zOGNjNTg0ZWU0YjZlOTgyMDkyN2UxYjE5OGJlY2JjZTQwYmNhMWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApA
QCAtMjYsOCArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNYWNoUG9ydC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggZGM5OWNkMTY5ZTE0NDdhMDQzOTIzNTY5
MGExNTI2NmI2MWE5MGFkMi4uNTY2ZGIwNjVkMzNmMzI0NWY3YjE4MDBiNjI3ZWVjOTJmNWRlMDA3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTU4LDcgKzE1OCw3
IEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJv
cGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShjaGFuZ2VkUHJvcGVydGllcyk7CisgICAgZW5jb2Rl
ciA8PCBjaGFuZ2VkUHJvcGVydGllczsKIAogICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIE5h
bWVDaGFuZ2VkKQogICAgICAgICBlbmNvZGVyIDw8IG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlT
dGF0ZS5jcHAKaW5kZXggYjk0ZDYxM2VhNDRjZGZiOGFlYjZjMWZiOGE1ZmUxZDkyMTE5N2MwNy4u
MDZkYmM4NzIyNTRkZmNiNTA5ZWVkMTJkMDY2NjQ5OGZhNzY2ZTNkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdVSVN0YXRlLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlKG1fY2hhbmdlcyk7CisgICAgZW5jb2RlciA8
PCBtX2NoYW5nZXM7CiAKICAgICBpZiAobV9jaGFuZ2VzLmNvbnRhaW5zKENoYW5nZXM6OlNjcm9s
bFNuYXBOb2RlcykpCiAgICAgICAgIGVuY29kZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVTY3JvbGxT
bmFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aAppbmRleCA4Y2E5N2U2ZTU5N2JkNzExMGEwZDczOGUwYzRhN2M4NTYwM2E4YTdkLi44YjNiOGZj
ZDhiODA2ZTk1YTdkOGZjNGQ2NDU0OTMyODkyN2ZhNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTU4LDcgKzE1OCw3IEBAIGJv
b2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBPcHRpb25TZXQ8CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRz
KCk7CiAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlv
bnMpOwogfQpAQCAtMTgzLDggKzE4Myw4IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlCiAKICAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBs
eUhhbmRsZXJJRCgpOwotICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgKmVuY29kZXIgPDwgbGlzdGVu
ZXJJRDsKKyAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2RlciogZGVjb2RlcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChkZWNvZGVyICYmIGRlY29kZXItPmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIFQ6OmNhbGxSZXBseSgqZGVjb2RlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGlu
Z0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJ
LmNwcAppbmRleCAzNjUyOTVhNzY4OWEyM2Y2ZTg0NjFmYTBhZmZlNzY0N2ViZjcxZGYyLi5kOTU0
ZmMyNjk4MzQ1MGEzNjU0ZjBhZGZmZTg0ZWU0NTJhNmNhYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtNjUxLDcgKzY1
MSw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnNlbmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpCiAgICAgYm9vbCBoYXNSZXBseSA9ICEhbWVz
c2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMobWVzc2FnZU5hbWUpOwogICAgIGlmIChoYXNS
ZXBseSkgewogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBs
eUhhbmRsZXJJRCgpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CisgICAg
ICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAKICAgICAgICAgSlNPYmplY3RSZWYgcmVzb2x2
ZTsKICAgICAgICAgSlNPYmplY3RSZWYgcmVqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGViNmJkODMyMWJmNTg0ZTkw
ZjQyMDFiNzI2MDk1NTZjODdlODhiMjYuLjAzY2RlMjg5ZTNhODdkZTdiNDNlMDhiNTI5ZGU3ODBh
MThkYWU5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNh
Y3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKICAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBt
YWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7Ci0gICAgY29tbWl0RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAg
ICpjb21taXRFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAKICAgICAvLyBGSVhNRTog
TW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KICAgICBib29sIGhhZEFueUNoYW5nZWRCYWNraW5nU3Rv
cmUgPSBmYWxzZTsK
</data>
<flag name="commit-queue"
          id="435114"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417404</attachid>
            <date>2021-01-11 12:52:10 -0800</date>
            <delta_ts>2021-01-27 10:42:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220519-20210111225208.patch</filename>
            <type>text/plain</type>
            <size>28097</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNjExNDkyM2MxYjFlYWY4
ZThhNWNjZWVkNDhiYmMyNmUxMDQ2ZjQuLmUxYmRhNTU2MjgyNmI2YjRiOTViZGYyZTQwNDI1ZWI1
OWMwMDdkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDEtMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHR5cGUgc2VyaWFs
aXphdGlvbiBlbmNvZGVycyBhcmUgaW1wbGVtZW50ZWQgaW4gRW5jb2RlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhcml0aG1ldGlj
IHR5cGUgYW5kIGVudW0gdHlwZSBzZXJpYWxpemF0aW9uIGZyb20gRW5jb2RlciB0bworICAgICAg
ICBBcmd1bWVudENvZGVyLiBUaGlzIG1ha2VzIGl0IGEgYml0IHNpbXBsZXIgdG8gaW1wbGVtZW50
IG11bHRpcGxlCisgICAgICAgIEVuY29kZXIgdHlwZXMsIGFzIHRoZSBzZXJpYWxpemF0aW9uIGNv
ZGUgaXMgY29uc2lzdGVudGx5IHNlcGFyYXRlCisgICAgICAgIGZyb20gdGhlIEVuY29kZXIuIFdl
YkdMIFNITSBJUEMgc3RyZWFtIGV4dGVuc2lvbnMgd291bGQgZXZlbnR1YWxseQorICAgICAgICBu
ZWVkIGEgc2ltaWxhciBidXQgc2xpZ2h0bHkgZGlmZmVyZW50IEVuY29kZXIuCisKKyAgICAgICAg
U2luY2UgRW5jb2RlciBpcyBpbnRlbnRpb25hbGx5IGNvdXBsZWQgd2l0aCB0aGUgRGVjb2Rlciwg
ZG8gdGhlCisgICAgICAgIGNvcnJlc3BvbmlkbmcgbW9kaWZpY2F0aW9uIHRvIERlY29kZXIgY2xh
c3MgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgIFJlaW1wbGVtZW50IEhhc3tMZWdhY3ksTW9k
ZXJufURlY29kZXIgZm9yIGVhc2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
KHBlcmhhcHM/KSBpbiBhIGJpdCBzaW1wbGVyIHRlcm1zLgorCisgICAgICAgIEVuY29kZXI6Om9w
ZXJhdG9yPDwoKSBhbmQgRW5jb2Rlcjo6ZW5jb2RlKCkgd2VyZSB0aGUgc2FtZSBmdW5jdGlvbi4K
KyAgICAgICAgUmVtb3ZlIEVuY29kZXI6OmVuY29kZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGV0YWlsOjpUZXN0TGVnYWN5RGVjb2Rlcik6CisgICAgICAgIChJUEM6OkRldGFp
bDo6VGVzdE1vZGVybkRlY29kZXIpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6b3BlcmF0
b3I+Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAqIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVUlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1VJ
U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNS
ZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIxLTAxLTExICBSaW5pIFBhdGVsICA8cmluaV9w
YXRlbEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBH
cmFwaGljc0NvbnRleHRHTCBhbmQgRXh0ZW5zaW9uc0dMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggMDQzNGJmODgwOWE3
ZWIzZWNjMThlOGY2NTBjYzAyNzhhZTZlYjUxNy4uNDdlMDY1NzM1YWRjNWJhMGMxOTNjY2QyNmE0
NjNjZTQ3NjYxMWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
fQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXIuaAppbmRleCA0ZjI0NTgwNzc4MTliMjFlZWIwMDE5NzNjMjI4ZDM5MWRkODVlNzI0Li4z
MjA3NmFmZDAyYTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC0yNSw5MCArMjUsODUgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJ
bnRDb25zdHJhaW50OwotY2xhc3MgRG91YmxlQ29uc3RyYWludDsKLWNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1zdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Ci19Ci0KIG5hbWVzcGFjZSBJUEMgewor
bmFtZXNwYWNlIERldGFpbCB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJPiBhdXRv
IFRlc3RMZWdhY3lEZWNvZGVyKGludCkgLT4gZGVjbHR5cGUoSTo6ZGVjb2RlKHN0ZDo6ZGVjbHZh
bDxEZWNvZGVyJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSwgc3RkOjp0cnVlX3R5cGUgeyB9KTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEk+IGF1dG8gVGVzdExlZ2FjeURlY29kZXIo
bG9uZykgLT4gc3RkOjpmYWxzZV90eXBlOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
ST4gYXV0byBUZXN0TW9kZXJuRGVjb2RlcihpbnQpIC0+IGRlY2x0eXBlKEk6OmRlY29kZShzdGQ6
OmRlY2x2YWw8RGVjb2RlciY+KCkpLCBzdGQ6OnRydWVfdHlwZSB7IH0pOwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgST4gYXV0byBUZXN0TW9kZXJuRGVjb2Rlcihsb25nKSAtPiBzdGQ6
OmZhbHNlX3R5cGU7Cit9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJID0gVD4gc3Ry
dWN0IEhhc0xlZ2FjeURlY29kZXIgOiBkZWNsdHlwZShEZXRhaWw6OlRlc3RMZWdhY3lEZWNvZGVy
PFQsIEk+KDApKSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJID0gVD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIEhhc0xlZ2FjeURlY29kZXJWID0gSGFzTGVnYWN5RGVjb2RlcjxU
LCBJPjo6dmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJID0gVD4gc3RydWN0
IEhhc01vZGVybkRlY29kZXIgOiBkZWNsdHlwZShEZXRhaWw6OlRlc3RNb2Rlcm5EZWNvZGVyPFQs
IEk+KDApKSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJID0gVD4gaW5saW5l
IGNvbnN0ZXhwciBib29sIEhhc01vZGVybkRlY29kZXJWID0gSGFzTW9kZXJuRGVjb2RlcjxULCBJ
Pjo6dmFsdWU7CiAKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotCi10ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBVc2VzTW9kZXJuRGVjb2RlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWNsYXNzIFVzZXNN
b2Rlcm5EZWNvZGVyIHsKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVD4gc3Ry
dWN0IEhlbHBlcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVj
ayhIZWxwZXI8T3B0aW9uYWw8VT4gKCopKERlY29kZXImKSwgJlQ6OmRlY29kZT4qKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDE2X3QgY2hlY2soLi4uKTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVja0FyZ3VtZW50Q29kZXIoSGVscGVy
PE9wdGlvbmFsPFU+ICgqKShEZWNvZGVyJiksICZBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGU+Kik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQxNl90IGNoZWNrQXJndW1lbnRD
b2RlciguLi4pOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENv
ZGVyVmFsdWUgPSBzaXplb2YoY2hlY2s8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBhcmd1bWVudENvZGVyVmFsdWUgfHwg
c2l6ZW9mKGNoZWNrQXJndW1lbnRDb2RlcjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3Qp
OwotfTsKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgotY2xhc3MgVXNlc01vZGVy
bkRlY29kZXI8c3RkOjp0dXBsZTxUeXBlcy4uLj4+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1
bWVudENvZGVyVmFsdWUgPSB0cnVlOwotfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgeworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUJiB0KQorICAgIHsKKyAgICAgICAgdC5lbmNvZGUoZW5j
b2Rlcik7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotY2xhc3MgVXNlc0xlZ2FjeURl
Y29kZXIgewotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUPiBzdHJ1Y3QgSGVs
cGVyOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrKEhlbHBl
cjxib29sICgqKShEZWNvZGVyJiwgVSYpLCAmVDo6ZGVjb2RlPiopOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVjayguLi4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8Ym9vbCAoKiko
RGVjb2RlciYsIFUmKSwgJkFyZ3VtZW50Q29kZXI8VD46OmRlY29kZT4qKTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDE2X3QgY2hlY2tBcmd1bWVudENvZGVyKC4uLik7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFyZ3VtZW50Q29kZXJWYWx1ZSA9IHNp
emVvZihjaGVjazxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB2YWx1ZSA9IGFyZ3VtZW50Q29kZXJWYWx1ZSB8fCBzaXplb2YoY2hlY2tB
cmd1bWVudENvZGVyPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7Ci19OworICAgIHN0
YXRpYyBPcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNvZGVyVjxUPikKKyAgICAgICAgICAgIHJldHVybiBU
OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVCB0OworICAg
ICAgICAgICAgaWYgKFQ6OmRlY29kZShkZWNvZGVyLCB0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdDsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlPgotY2xhc3MgRGVmYXVsdERlY29kZXJWYWx1
ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENvZGVyVmFs
dWUgPSBCb29sVHlwZTo6dmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0g
Qm9vbFR5cGU6OnZhbHVlOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgVCYgdCkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwcihI
YXNMZWdhY3lEZWNvZGVyVjxUPikKKyAgICAgICAgICAgIHJldHVybiBUOjpkZWNvZGUoZGVjb2Rl
ciwgdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgT3B0aW9uYWw8VD4gb3B0aW9uYWwg
PSBUOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgICAgICBpZiAoIW9wdGlvbmFsKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHQgPSBXVEZNb3ZlKCpvcHRpb25h
bCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KIH07CiAKLS8v
IFJlc291cmNlUmVzcG9uc2VCYXNlIGhhcyB0aGUgbGVnYWN5IGRlY29kZSB0ZW1wbGF0ZSwgbm90
IFJlc291cmNlUmVzcG9uc2UuCi10ZW1wbGF0ZTw+IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U+IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0
ZDo6ZmFsc2VfdHlwZT4geyB9OwotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxz
dGQ6OnRydWVfdHlwZT4geyB9OwotCi0vLyBJbnRDb25zdHJhaW50IGFuZCBEb3VibGVDb25zdHJh
aW50IGhhdmUgdGhlaXIgbGVnYWN5IGRlY29kZXIgdGVtcGxhdGVzIGluIE51bWVyaWNDb25zdHJh
aW50LgotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTW9kZXJuRGVjb2RlcjxXZWJDb3JlOjpJbnRDb25z
dHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OmZhbHNlX3R5cGU+IHsg
fTsKLXRlbXBsYXRlPD4gY2xhc3MgVXNlc0xlZ2FjeURlY29kZXI8V2ViQ29yZTo6SW50Q29uc3Ry
YWludD4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjp0cnVlX3R5cGU+IHsgfTsK
LXRlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6RG91YmxlQ29uc3Ry
YWludD4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpmYWxzZV90eXBlPiB7IH07
Ci10ZW1wbGF0ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNvcmU6OkRvdWJsZUNvbnN0
cmFpbnQ+IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1ZV90eXBlPiB7IH07
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFQmIHQpCisgICAgc3RhdGljIE9wdGlvbmFsPFQ+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgdC5lbmNvZGUoZW5jb2Rlcik7
CisgICAgICAgIFQgcmVzdWx0OworICAgICAgICBpZiAoZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnJlc3VsdCksIHNpemVvZihUKSwgYWxp
Z25vZihUKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH0KK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3Rk
OjplbmFibGVfaWZfdDxVc2VzTGVnYWN5RGVjb2RlcjxVPjo6YXJndW1lbnRDb2RlclZhbHVlPiog
PSBudWxscHRyPiBXQVJOX1VOVVNFRF9SRVRVUk4KLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVSYgdSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBUIHZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFU6OmRlY29kZShkZWNvZGVyLCB1KTsKKyAgICAgICAgQVNTRVJU
KFdURjo6aXNWYWxpZEVudW08VD4oV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSkp
KTsKKyAgICAgICAgZW5jb2RlciA8PCBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVl
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZf
dDxVc2VzTW9kZXJuRGVjb2RlcjxVPjo6YXJndW1lbnRDb2RlclZhbHVlPiogPSBudWxscHRyPgot
ICAgIHN0YXRpYyBPcHRpb25hbDxVPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0
aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gVTo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBPcHRpb25hbDxzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PFQ+PiB2YWx1ZTsKKyAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICAgICAg
aWYgKHZhbHVlICYmIFdURjo6aXNWYWxpZEVudW08VD4oKnZhbHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUPigqdmFsdWUpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCmluZGV4IGUzOGJjMWM2MGFmNmRjZjAzNjk2NWFhNzhhYWRiZDZkOGQ0YjYyNjIuLjA0M2Y4
N2QyZmY5MmU5MzgzNTc0N2JlZmM4OTJhMDdkMTAxNjNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjUsOSArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBcnJheVJlZmVy
ZW5jZS5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRBcml0aG1ldGljLmg+CkBAIC03Nyw3ICs3Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1p
CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlS
ZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVy
ZW5jZS5zaXplKCkpKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
YXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXpl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRh
dGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNTExNmI3NDQyZDNkYmJm
YzAyYmUwMDBkZjNjMGJjYzRlNzJkNzQ0ZS4uYzA0YWNmODgwNDUxMzZhNWQ0MDllYjAxNzcwODNm
YjY3NmQ0MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAt
NTA1LDcgKzUwNSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiAgICAgQ09NUElMRV9BU1NF
UlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgIGVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKyAgICAqZW5jb2RlciA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVu
Y29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC01MjcsOCArNTI3LDggQEAgdm9pZCBDb25uZWN0
aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxl
ciwgdWludDY0X3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAgVDo6Y2FuY2VsUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0sIENvbXBsZXRpb25IYW5kbGVyQ2FsbFRo
cmVhZDo6TWFpblRocmVhZCkpOwotICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKLSAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgKmVuY29kZXIgPDwg
bGlzdGVuZXJJRDsKKyAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgIHNl
bmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKIH0KIApAQCAtNTY1LDcg
KzU2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlCiAgICAgfQogCiAgICAgLy8gRW5jb2Rl
IHRoZSByZXN0IG9mIHRoZSBpbnB1dCBhcmd1bWVudHMuCi0gICAgZW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UuYXJndW1lbnRzKCkpOworICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7
CiAKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdl
KHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9u
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggOGE5NzA0ODgwYzgyOWM1
ZjUwMzE1MDM1NWY3MTU0YmMxYmZjZjI4OS4uNjY5ODViYzM4N2Q3NDM5MTM3MDFiMTE3YjkxODAw
YjlhMjc3MWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMjUsMTEg
KzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAj
aW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDQsNiArNDIsMTAgQEAgY2xh
c3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVp
bnQ4X3Q7CiAKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBIYXNMZWdhY3lEZWNvZGVy
OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgSGFzTW9kZXJuRGVjb2RlcjsK
KwogY2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC03Nyw0NSArNzksMzcgQEAgcHVibGljOgogCiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFs
aWdubWVudCk7CiAKLSAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJl
IHdpbGwgb25seSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBcmd1bWVudERlY29k
ZXIgb2JqZWN0LgorICAgIC8vIFRoZSBkYXRhIGluIHRoZSByZXR1cm5lZCBwb2ludGVyIGhlcmUg
d2lsbCBvbmx5IGJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIERlY29kZXIgb2JqZWN0
LgogICAgIC8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgogICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBjb25zdCB1aW50OF90KiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3QsIHNp
emVfdCBhbGlnbm1lbnQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShUJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBkZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi0g
ICAgewotICAgICAgICBUIHJlc3VsdDsKLSAgICAgICAgaWYgKGRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmcmVzdWx0KSwgc2l6ZW9mKFQpLCBhbGlnbm9m
KFQpKSkKLSAgICAgICAgICAgIG9wdGlvbmFsID0gcmVzdWx0OwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgotICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShFJiBlbnVtVmFsdWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoVCYgdCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4gdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2RlKHZhbHVl
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRF
bnVtPEU+KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBlbnVt
VmFsdWUgPSBzdGF0aWNfY2FzdDxFPih2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB1c2luZyBJbXBsID0gQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD47CisgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNM
ZWdhY3lEZWNvZGVyPFQsIEltcGw+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBJbXBsOjpk
ZWNvZGUoKnRoaXMsIHQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPFQ+
IG9wdGlvbmFsOworICAgICAgICAgICAgKnRoaXMgPj4gb3B0aW9uYWw7CisgICAgICAgICAgICBp
ZiAoIW9wdGlvbmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHQgPSBXVEZNb3ZlKCpvcHRpb25hbCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPEU+JiBvcHRpb25hbCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHQpCiAgICAgewotICAgICAgICBPcHRp
b25hbDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+PiB2YWx1ZTsKLSAgICAgICAgKnRoaXMgPj4g
dmFsdWU7Ci0gICAgICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkp
Ci0gICAgICAgICAgICBvcHRpb25hbCA9IHN0YXRpY19jYXN0PEU+KCp2YWx1ZSk7CisgICAgICAg
IHVzaW5nIEltcGwgPSBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1v
dmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVy
bkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKQorICAgICAgICAgICAgdCA9IEltcGw6OmRlY29kZSgq
dGhpcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVCB2OworICAgICAgICAgICAgaWYg
KEltcGw6OmRlY29kZSgqdGhpcywgdikpCisgICAgICAgICAgICAgICAgdCA9IFdURk1vdmUodik7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApAQCAtMTMwLDQyICsx
MjQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKGFsaWdub2YoVCksIG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZh
bHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlICYmIFVzZXNMZWdhY3lEZWNvZGVy
PFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoVCYgdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUo
KnRoaXMsIHQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWUgJiYgIVVzZXNMZWdhY3lEZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoVCYgdCkKLSAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPFQ+IG9wdGlvbmFsOwotICAgICAgICAqdGhpcyA+PiBvcHRpb25hbDsKLSAgICAgICAgaWYg
KCFvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdCA9IFdURk1v
dmUoKm9wdGlvbmFsKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxVc2VzTW9kZXJuRGVjb2RlcjxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+Ci0gICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgdCkK
LSAgICB7Ci0gICAgICAgIHQgPSBBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMpOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJp
dGhtZXRpYzxUPjo6dmFsdWUgJiYgIVVzZXNNb2Rlcm5EZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLSAg
ICB7Ci0gICAgICAgIFQgdDsKLSAgICAgICAgaWYgKEFyZ3VtZW50Q29kZXI8VD46OmRlY29kZSgq
dGhpcywgdCkpIHsKLSAgICAgICAgICAgIG9wdGlvbmFsID0gV1RGTW92ZSh0KTsKLSAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotICAgICAgICBvcHRpb25hbCA9IFdURjo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQogICAgIGJvb2wgcmVtb3ZlQXR0
YWNobWVudChBdHRhY2htZW50Jik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0lQQ0RlY29k
ZXIgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDQyMTJkNjZj
Mzc4OGRlNzYyNTYyNmZmMzBhNTI1YjdiNTAxODA5YTAuLjcyZWIzM2Q5MDE2MDZkMjg5YzcwZDhj
MTNiZGM0MzdlZmEzYTZlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAg
LTI1LDExICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJndW1lbnRDb2Rl
ci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
ICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRN
ZW51SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM3LDkgKzM1LDEw
IEBACiBuYW1lc3BhY2UgSVBDIHsKIAogZW51bSBjbGFzcyBNZXNzYWdlRmxhZ3MgOiB1aW50OF90
OwotZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBTaG91bGRE
aXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKIAordGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKwogY2xhc3MgRW5jb2RlciBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02MSwzMyAr
NjAsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlICYmICFz
dGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICB2b2lkIGVuY29kZShU
JiYgdCkKLSAgICB7Ci0gICAgICAgIEFyZ3VtZW50Q29kZXI8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZT46OmVu
Y29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChFJiYgZW51bVZhbHVlKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlw
ZTxFPihlbnVtVmFsdWUpKSk7Ci0gICAgICAgIGVuY29kZShXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlPEU+KGVudW1WYWx1ZSkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIEVuY29kZXIm
IG9wZXJhdG9yPDwoVCYmIHQpCiAgICAgewotICAgICAgICBlbmNvZGUoc3RkOjpmb3J3YXJkPFQ+
KHQpKTsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVt
b3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+
KHQpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KLSAgICB2b2lkIGVuY29kZShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZihUKSwgYWxpZ25vZihUKSk7Ci0gICAgfQotCiAgICAgdWludDhfdCogYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQogCkBAIC0xMTcsMTMgKzk2LDYgQEAgcHJpdmF0ZToK
IAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KLSAgICB2b2lkIGVuY29kZShFIGVudW1WYWx1ZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8
RT4oZW51bVZhbHVlKSkpOwotICAgICAgICBlbmNvZGUoV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlw
ZTxFPihlbnVtVmFsdWUpKTsKLSAgICB9Ci0KICAgICBib29sIGhhc0F0dGFjaG1lbnRzKCkgY29u
c3Q7CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IGU4YjU0NmIwYmI3NGZmMzZhMDY4NDgwZjA1MWZjZDY4
NzFhYmJiYzUuLjdjZGFjZTc2NTRlMDRjNTg4NTk4MTJjNzMzNTBhNGE0MGMyNzgwY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlz
IHN5bmMhIik7CiAKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihV
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2Fn
ZS5hcmd1bWVudHMoKSk7CisgICAgICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwg
c2VuZE9wdGlvbnMpOwogICAgIH0KQEAgLTkyLDggKzkyLDggQEAgcHVibGljOgogCiAgICAgICAg
IGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3Rp
bmF0aW9uSUQpOwogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNS
ZXBseUhhbmRsZXJJRCgpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7Ci0g
ICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKyAgICAgICAgKmVu
Y29kZXIgPDwgbGlzdGVuZXJJRDsKKyAgICAgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVu
dHMoKTsKICAgICAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMs
IHt7IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBD
OjpEZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChkZWNvZGVyICYm
IGRlY29kZXItPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29k
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCBjMWQ5NjY1OTVkMjlj
ODM0NDQ1MzcyZmQ0OWNiNTk0OWQzNzRhNjVjLi4zZjUxNzIzMTgwMTI3ODI1MmYwNmZlNTIxOTkx
MmIxNDA1Zjg5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpvcGVuKCkKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2Fn
ZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KICAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6SW5p
dGlhbGl6ZUNvbm5lY3Rpb24sIDApOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQo
bV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKKyAgICAgICAgKmVuY29k
ZXIgPDwgTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwog
CiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2luLmNwcAppbmRleCBiMGFjODFjZjQwMWJkOGFj
MDM0Y2IwMDI4YmY5ODA1YzAwNTAzMjllLi4wMDRhY2JhYzM3ZTQ1ODM5MGVhZTZlOWQ0NmYwNzlh
NTA4OWE4MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQXR0
YWNobWVudFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0F0dGFj
aG1lbnRXaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVu
Y29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCisKIAogLy8gRklYTUU6IFRoaXMg
Y29kZSBpcyBkdXBsaWNhdGVkIHdpdGggU2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1wbGVtZW50YXRp
b24gZm9yIFdpbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1No
YXJlZE1lbW9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwCmluZGV4IDI3MTMxODliODc5MTgyNmU0YjVlMTczNzY3NmZjYTI2ZWE5
OTJhMjcuLjM4Y2M1ODRlZTRiNmU5ODIwOTI3ZTFiMTk4YmVjYmNlNDBiY2ExZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCkBA
IC0yNiw4ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVt
b3J5LmgiCiAKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1hY2hQb3J0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCmluZGV4IDExYjFkOGEy
MjYxOWM1MTg1ZGFlNDYwOGQwMTA1N2FkNDZlYzljNzguLjI0Y2ZkZDdlMDJkZDQ3ZTM1NDA0ZjFk
YjRjYjNiZDZmY2Y3NmFhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L1NoYXJlZE1lbW9yeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hh
cmVkTWVtb3J5V2luLmNwcApAQCAtMjcsOCArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1
ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbQppbmRleCBkYzk5Y2QxNjllMTQ0N2EwNDM5MjM1NjkwYTE1MjY2YjYxYTkwYWQy
Li41NjZkYjA2NWQzM2YzMjQ1ZjdiMTgwMGI2MjdlZWM5MmY1ZGUwMDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExh
eWVyUHJvcGVydGkKIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29k
ZXIuZW5jb2RlKGNoYW5nZWRQcm9wZXJ0aWVzKTsKKyAgICBlbmNvZGVyIDw8IGNoYW5nZWRQcm9w
ZXJ0aWVzOwogCiAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgTmFtZUNoYW5nZWQpCiAgICAg
ICAgIGVuY29kZXIgPDwgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcAppbmRleCBi
OTRkNjEzZWE0NGNkZmI4YWViNmMxZmI4YTVmZTFkOTIxMTk3YzA3Li4wNmRiYzg3MjI1NGRmY2I1
MDllZWQxMmQwNjY2NDk4ZmE3NjZlM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3Bw
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFJlbW90ZVNjcm9s
bGluZ1VJU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci5lbmNvZGUobV9jaGFuZ2VzKTsKKyAgICBlbmNvZGVyIDw8IG1fY2hhbmdlczsKIAog
ICAgIGlmIChtX2NoYW5nZXMuY29udGFpbnMoQ2hhbmdlczo6U2Nyb2xsU25hcE5vZGVzKSkKICAg
ICAgICAgZW5jb2RlciA8PCBtX25vZGVzV2l0aEFjdGl2ZVNjcm9sbFNuYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDhjYTk3ZTZl
NTk3YmQ3MTEwYTBkNzM4ZTBjNGE3Yzg1NjAzYThhN2QuLjhiM2I4ZmNkOGI4MDZlOTVhN2Q4ZmM0
ZDY0NTQ5MzI4OTI3ZmE2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDwKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CisgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKIAogICAgIHJldHVy
biBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC0xODMs
OCArMTgzLDggQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBs
eShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGUKIAogICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwotICAgIGVuY29kZXItPmVuY29kZShtZXNz
YWdlLmFyZ3VtZW50cygpKTsKKyAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOworICAgICplbmNv
ZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNv
ZGVyKSwgc2VuZE9wdGlvbnMsIHt7IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoSVBDOjpEZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGRlY29kZXIgJiYgZGVjb2Rlci0+aXNWYWxpZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IDM2NTI5
NWE3Njg5YTIzZjZlODQ2MWZhMGFmZmU3NjQ3ZWJmNzFkZjIuLmQ5NTRmYzI2OTgzNDUwYTM2NTRm
MGFkZmZlODRlZTQ1MmE2Y2FhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC02NTEsNyArNjUxLDcgQEAgSlNWYWx1ZVJl
ZiBKU0lQQzo6c2VuZE1lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiB0aGkKICAgICBib29sIGhhc1JlcGx5ID0gISFtZXNzYWdlUmVwbHlBcmd1bWVu
dERlc2NyaXB0aW9ucyhtZXNzYWdlTmFtZSk7CiAgICAgaWYgKGhhc1JlcGx5KSB7CiAgICAgICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0g
ICAgICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKKyAgICAgICAgKmVuY29kZXIgPDwg
bGlzdGVuZXJJRDsKIAogICAgICAgICBKU09iamVjdFJlZiByZXNvbHZlOwogICAgICAgICBKU09i
amVjdFJlZiByZWplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZWI2YmQ4MzIxYmY1ODRlOTBmNDIwMWI3MjYwOTU1NmM4
N2U4OGIyNi4uMDNjZGUyODllM2E4N2RlN2I0M2UwOGI1MjlkZTc4MGExOGRhZTljMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpA
QCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0
ZVJlbmRlcmluZygpCiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5n
VHJhbnNhY3Rpb24pOwogICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpF
bmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0
TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICBjb21taXRF
bmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgKmNvbW1pdEVuY29kZXIg
PDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5n
IHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLgogICAgIGJvb2wgaGFkQW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418559</attachid>
            <date>2021-01-27 10:42:09 -0800</date>
            <delta_ts>2021-01-27 11:08:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220519-20210127204207.patch</filename>
            <type>text/plain</type>
            <size>28146</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzMTYxNjUxZjdiYzA0MTVh
YzFlMWE3ZDk2NmU0MTJlNmI4OTJjMzEuLjU3OWVhNDlhZTdhMDdjNDIyYjE2ZTk2NGFkM2JjOGE5
NWM4YTExZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDEtMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHR5cGUgc2VyaWFs
aXphdGlvbiBlbmNvZGVycyBhcmUgaW1wbGVtZW50ZWQgaW4gRW5jb2RlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhcml0aG1ldGlj
IHR5cGUgYW5kIGVudW0gdHlwZSBzZXJpYWxpemF0aW9uIGZyb20gRW5jb2RlciB0bworICAgICAg
ICBBcmd1bWVudENvZGVyLiBUaGlzIG1ha2VzIGl0IGEgYml0IHNpbXBsZXIgdG8gaW1wbGVtZW50
IG11bHRpcGxlCisgICAgICAgIEVuY29kZXIgdHlwZXMsIGFzIHRoZSBzZXJpYWxpemF0aW9uIGNv
ZGUgaXMgY29uc2lzdGVudGx5IHNlcGFyYXRlCisgICAgICAgIGZyb20gdGhlIEVuY29kZXIuIFdl
YkdMIFNITSBJUEMgc3RyZWFtIGV4dGVuc2lvbnMgd291bGQgZXZlbnR1YWxseQorICAgICAgICBu
ZWVkIGEgc2ltaWxhciBidXQgc2xpZ2h0bHkgZGlmZmVyZW50IEVuY29kZXIuCisKKyAgICAgICAg
U2luY2UgRW5jb2RlciBpcyBpbnRlbnRpb25hbGx5IGNvdXBsZWQgd2l0aCB0aGUgRGVjb2Rlciwg
ZG8gdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgbW9kaWZpY2F0aW9uIHRvIERlY29kZXIgY2xh
c3MgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgIFJlaW1wbGVtZW50IEhhc3tMZWdhY3ksTW9k
ZXJufURlY29kZXIgZm9yIGVhc2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
KHBlcmhhcHM/KSBpbiBhIGJpdCBzaW1wbGVyIHRlcm1zLgorCisgICAgICAgIEVuY29kZXI6Om9w
ZXJhdG9yPDwoKSBhbmQgRW5jb2Rlcjo6ZW5jb2RlKCkgd2VyZSB0aGUgc2FtZSBmdW5jdGlvbi4K
KyAgICAgICAgUmVtb3ZlIEVuY29kZXI6OmVuY29kZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGV0YWlsOjpUZXN0TGVnYWN5RGVjb2Rlcik6CisgICAgICAgIChJUEM6OkRldGFp
bDo6VGVzdE1vZGVybkRlY29kZXIpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6b3BlcmF0
b3I+Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAqIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVUlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1VJ
U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNS
ZXBseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIxLTAxLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRpYVNhbXBsZUN1cnNvcjo6c3RlcEluT3Jk
ZXJlZE1hcCBjYW4gaGFuZyB3aGVuIHN0ZXBwaW5nIHRvIHRoZSBlbmQgb2YgYSB0cmFjayB0aGF0
IGhhc24ndCBiZWVuIGZ1bGx5IHBhcnNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDA0MzRiZjg4MDlhN2ViM2VjYzE4
ZThmNjUwY2MwMjc4YWU2ZWI1MTcuLjQ3ZTA2NTczNWFkYzViYTBjMTkzY2NkMjZhNDYzY2U0NzY2
MTFjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0KIAogbmFt
ZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgK
aW5kZXggNGYyNDU4MDc3ODE5YjIxZWViMDAxOTczYzIyOGQzOTFkZDg1ZTcyNC4uMzIwNzZhZmQw
MmE4OThhMWUzOWRlMjgzZTEwMmI4NTk0N2Y4ZWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtMjUsOTAgKzI1LDg1IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW50Q29uc3Ry
YWludDsKLWNsYXNzIERvdWJsZUNvbnN0cmFpbnQ7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwotfQotCiBuYW1lc3BhY2UgSVBDIHsKK25hbWVzcGFj
ZSBEZXRhaWwgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgST4gYXV0byBUZXN0TGVn
YWN5RGVjb2RlcihpbnQpIC0+IGRlY2x0eXBlKEk6OmRlY29kZShzdGQ6OmRlY2x2YWw8RGVjb2Rl
ciY+KCksIHN0ZDo6ZGVjbHZhbDxUJj4oKSksIHN0ZDo6dHJ1ZV90eXBlIHsgfSk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJPiBhdXRvIFRlc3RMZWdhY3lEZWNvZGVyKGxvbmcpIC0+
IHN0ZDo6ZmFsc2VfdHlwZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEk+IGF1dG8g
VGVzdE1vZGVybkRlY29kZXIoaW50KSAtPiBkZWNsdHlwZShJOjpkZWNvZGUoc3RkOjpkZWNsdmFs
PERlY29kZXImPigpKSwgc3RkOjp0cnVlX3R5cGUgeyB9KTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEk+IGF1dG8gVGVzdE1vZGVybkRlY29kZXIobG9uZykgLT4gc3RkOjpmYWxzZV90
eXBlOworfQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNM
ZWdhY3lEZWNvZGVyIDogZGVjbHR5cGUoRGV0YWlsOjpUZXN0TGVnYWN5RGVjb2RlcjxULCBJPigw
KSkgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IGlubGluZSBjb25z
dGV4cHIgYm9vbCBIYXNMZWdhY3lEZWNvZGVyViA9IEhhc0xlZ2FjeURlY29kZXI8VCwgST46OnZh
bHVlOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNNb2Rl
cm5EZWNvZGVyIDogZGVjbHR5cGUoRGV0YWlsOjpUZXN0TW9kZXJuRGVjb2RlcjxULCBJPigwKSkg
eyB9OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IGlubGluZSBjb25zdGV4
cHIgYm9vbCBIYXNNb2Rlcm5EZWNvZGVyViA9IEhhc01vZGVybkRlY29kZXI8VCwgST46OnZhbHVl
OwogCi1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBBcmd1bWVudENvZGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgVXNlc01v
ZGVybkRlY29kZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1jbGFzcyBVc2VzTW9kZXJuRGVj
b2RlciB7Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQ+IHN0cnVjdCBIZWxw
ZXI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2soSGVscGVy
PE9wdGlvbmFsPFU+ICgqKShEZWNvZGVyJiksICZUOjpkZWNvZGU+Kik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQxNl90IGNoZWNrKC4uLik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2tBcmd1bWVudENvZGVyKEhlbHBlcjxPcHRpb25h
bDxVPiAoKikoRGVjb2RlciYpLCAmQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlPiopOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVja0FyZ3VtZW50Q29kZXIoLi4u
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZhbHVl
ID0gc2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gYXJndW1lbnRDb2RlclZhbHVlIHx8IHNpemVvZihj
aGVja0FyZ3VtZW50Q29kZXI8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsKLX07Ci0g
ICAgCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4KLWNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVy
PHN0ZDo6dHVwbGU8VHlwZXMuLi4+PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHZhbHVlID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2Rl
clZhbHVlID0gdHJ1ZTsKLX07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+
IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVCYgdCkKKyAgICB7CisgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwor
ICAgIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyIHsK
LXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVD4gc3RydWN0IEhlbHBlcjsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVjayhIZWxwZXI8Ym9vbCAo
KikoRGVjb2RlciYsIFUmKSwgJlQ6OmRlY29kZT4qKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgdWludDE2X3QgY2hlY2soLi4uKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgdWludDhfdCBjaGVja0FyZ3VtZW50Q29kZXIoSGVscGVyPGJvb2wgKCopKERlY29kZXIm
LCBVJiksICZBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGU+Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIHVpbnQxNl90IGNoZWNrQXJndW1lbnRDb2RlciguLi4pOwotcHVibGljOgot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENvZGVyVmFsdWUgPSBzaXplb2YoY2hl
Y2s8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdmFsdWUgPSBhcmd1bWVudENvZGVyVmFsdWUgfHwgc2l6ZW9mKGNoZWNrQXJndW1lbnRD
b2RlcjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOwotfTsKKyAgICBzdGF0aWMgT3B0
aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pCisgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2Rl
KGRlY29kZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQgdDsKKyAgICAgICAgICAg
IGlmIChUOjpkZWNvZGUoZGVjb2RlciwgdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHQ7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBCb29sVHlwZT4KLWNsYXNzIERlZmF1bHREZWNvZGVyVmFsdWVzIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZhbHVlID0gQm9v
bFR5cGU6OnZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IEJvb2xUeXBl
Ojp2YWx1ZTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFQmIHQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5
RGVjb2RlclY8VD4pCisgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPFQ+IG9wdGlvbmFsID0gVDo6ZGVj
b2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0ID0gV1RGTW92ZSgqb3B0aW9uYWwpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCi0vLyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSBoYXMgdGhlIGxlZ2FjeSBkZWNvZGUgdGVtcGxhdGUsIG5vdCBSZXNvdXJj
ZVJlc3BvbnNlLgotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTW9kZXJuRGVjb2RlcjxXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlPiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OmZhbHNl
X3R5cGU+IHsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgVXNlc0xlZ2FjeURlY29kZXI8V2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZT4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjp0cnVl
X3R5cGU+IHsgfTsKLQotLy8gSW50Q29uc3RyYWludCBhbmQgRG91YmxlQ29uc3RyYWludCBoYXZl
IHRoZWlyIGxlZ2FjeSBkZWNvZGVyIHRlbXBsYXRlcyBpbiBOdW1lcmljQ29uc3RyYWludC4KLXRl
bXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6SW50Q29uc3RyYWludD4g
OiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpmYWxzZV90eXBlPiB7IH07Ci10ZW1w
bGF0ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNvcmU6OkludENvbnN0cmFpbnQ+IDog
cHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1ZV90eXBlPiB7IH07Ci10ZW1wbGF0
ZTw+IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ+IDog
cHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6ZmFsc2VfdHlwZT4geyB9OwotdGVtcGxh
dGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50PiA6
IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OnRydWVfdHlwZT4geyB9OwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUpCisgICAgeworICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFs
dWUpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBUJiB0KQorICAgIHN0YXRpYyBPcHRpb25hbDxUPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOworICAgICAg
ICBUIHJlc3VsdDsKKyAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9Cit9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8VXNlc0xlZ2FjeURlY29kZXI8VT46OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVsbHB0
cj4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFUmIHUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEFyZ3VtZW50Q29kZXI8
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBVOjpkZWNvZGUoZGVjb2RlciwgdSk7CisgICAgICAgIEFTU0VSVChXVEY6Omlz
VmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CisgICAg
ICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01v
ZGVybkRlY29kZXI8VT46OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVsbHB0cj4KLSAgICBzdGF0
aWMgT3B0aW9uYWw8VT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIE9wdGlv
bmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFU6
OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgT3B0aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxUPj4gdmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICh2YWx1
ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPFQ+KCp2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4oKnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBmNWU0NWU0ZDVjZTE5NDE1OTJkNDkwMWZmOGZlNmI4ZWMzNGRkYTAwLi4yMGViMTdhMGZkODI2
MGQ0MGJlYzdmY2RhYWVhMjNiYzVlODY1ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIK
LSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgpAQCAtNzcsNyArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaQogICAgIHVz
aW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNl
RHluYW1pY0V4dGVudD47CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewotICAgICAg
ICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6
ZSgpKSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVm
ZXJlbmNlLnNpemUoKSk7CiAgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBh
cnJheVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDUxMTZiNzQ0MmQzZGJiZmMwMmJlMDAw
ZGYzYzBiY2M0ZTcyZDc0NGUuLmMwNGFjZjg4MDQ1MTM2YTVkNDA5ZWIwMTc3MDgzZmI2NzZkNDE1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTUwNSw3ICs1
MDUsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogICAgIENPTVBJTEVfQVNTRVJUKCFUOjpp
c1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1
bWVudHMoKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwg
c2VuZE9wdGlvbnMpOwogfQpAQCAtNTI3LDggKzUyNyw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2
NF90CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1h
aW5UaHJlYWQpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICplbmNvZGVyIDw8IGxpc3RlbmVy
SUQ7CisgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CiAKQEAgLTU2NSw3ICs1NjUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0
aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZQogICAgIH0KIAogICAgIC8vIEVuY29kZSB0aGUgcmVz
dCBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLgotICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFy
Z3VtZW50cygpKTsKKyAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogCiAgICAg
Ly8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVx
dWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDhhOTcwNDg4MGM4MjljNWY1MDMxNTAz
NTVmNzE1NGJjMWJmY2YyODkuLjY2OTg1YmMzODdkNzQzOTEzNzAxYjExN2I5MTgwMGI5YTI3NzFh
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTI1LDExICsyNSw5IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJp
bmdSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ0LDYgKzQyLDEwIEBAIGNsYXNzIEltcG9y
dGFuY2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOwordGVt
cGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgSGFzTGVnYWN5RGVjb2RlcjsKK3RlbXBs
YXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEhhc01vZGVybkRlY29kZXI7CisKIGNsYXNz
IERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNzcs
NDUgKzc5LDM3IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQp
OwogCi0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9u
bHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVj
dC4KKyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJlIHdpbGwgb25s
eSBiZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBEZWNvZGVyIG9iamVjdC4KICAgICAv
LyBSZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gY29u
c3QgdWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBzaXplX3QgYWxp
Z25tZW50KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoVCYgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVv
ZihUKSwgYWxpZ25vZihUKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgot
ICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQotICAgIHsKLSAg
ICAgICAgVCByZXN1bHQ7Ci0gICAgICAgIGlmIChkZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnJlc3VsdCksIHNpemVvZihUKSwgYWxpZ25vZihUKSkpCi0g
ICAgICAgICAgICBvcHRpb25hbCA9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19l
bnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRSYgZW51bVZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuZGVy
bHlpbmdfdHlwZV90PEU+IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghV1RGOjppc1ZhbGlkRW51bTxFPih2
YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZW51bVZhbHVlID0g
c3RhdGljX2Nhc3Q8RT4odmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdXNp
bmcgSW1wbCA9IEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5RGVj
b2RlcjxULCBJbXBsPjo6dmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSW1wbDo6ZGVjb2RlKCp0
aGlzLCB0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBPcHRpb25hbDxUPiBvcHRpb25h
bDsKKyAgICAgICAgICAgICp0aGlzID4+IG9wdGlvbmFsOworICAgICAgICAgICAgaWYgKCFvcHRp
b25hbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0ID0gV1RG
TW92ZSgqb3B0aW9uYWwpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxFPiYgb3B0aW9uYWwpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB0KQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFPj4gdmFsdWU7Ci0gICAgICAgICp0aGlzID4+IHZhbHVlOwot
ICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxFPigqdmFsdWUpKQotICAgICAg
ICAgICAgb3B0aW9uYWwgPSBzdGF0aWNfY2FzdDxFPigqdmFsdWUpOworICAgICAgICB1c2luZyBJ
bXBsID0gQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZV90PFQ+Piwgdm9pZD47CisgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNvZGVy
PFQsIEltcGw+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHQgPSBJbXBsOjpkZWNvZGUoKnRoaXMpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQgdjsKKyAgICAgICAgICAgIGlmIChJbXBsOjpk
ZWNvZGUoKnRoaXMsIHYpKQorICAgICAgICAgICAgICAgIHQgPSBXVEZNb3ZlKHYpOworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKQEAgLTEzMCw0MiArMTI0LDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihhbGln
bm9mKFQpLCBudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAh
c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSAmJiBVc2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQp
Ci0gICAgewotICAgICAgICByZXR1cm4gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzLCB0
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlICYm
ICFVc2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCi0gICAgewotICAgICAgICBPcHRpb25hbDxUPiBv
cHRpb25hbDsKLSAgICAgICAgKnRoaXMgPj4gb3B0aW9uYWw7Ci0gICAgICAgIGlmICghb3B0aW9u
YWwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHQgPSBXVEZNb3ZlKCpvcHRp
b25hbCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVybkRlY29kZXI8VD46OnZhbHVlPiogPSBu
dWxscHRyPgotICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHQpCi0gICAgewot
ICAgICAgICB0ID0gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVu
YWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8
VD46OnZhbHVlICYmICFVc2VzTW9kZXJuRGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0g
ICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi0gICAgewotICAg
ICAgICBUIHQ7Ci0gICAgICAgIGlmIChBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMsIHQp
KSB7Ci0gICAgICAgICAgICBvcHRpb25hbCA9IFdURk1vdmUodCk7Ci0gICAgICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgICAgIH0KLSAgICAgICAgb3B0aW9uYWwgPSBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KICAgICBib29sIHJlbW92ZUF0dGFjaG1lbnQo
QXR0YWNobWVudCYpOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENEZWNvZGVyID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCA0MjEyZDY2YzM3ODhkZTc2
MjU2MjZmZjMwYTUyNWI3YjUwMTgwOWEwLi43MmViMzNkOTAxNjA2ZDI4OWM3MGQ4YzEzYmRjNDM3
ZWZhM2E2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0yNSwxMSAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNp
bmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNyw5ICszNSwxMCBAQAogbmFt
ZXNwYWNlIElQQyB7CiAKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsKLWVudW0g
Y2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hX
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CiAKK3RlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI7CisKIGNsYXNzIEVuY29kZXIgZmluYWwgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjEsMzMgKzYwLDEzIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3RkOjppc19h
cml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJl
bmNlX3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgdm9pZCBlbmNvZGUoVCYmIHQpCi0g
ICAgewotICAgICAgICBBcmd1bWVudENvZGVyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU+OjplbmNvZGUoKnRo
aXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgot
ICAgIEVuY29kZXImIG9wZXJhdG9yPDwoRSYmIGVudW1WYWx1ZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51
bVZhbHVlKSkpOwotICAgICAgICBlbmNvZGUoV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxFPihl
bnVtVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9
IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBFbmNvZGVyJiBvcGVyYXRv
cjw8KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2RlKHN0ZDo6Zm9yd2FyZDxUPih0KSk7Cisg
ICAgICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CiAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+
Ci0gICAgdm9pZCBlbmNvZGUoVCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2Yo
VCksIGFsaWdub2YoVCkpOwotICAgIH0KLQogICAgIHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlclNpemU7IH0KIApAQCAtMTE3LDEzICs5Niw2IEBAIHByaXZhdGU6CiAKICAgICB1
aW50OF90KiBncm93KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgdm9pZCBlbmNvZGUoRSBlbnVtVmFsdWUpCi0gICAgewotICAgICAgICBBU1NF
UlQoV1RGOjppc1ZhbGlkRW51bTxFPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEU+KGVudW1W
YWx1ZSkpKTsKLSAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51
bVZhbHVlKSk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNBdHRhY2htZW50cygpIGNvbnN0OwogCiAg
ICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaAppbmRleCBlOGI1NDZiMGJiNzRmZjM2YTA2ODQ4MGYwNTFmY2Q2ODcxYWJiYmM1
Li43Y2RhY2U3NjU0ZTA0YzU4ODU5ODEyYzczMzUwYTRhNDBjMjc4MGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIp
OwogCiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1l
bnRzKCkpOworICAgICAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgICAg
ICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRp
b25zKTsKICAgICB9CkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklE
KTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5k
bGVySUQoKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwotICAgICAgICBl
bmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgICAgICplbmNvZGVyIDw8
IGxpc3RlbmVySUQ7CisgICAgICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAg
ICAgICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2Rl
ciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZGVjb2RlciAmJiBkZWNvZGVy
LT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggYzFkOTY2NTk1ZDI5YzgzNDQ0NTM3
MmZkNDljYjU5NDlkMzc0YTY1Yy4uM2Y1MTcyMzE4MDEyNzgyNTJmMDZmZTUyMTk5MTJiMTQwNWY4
OTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQpAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3Blbigp
CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNo
IGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCiAgICAgICAgIGF1
dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uLCAwKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2
ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgICplbmNvZGVyIDw8IE1h
Y2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKIAogICAgICAg
ICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAKaW5kZXggYjBhYzgxY2Y0MDFiZDhhYzAzNGNiMDAy
OGJmOTgwNWMwMDUwMzI5ZS4uMDA0YWNiYWMzN2U0NTgzOTBlYWU2ZTlkNDZmMDc5YTUwODlhODM0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0F0dGFjaG1lbnRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2lu
LmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKIAotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgi
CisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgorCiAKIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMg
ZHVwbGljYXRlZCB3aXRoIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltcGxlbWVudGF0aW9uIGZvciBX
aW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1v
cnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNv
Y29hLmNwcAppbmRleCAyNzEzMTg5Yjg3OTE4MjZlNGI1ZTE3Mzc2NzZmY2EyNmVhOTkyYTI3Li4z
OGNjNTg0ZWU0YjZlOTgyMDkyN2UxYjE5OGJlY2JjZTQwYmNhMWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApAQCAtMjYsOCAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWNoUG9y
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRleCAxMWIxZDhhMjI2MTljNTE4
NWRhZTQ2MDhkMDEwNTdhZDQ2ZWM5Yzc4Li4yNGNmZGQ3ZTAyZGQ0N2UzNTQwNGYxZGI0Y2IzYmQ2
ZmNmNzZhYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRN
ZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9y
eVdpbi5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRNZW1vcnkuaCIKIAotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNv
ZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KaW5kZXggMDJlYzMzZGEwM2U0MDA4M2UxNmI5ZjczYjAwOTQ1YjkxN2FhNzg1NC4uZDIzMzNl
OWM3ZGFiMjA2OTA4YmY3ZTY3NjA5MjA1MzRlNGY3YTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3Bl
cnRpCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29k
ZShjaGFuZ2VkUHJvcGVydGllcyk7CisgICAgZW5jb2RlciA8PCBjaGFuZ2VkUHJvcGVydGllczsK
IAogICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIE5hbWVDaGFuZ2VkKQogICAgICAgICBlbmNv
ZGVyIDw8IG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKaW5kZXggYjk0ZDYxM2Vh
NDRjZGZiOGFlYjZjMWZiOGE1ZmUxZDkyMTE5N2MwNy4uMDZkYmM4NzIyNTRkZmNiNTA5ZWVkMTJk
MDY2NjQ5OGZhNzY2ZTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBSZW1vdGVTY3JvbGxpbmdVSVN0
YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIu
ZW5jb2RlKG1fY2hhbmdlcyk7CisgICAgZW5jb2RlciA8PCBtX2NoYW5nZXM7CiAKICAgICBpZiAo
bV9jaGFuZ2VzLmNvbnRhaW5zKENoYW5nZXM6OlNjcm9sbFNuYXBOb2RlcykpCiAgICAgICAgIGVu
Y29kZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVTY3JvbGxTbmFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA0NjEzNmRlZWFlNDk4MThj
NGEwZjA5ZDRmMzY1YTM3YzU1YjRjMzk1Li5iMDM2NmQ1OGRlMjAwOTdiMzU5ZTM0YTJjNTMxOTVi
MTMxNTdjZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaApAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAg
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwor
ICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAKICAgICByZXR1cm4gc2VuZE1l
c3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogfQpAQCAtMTg4LDggKzE4OCw4
IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1l
c3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlCiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwotICAgIGVuY29k
ZXItPmVuY29kZShsaXN0ZW5lcklEKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1
bWVudHMoKSk7CisgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKKyAgICAqZW5jb2RlciA8PCBt
ZXNzYWdlLmFyZ3VtZW50cygpOwogICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNl
bmRPcHRpb25zLCB7eyBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKElQQzo6RGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNv
ZGVyICYmIGRlY29kZXItPmlzVmFsaWQoKSkKICAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgqZGVj
b2RlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCAzNjUyOTVhNzY4OWEy
M2Y2ZTg0NjFmYTBhZmZlNzY0N2ViZjcxZGYyLi5kOTU0ZmMyNjk4MzQ1MGEzNjU0ZjBhZGZmZTg0
ZWU0NTJhNmNhYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6
OnNlbmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RS
ZWYgdGhpCiAgICAgYm9vbCBoYXNSZXBseSA9ICEhbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlw
dGlvbnMobWVzc2FnZU5hbWUpOwogICAgIGlmIChoYXNSZXBseSkgewogICAgICAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwotICAgICAgICBl
bmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CisgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVy
SUQ7CiAKICAgICAgICAgSlNPYmplY3RSZWYgcmVzb2x2ZTsKICAgICAgICAgSlNPYmplY3RSZWYg
cmVqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCmluZGV4IDU1ZjU3ZTY5NmY3MTNmOGZkOWNkZTQ5ZjVmMWEzODcyNDk2NTA2NWIu
LmQ4MjA1NWZmMjA0NTRkNTVmOTU4YjRjNTA1NzdkOTg4NzliNjYwYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJp
bmcoKQogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNv
bW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0
aW9uKTsKICAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4o
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgY29tbWl0RW5jb2Rlci0+
ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICpjb21taXRFbmNvZGVyIDw8IG1lc3Nh
Z2UuYXJndW1lbnRzKCk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBm
bHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
ICAgICBib29sIGhhZEFueUNoYW5nZWRCYWNraW5nU3RvcmUgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418563</attachid>
            <date>2021-01-27 11:08:20 -0800</date>
            <delta_ts>2021-01-29 05:03:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220519-20210127210818.patch</filename>
            <type>text/plain</type>
            <size>28143</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzMTYxNjUxZjdiYzA0MTVh
YzFlMWE3ZDk2NmU0MTJlNmI4OTJjMzEuLmE0N2VkMGRjNTM3MDg3YTEzZjkwOWVlOTg5NGE3NDhj
ZjdkZDk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDEtMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHR5cGUgc2VyaWFs
aXphdGlvbiBlbmNvZGVycyBhcmUgaW1wbGVtZW50ZWQgaW4gRW5jb2RlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTW92ZSBhcml0aG1ldGljIHR5
cGUgYW5kIGVudW0gdHlwZSBzZXJpYWxpemF0aW9uIGZyb20gRW5jb2RlciB0bworICAgICAgICBB
cmd1bWVudENvZGVyLiBUaGlzIG1ha2VzIGl0IGEgYml0IHNpbXBsZXIgdG8gaW1wbGVtZW50IG11
bHRpcGxlCisgICAgICAgIEVuY29kZXIgdHlwZXMsIGFzIHRoZSBzZXJpYWxpemF0aW9uIGNvZGUg
aXMgY29uc2lzdGVudGx5IHNlcGFyYXRlCisgICAgICAgIGZyb20gdGhlIEVuY29kZXIuIFdlYkdM
IFNITSBJUEMgc3RyZWFtIGV4dGVuc2lvbnMgd291bGQgZXZlbnR1YWxseQorICAgICAgICBuZWVk
IGEgc2ltaWxhciBidXQgc2xpZ2h0bHkgZGlmZmVyZW50IEVuY29kZXIuCisKKyAgICAgICAgU2lu
Y2UgRW5jb2RlciBpcyBpbnRlbnRpb25hbGx5IGNvdXBsZWQgd2l0aCB0aGUgRGVjb2RlciwgZG8g
dGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgbW9kaWZpY2F0aW9uIHRvIERlY29kZXIgY2xhc3Mg
Zm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgIFJlaW1wbGVtZW50IEhhc3tMZWdhY3ksTW9kZXJu
fURlY29kZXIgZm9yIGVhc2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQgKHBl
cmhhcHM/KSBpbiBhIGJpdCBzaW1wbGVyIHRlcm1zLgorCisgICAgICAgIEVuY29kZXI6Om9wZXJh
dG9yPDwoKSBhbmQgRW5jb2Rlcjo6ZW5jb2RlKCkgd2VyZSB0aGUgc2FtZSBmdW5jdGlvbi4KKyAg
ICAgICAgUmVtb3ZlIEVuY29kZXI6OmVuY29kZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
YSByZWZhY3Rvci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAgICAg
KElQQzo6RGV0YWlsOjpUZXN0TGVnYWN5RGVjb2Rlcik6CisgICAgICAgIChJUEM6OkRldGFpbDo6
VGVzdE1vZGVybkRlY29kZXIpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAg
KElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6b3BlcmF0b3I+
Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAg
ICAqIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nVUlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1VJU3Rh
dGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBs
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6c2VuZE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Ojp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIxLTAxLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRpYVNhbXBsZUN1cnNvcjo6c3RlcEluT3JkZXJl
ZE1hcCBjYW4gaGFuZyB3aGVuIHN0ZXBwaW5nIHRvIHRoZSBlbmQgb2YgYSB0cmFjayB0aGF0IGhh
c24ndCBiZWVuIGZ1bGx5IHBhcnNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDA0MzRiZjg4MDlhN2ViM2VjYzE4ZThm
NjUwY2MwMjc4YWU2ZWI1MTcuLjQ3ZTA2NTczNWFkYzViYTBjMTkzY2NkMjZhNDYzY2U0NzY2MTFj
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0KIAogbmFtZXNw
YWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5k
ZXggNGYyNDU4MDc3ODE5YjIxZWViMDAxOTczYzIyOGQzOTFkZDg1ZTcyNC4uMzIwNzZhZmQwMmE4
OThhMWUzOWRlMjgzZTEwMmI4NTk0N2Y4ZWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtMjUsOTAgKzI1LDg1IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW50Q29uc3RyYWlu
dDsKLWNsYXNzIERvdWJsZUNvbnN0cmFpbnQ7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotc3Ry
dWN0IFZpZXdwb3J0QXJndW1lbnRzOwotfQotCiBuYW1lc3BhY2UgSVBDIHsKK25hbWVzcGFjZSBE
ZXRhaWwgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgST4gYXV0byBUZXN0TGVnYWN5
RGVjb2RlcihpbnQpIC0+IGRlY2x0eXBlKEk6OmRlY29kZShzdGQ6OmRlY2x2YWw8RGVjb2RlciY+
KCksIHN0ZDo6ZGVjbHZhbDxUJj4oKSksIHN0ZDo6dHJ1ZV90eXBlIHsgfSk7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBJPiBhdXRvIFRlc3RMZWdhY3lEZWNvZGVyKGxvbmcpIC0+IHN0
ZDo6ZmFsc2VfdHlwZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEk+IGF1dG8gVGVz
dE1vZGVybkRlY29kZXIoaW50KSAtPiBkZWNsdHlwZShJOjpkZWNvZGUoc3RkOjpkZWNsdmFsPERl
Y29kZXImPigpKSwgc3RkOjp0cnVlX3R5cGUgeyB9KTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEk+IGF1dG8gVGVzdE1vZGVybkRlY29kZXIobG9uZykgLT4gc3RkOjpmYWxzZV90eXBl
OworfQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNMZWdh
Y3lEZWNvZGVyIDogZGVjbHR5cGUoRGV0YWlsOjpUZXN0TGVnYWN5RGVjb2RlcjxULCBJPigwKSkg
eyB9OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IGlubGluZSBjb25zdGV4
cHIgYm9vbCBIYXNMZWdhY3lEZWNvZGVyViA9IEhhc0xlZ2FjeURlY29kZXI8VCwgST46OnZhbHVl
OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNNb2Rlcm5E
ZWNvZGVyIDogZGVjbHR5cGUoRGV0YWlsOjpUZXN0TW9kZXJuRGVjb2RlcjxULCBJPigwKSkgeyB9
OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9IFQ+IGlubGluZSBjb25zdGV4cHIg
Ym9vbCBIYXNNb2Rlcm5EZWNvZGVyViA9IEhhc01vZGVybkRlY29kZXI8VCwgST46OnZhbHVlOwog
Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBBcmd1bWVudENvZGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgVXNlc01vZGVy
bkRlY29kZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1jbGFzcyBVc2VzTW9kZXJuRGVjb2Rl
ciB7Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQ+IHN0cnVjdCBIZWxwZXI7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2soSGVscGVyPE9w
dGlvbmFsPFU+ICgqKShEZWNvZGVyJiksICZUOjpkZWNvZGU+Kik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVpbnQxNl90IGNoZWNrKC4uLik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2tBcmd1bWVudENvZGVyKEhlbHBlcjxPcHRpb25hbDxV
PiAoKikoRGVjb2RlciYpLCAmQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlPiopOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVja0FyZ3VtZW50Q29kZXIoLi4uKTsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZhbHVlID0g
c2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZhbHVlID0gYXJndW1lbnRDb2RlclZhbHVlIHx8IHNpemVvZihjaGVj
a0FyZ3VtZW50Q29kZXI8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsKLX07Ci0gICAg
Ci10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4KLWNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPHN0
ZDo6dHVwbGU8VHlwZXMuLi4+PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHZhbHVlID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZh
bHVlID0gdHJ1ZTsKLX07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyIHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgVCYgdCkKKyAgICB7CisgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOworICAg
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyIHsKLXBy
aXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVD4gc3RydWN0IEhlbHBlcjsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVjayhIZWxwZXI8Ym9vbCAoKiko
RGVjb2RlciYsIFUmKSwgJlQ6OmRlY29kZT4qKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgdWludDE2X3QgY2hlY2soLi4uKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgdWludDhfdCBjaGVja0FyZ3VtZW50Q29kZXIoSGVscGVyPGJvb2wgKCopKERlY29kZXImLCBV
JiksICZBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGU+Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIHVpbnQxNl90IGNoZWNrQXJndW1lbnRDb2RlciguLi4pOwotcHVibGljOgotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENvZGVyVmFsdWUgPSBzaXplb2YoY2hlY2s8
VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdmFsdWUgPSBhcmd1bWVudENvZGVyVmFsdWUgfHwgc2l6ZW9mKGNoZWNrQXJndW1lbnRDb2Rl
cjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOwotfTsKKyAgICBzdGF0aWMgT3B0aW9u
YWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBpZiBjb25zdGV4
cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pCisgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRl
Y29kZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQgdDsKKyAgICAgICAgICAgIGlm
IChUOjpkZWNvZGUoZGVjb2RlciwgdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHQ7CisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBCb29sVHlwZT4KLWNsYXNzIERlZmF1bHREZWNvZGVyVmFsdWVzIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRDb2RlclZhbHVlID0gQm9vbFR5
cGU6OnZhbHVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IEJvb2xUeXBlOjp2
YWx1ZTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFQmIHQpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5RGVj
b2RlclY8VD4pCisgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPFQ+IG9wdGlvbmFsID0gVDo6ZGVjb2Rl
KGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0ID0gV1RGTW92ZSgqb3B0aW9uYWwpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiB9OwogCi0vLyBSZXNvdXJjZVJl
c3BvbnNlQmFzZSBoYXMgdGhlIGxlZ2FjeSBkZWNvZGUgdGVtcGxhdGUsIG5vdCBSZXNvdXJjZVJl
c3BvbnNlLgotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTW9kZXJuRGVjb2RlcjxXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlPiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OmZhbHNlX3R5
cGU+IHsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgVXNlc0xlZ2FjeURlY29kZXI8V2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZT4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjp0cnVlX3R5
cGU+IHsgfTsKLQotLy8gSW50Q29uc3RyYWludCBhbmQgRG91YmxlQ29uc3RyYWludCBoYXZlIHRo
ZWlyIGxlZ2FjeSBkZWNvZGVyIHRlbXBsYXRlcyBpbiBOdW1lcmljQ29uc3RyYWludC4KLXRlbXBs
YXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6SW50Q29uc3RyYWludD4gOiBw
dWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpmYWxzZV90eXBlPiB7IH07Ci10ZW1wbGF0
ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNvcmU6OkludENvbnN0cmFpbnQ+IDogcHVi
bGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1ZV90eXBlPiB7IH07Ci10ZW1wbGF0ZTw+
IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ+IDogcHVi
bGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6ZmFsc2VfdHlwZT4geyB9OwotdGVtcGxhdGU8
PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50PiA6IHB1
YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OnRydWVfdHlwZT4geyB9OwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3N0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUp
LCBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEFyZ3VtZW50Q29kZXIgewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBUJiB0KQorICAgIHN0YXRpYyBPcHRpb25hbDxUPiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOworICAgICAgICBU
IHJlc3VsdDsKKyAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICB9Cit9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8VXNlc0xlZ2FjeURlY29kZXI8VT46OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVsbHB0cj4g
V0FSTl9VTlVTRURfUkVUVVJOCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFUmIHUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBVOjpkZWNvZGUoZGVjb2RlciwgdSk7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFs
aWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CisgICAgICAg
IGVuY29kZXIgPDwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVy
bkRlY29kZXI8VT46OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVsbHB0cj4KLSAgICBzdGF0aWMg
T3B0aW9uYWw8VT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIE9wdGlvbmFs
PFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFU6OmRl
Y29kZShkZWNvZGVyKTsKKyAgICAgICAgT3B0aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxU
Pj4gdmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSAm
JiBXVEY6OmlzVmFsaWRFbnVtPFQ+KCp2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oKnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBm
NWU0NWU0ZDVjZTE5NDE1OTJkNDkwMWZmOGZlNmI4ZWMzNGRkYTAwLi4yMGViMTdhMGZkODI2MGQ0
MGJlYzdmY2RhYWVhMjNiYzVlODY1ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXJyYXlSZWZlcmVuY2UuaCIKLSNp
bmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgpAQCAtNzcsNyArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaQogICAgIHVzaW5n
IEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD47CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewotICAgICAgICBl
bmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgp
KSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5UmVmZXJl
bmNlLnNpemUoKSk7CiAgICAgICAgIGlmICghYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheVJlZmVyZW5jZS5kYXRhKCkpLCBhcnJh
eVJlZmVyZW5jZS5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDUxMTZiNzQ0MmQzZGJiZmMwMmJlMDAwZGYz
YzBiY2M0ZTcyZDc0NGUuLmMwNGFjZjg4MDQ1MTM2YTVkNDA5ZWIwMTc3MDgzZmI2NzZkNDE1NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTUwNSw3ICs1MDUs
NyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5
bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAogICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVu
dHMoKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2Vu
ZE9wdGlvbnMpOwogfQpAQCAtNTI3LDggKzUyNyw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5U
aHJlYWQpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7
CisgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9u
OjpzZW5kU3luYyhUJiYgbWVzc2FnZQogICAgIH0KIAogICAgIC8vIEVuY29kZSB0aGUgcmVzdCBv
ZiB0aGUgaW5wdXQgYXJndW1lbnRzLgotICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3Vt
ZW50cygpKTsKKyAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogCiAgICAgLy8g
Tm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVz
dElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDhhOTcwNDg4MGM4MjljNWY1MDMxNTAzNTVm
NzE1NGJjMWJmY2YyODkuLjY2OTg1YmMzODdkNzQzOTEzNzAxYjExN2I5MTgwMGI5YTI3NzFhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTI1LDExICsyNSw5IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdS
ZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ0LDYgKzQyLDEwIEBAIGNsYXNzIEltcG9ydGFu
Y2VBc3NlcnRpb247CiBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOwordGVtcGxh
dGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgSGFzTGVnYWN5RGVjb2RlcjsKK3RlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEhhc01vZGVybkRlY29kZXI7CisKIGNsYXNzIERl
Y29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNzcsNDUg
Kzc5LDM3IEBAIHB1YmxpYzoKIAogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZp
eGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOwog
Ci0gICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9ubHkg
YmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4K
KyAgICAvLyBUaGUgZGF0YSBpbiB0aGUgcmV0dXJuZWQgcG9pbnRlciBoZXJlIHdpbGwgb25seSBi
ZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBEZWNvZGVyIG9iamVjdC4KICAgICAvLyBS
ZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3Qg
dWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBzaXplX3QgYWxpZ25t
ZW50KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoVCYgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihU
KSwgYWxpZ25vZihUKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgotICAg
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQotICAgIHsKLSAgICAg
ICAgVCByZXN1bHQ7Ci0gICAgICAgIGlmIChkZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJnJlc3VsdCksIHNpemVvZihUKSwgYWxpZ25vZihUKSkpCi0gICAg
ICAgICAgICBvcHRpb25hbCA9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
PEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRSYgZW51bVZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PEU+IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghV1RGOjppc1ZhbGlkRW51bTxFPih2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZW51bVZhbHVlID0gc3Rh
dGljX2Nhc3Q8RT4odmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdXNpbmcg
SW1wbCA9IEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4sIHZvaWQ+OworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5RGVjb2Rl
cjxULCBJbXBsPjo6dmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSW1wbDo6ZGVjb2RlKCp0aGlz
LCB0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBPcHRpb25hbDxUPiBvcHRpb25hbDsK
KyAgICAgICAgICAgICp0aGlzID4+IG9wdGlvbmFsOworICAgICAgICAgICAgaWYgKCFvcHRpb25h
bCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0ID0gV1RGTW92
ZSgqb3B0aW9uYWwpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51
bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDxFPiYgb3B0aW9uYWwpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB0KQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPj4gdmFsdWU7Ci0gICAgICAgICp0aGlzID4+IHZhbHVlOwotICAg
ICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxFPigqdmFsdWUpKQotICAgICAgICAg
ICAgb3B0aW9uYWwgPSBzdGF0aWNfY2FzdDxFPigqdmFsdWUpOworICAgICAgICB1c2luZyBJbXBs
ID0gQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PFQ+Piwgdm9pZD47CisgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNvZGVyPFQs
IEltcGw+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHQgPSBJbXBsOjpkZWNvZGUoKnRoaXMpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQgdjsKKyAgICAgICAgICAgIGlmIChJbXBsOjpkZWNv
ZGUoKnRoaXMsIHYpKQorICAgICAgICAgICAgICAgIHQgPSBXVEZNb3ZlKHYpOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKQEAgLTEzMCw0MiArMTI0LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihhbGlnbm9m
KFQpLCBudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSAmJiBVc2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFsdWU+
KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCi0g
ICAgewotICAgICAgICByZXR1cm4gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzLCB0KTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlICYmICFV
c2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCi0gICAgewotICAgICAgICBPcHRpb25hbDxUPiBvcHRp
b25hbDsKLSAgICAgICAgKnRoaXMgPj4gb3B0aW9uYWw7Ci0gICAgICAgIGlmICghb3B0aW9uYWwp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHQgPSBXVEZNb3ZlKCpvcHRpb25h
bCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVybkRlY29kZXI8VD46OnZhbHVlPiogPSBudWxs
cHRyPgotICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHQpCi0gICAgewotICAg
ICAgICB0ID0gQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJs
ZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46
OnZhbHVlICYmICFVc2VzTW9kZXJuRGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAg
RGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi0gICAgewotICAgICAg
ICBUIHQ7Ci0gICAgICAgIGlmIChBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMsIHQpKSB7
Ci0gICAgICAgICAgICBvcHRpb25hbCA9IFdURk1vdmUodCk7Ci0gICAgICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgICAgIH0KLSAgICAgICAgb3B0aW9uYWwgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KICAgICBib29sIHJlbW92ZUF0dGFjaG1lbnQoQXR0
YWNobWVudCYpOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENEZWNvZGVyID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCA0MjEyZDY2YzM3ODhkZTc2MjU2
MjZmZjMwYTUyNWI3YjUwMTgwOWEwLi43MmViMzNkOTAxNjA2ZDI4OWM3MGQ4YzEzYmRjNDM3ZWZh
M2E2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0yNSwxMSArMjUs
OSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNyw5ICszNSwxMCBAQAogbmFtZXNw
YWNlIElQQyB7CiAKIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdDsKLWVudW0gY2xh
c3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSA6IHVpbnQ4X3Q7CiAKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBl
bmFtZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI7CisKIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjEsMzMgKzYwLDEzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0
aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgdm9pZCBlbmNvZGUoVCYmIHQpCi0gICAg
ewotICAgICAgICBBcmd1bWVudENvZGVyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU+OjplbmNvZGUoKnRoaXMs
IHN0ZDo6Zm9yd2FyZDxUPih0KSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgotICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoRSYmIGVudW1WYWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChXVEY6OmlzVmFsaWRFbnVtPEU+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51bVZh
bHVlKSkpOwotICAgICAgICBlbmNvZGUoV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxFPihlbnVt
VmFsdWUpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8
KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2RlKHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAg
ICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CiAgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6
OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0g
ICAgdm9pZCBlbmNvZGUoVCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCks
IGFsaWdub2YoVCkpOwotICAgIH0KLQogICAgIHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlclNpemU7IH0KIApAQCAtMTE3LDEzICs5Niw2IEBAIHByaXZhdGU6CiAKICAgICB1aW50
OF90KiBncm93KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxw
dHI+Ci0gICAgdm9pZCBlbmNvZGUoRSBlbnVtVmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQo
V1RGOjppc1ZhbGlkRW51bTxFPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEU+KGVudW1WYWx1
ZSkpKTsKLSAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51bVZh
bHVlKSk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNBdHRhY2htZW50cygpIGNvbnN0OwogCiAgICAg
dm9pZCBlbmNvZGVIZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAppbmRleCBlOGI1NDZiMGJiNzRmZjM2YTA2ODQ4MGYwNTFmY2Q2ODcxYWJiYmM1Li43
Y2RhY2U3NjU0ZTA0YzU4ODU5ODEyYzczMzUwYTRhNDBjMjc4MGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIpOwog
CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRz
KCkpOworICAgICAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25z
KTsKICAgICB9CkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
ICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVy
SUQoKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwotICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisgICAgICAgICplbmNvZGVyIDw8IGxp
c3RlbmVySUQ7CisgICAgICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAg
ICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2Rlciog
ZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZGVjb2RlciAmJiBkZWNvZGVyLT5p
c1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggYzFkOTY2NTk1ZDI5YzgzNDQ0NTM3MmZk
NDljYjU5NDlkMzc0YTY1Yy4uM2Y1MTcyMzE4MDEyNzgyNTJmMDZmZTUyMTk5MTJiMTQwNWY4OTI1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbQpAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAg
ICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNv
bnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCiAgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25u
ZWN0aW9uLCAwKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgICplbmNvZGVyIDw8IE1hY2hQ
b3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKIAogICAgICAgICBp
bml0aWFsaXplU2VuZFNvdXJjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vQXR0YWNobWVudFdpbi5jcHAKaW5kZXggYjBhYzgxY2Y0MDFiZDhhYzAzNGNiMDAyOGJm
OTgwNWMwMDUwMzI5ZS4uMDA0YWNiYWMzN2U0NTgzOTBlYWU2ZTlkNDZmMDc5YTUwODlhODM0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0F0dGFjaG1lbnRXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2luLmNw
cApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF0dGFj
aG1lbnQuaCIKIAotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisj
aW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgorCiAKIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgZHVw
bGljYXRlZCB3aXRoIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltcGxlbWVudGF0aW9uIGZvciBXaW4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29h
LmNwcAppbmRleCAyNzEzMTg5Yjg3OTE4MjZlNGI1ZTE3Mzc2NzZmY2EyNmVhOTkyYTI3Li4zOGNj
NTg0ZWU0YjZlOTgyMDkyN2UxYjE5OGJlY2JjZTQwYmNhMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApAQCAtMjYsOCArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogCi0j
aW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWNoUG9ydC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRleCAxMWIxZDhhMjI2MTljNTE4NWRh
ZTQ2MDhkMDEwNTdhZDQ2ZWM5Yzc4Li4yNGNmZGQ3ZTAyZGQ0N2UzNTQwNGYxZGI0Y2IzYmQ2ZmNm
NzZhYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1v
cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdp
bi5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKIAotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVy
LmgiCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggMDJlYzMzZGEwM2U0MDA4M2UxNmI5ZjczYjAwOTQ1YjkxN2FhNzg1NC4uZDIzMzNlOWM3
ZGFiMjA2OTA4YmY3ZTY3NjA5MjA1MzRlNGY3YTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRp
CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZShj
aGFuZ2VkUHJvcGVydGllcyk7CisgICAgZW5jb2RlciA8PCBjaGFuZ2VkUHJvcGVydGllczsKIAog
ICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIE5hbWVDaGFuZ2VkKQogICAgICAgICBlbmNvZGVy
IDw8IG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKaW5kZXggYjk0ZDYxM2VhNDRj
ZGZiOGFlYjZjMWZiOGE1ZmUxZDkyMTE5N2MwNy4uMDZkYmM4NzIyNTRkZmNiNTA5ZWVkMTJkMDY2
NjQ5OGZhNzY2ZTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtMzMsNyAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBSZW1vdGVTY3JvbGxpbmdVSVN0YXRl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5j
b2RlKG1fY2hhbmdlcyk7CisgICAgZW5jb2RlciA8PCBtX2NoYW5nZXM7CiAKICAgICBpZiAobV9j
aGFuZ2VzLmNvbnRhaW5zKENoYW5nZXM6OlNjcm9sbFNuYXBOb2RlcykpCiAgICAgICAgIGVuY29k
ZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVTY3JvbGxTbmFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA0NjEzNmRlZWFlNDk4MThjNGEw
ZjA5ZDRmMzY1YTM3YzU1YjRjMzk1Li5iMDM2NmQ1OGRlMjAwOTdiMzU5ZTM0YTJjNTMxOTViMTMx
NTdjZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaApAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiAgICAg
Q09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCiAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGlu
YXRpb25JRCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAg
ICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAKICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogfQpAQCAtMTg4LDggKzE4OCw4IEBA
IHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3Nh
Z2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlCiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwotICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CisgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKKyAgICAqZW5jb2RlciA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpOwogICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zLCB7eyBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKElQQzo6RGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNvZGVy
ICYmIGRlY29kZXItPmlzVmFsaWQoKSkKICAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgqZGVjb2Rl
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCAzNjUyOTVhNzY4OWEyM2Y2
ZTg0NjFmYTBhZmZlNzY0N2ViZjcxZGYyLi5kOTU0ZmMyNjk4MzQ1MGEzNjU0ZjBhZGZmZTg0ZWU0
NTJhNmNhYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnNl
bmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYg
dGhpCiAgICAgYm9vbCBoYXNSZXBseSA9ICEhbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlv
bnMobWVzc2FnZU5hbWUpOwogICAgIGlmIChoYXNSZXBseSkgewogICAgICAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwotICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CisgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7
CiAKICAgICAgICAgSlNPYmplY3RSZWYgcmVzb2x2ZTsKICAgICAgICAgSlNPYmplY3RSZWYgcmVq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCmluZGV4IDU1ZjU3ZTY5NmY3MTNmOGZkOWNkZTQ5ZjVmMWEzODcyNDk2NTA2NWIuLmQ4
MjA1NWZmMjA0NTRkNTVmOTU4YjRjNTA1NzdkOTg4NzliNjYwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTM4Niw3ICsz
ODYsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmco
KQogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1p
dExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9u
KTsKICAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6
bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgY29tbWl0RW5jb2Rlci0+ZW5j
b2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICpjb21taXRFbmNvZGVyIDw8IG1lc3NhZ2Uu
YXJndW1lbnRzKCk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVz
aGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KICAg
ICBib29sIGhhZEFueUNoYW5nZWRCYWNraW5nU3RvcmUgPSBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>