<?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>232915</bug_id>
          
          <creation_ts>2021-11-09 17:07:18 -0800</creation_ts>
          <short_desc>REGRESSION(r285536): causes API test crashes</short_desc>
          <delta_ts>2021-11-09 17:10:29 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232220</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813421</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-11-09 17:07:18 -0800</bug_when>
    <thetext>https://commits.webkit.org/r285536 introduced a regression:
causes API test crashes

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813423</commentid>
    <comment_count>1</comment_count>
      <attachid>443757</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-11-09 17:07:29 -0800</bug_when>
    <thetext>Created attachment 443757
[fast-cq]REVERT of r285536

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813426</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-09 17:09:36 -0800</bug_when>
    <thetext>Committed r285548 (244062@main): &lt;https://commits.webkit.org/244062@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443757.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813428</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 17:10:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/85230756&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443757</attachid>
            <date>2021-11-09 17:07:29 -0800</date>
            <delta_ts>2021-11-09 17:09:37 -0800</delta_ts>
            <desc>[fast-cq]REVERT of r285536</desc>
            <filename>bug-232915-20211109170729.patch</filename>
            <type>text/plain</type>
            <size>56784</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwNDZmNTFlZDYwMTczNTI4MjVkZjUx
NTNhOTZhMTQwNjY5NzM1MjQuLmQ0Y2U3ZmZjNWI2NWYxMWFkMTc5NzBiYmMyYzYxYWI1Yzk3ZDY4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg1
NTM2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMy
OTE1CisKKyAgICAgICAgY2F1c2VzIEFQSSB0ZXN0IGNyYXNoZXMKKworICAgICAgICBSZXZlcnRl
ZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltDRl0gUmVkdWNlIGR1cGxpY2F0aW9uIGFuZCB1bm5l
ZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMgYW5kCisgICAgICAgIGNvcHlpbmcgaW4gVVJMIGNvZGUs
IGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFuZCBmdW5jdGlvbnMiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIyMjAKKyAgICAgICAgaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvcjI4NTUzNgorCiAyMDIxLTExLTA5ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI4NTI0Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjQ0ZTMwZDc5ODJkMjRkZjhiMWIxYjIwNDdhODA1OGM3
ODE0ZWQxZS4uNWY1YTVjOTk2Njc2YmY3ODk4ZWM1Yjg2YWEyYjQyMGFiY2JjMGJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODU1MzYu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5MTUK
KworICAgICAgICBjYXVzZXMgQVBJIHRlc3QgY3Jhc2hlcworCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5kIHVubmVlZGVk
IGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQKKyAgICAgICAgY29weWluZyBpbiBVUkwgY29kZSwgYWxz
byByZW1vdmUgdW51c2VkIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyMAorICAgICAgICBodHRwczovL2Nv
bW1pdHMud2Via2l0Lm9yZy9yMjg1NTM2CisKIDIwMjEtMTEtMDkgIFBlciBBcm5lICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bR1BVUF0gQWRkIHN5c2NhbGxzIHRvIHNhbmRi
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmNGJmMTk1NGYwOTg5MDNhOGFjMmNi
ZDZiMGJiMDdiOWNiMzUwOTg5Li5mYzc3ODI4YzhiMWY3MDRmNzJjMTFkMDJiOGQ5MTc5MGU2ODBl
M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MTEtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg1NTM2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTE1CisKKyAgICAgICAgY2F1c2VzIEFQSSB0ZXN0
IGNyYXNoZXMKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltDRl0g
UmVkdWNlIGR1cGxpY2F0aW9uIGFuZCB1bm5lZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMgYW5kCisg
ICAgICAgIGNvcHlpbmcgaW4gVVJMIGNvZGUsIGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFu
ZCBmdW5jdGlvbnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzIyMjAKKyAgICAgICAgaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcjI4NTUzNgor
CiAyMDIxLTEwLTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q0ZdIFJlZHVjZSBkdXBsaWNhdGlvbiBhbmQgdW5uZWVkZWQgYnVmZmVyIGFsbG9jYXRpb25zIGFu
ZCBjb3B5aW5nIGluIFVSTCBjb2RlLCBhbHNvIHJlbW92ZSB1bnVzZWQgbWV0aG9kcyBhbmQgZnVu
Y3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3Rm
L1VSTC5oCmluZGV4IGNlYTRiN2E3NTQyYmQ2MWRmN2JkNTg1NzcwMDgzMGM4MTkxZjlhYjEuLmU1
ODY5MDI2ZWNhMjEwMmIwYjc5M2QyZTA1MzI2NDNlYTRjZjI5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgVVNFKEdMSUIpICYmIEhBVkUoR1VSSSkKQEAgLTQ4LDcgKzUwLDcgQEAgY2xhc3MgVVJMVGV4
dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVG
b3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+VVJMVGV4dEVu
Y29kaW5nKCkgeyB9CiB9OwogCiBjbGFzcyBVUkwgewpAQCAtODAsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAK
LSAgICAvLyBTaW5jZSB3ZSBvdmVybG9hZCBvcGVyYXRvciBOU1VSTCAqIHdlIGhhdmUgdGhpcyB0
byBwcmV2ZW50IGFjY2lkZW50YWxseSB1c2luZyB0aGF0IG9wZXJhdG9yCisgICAgLy8gU2luY2Ug
d2Ugb3ZlcmxvYWQgb3BlcmF0b3IgTlNVUkwqIHdlIGhhdmUgdGhpcyB0byBwcmV2ZW50IGFjY2lk
ZW50YWxseSB1c2luZyB0aGF0IG9wZXJhdG9yCiAgICAgLy8gd2hlbiBwbGFjaW5nIGEgVVJMIGlu
IGFuIGlmIHN0YXRtZW50LgogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCA9IGRlbGV0ZTsKIApA
QCAtMTkzLDggKzE5NSw3IEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmlu
dCgpIGNvbnN0OwogI2VuZGlmCi0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwmKTsK
QEAgLTIxMywxMCArMjE0LDYgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7CiAKLSNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIFJldGFpblB0cjxDRlVSTFJlZj4gZW1w
dHlDRlVSTCgpOwotI2VuZGlmCi0KICAgICBTdHJpbmcgbV9zdHJpbmc7CiAKICAgICB1bnNpZ25l
ZCBtX2lzVmFsaWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmluZGV4IGVmYTljZjgy
MjQ3YWU2NmFmZmYxOTk2MWE5ZWU1ZDhmNGQ0MmRhNTMuLmM4YmUwNjc0YTRlYWJjNTkwOTBiNzMz
ZTdjNTIxYjM4MmY0OTA2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNjMgKzI3
LDQzIEBACiAjaW5jbHVkZSA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IAotUmV0YWluUHRyPENGRGF0YVJlZj4gYnl0ZXNBc0NGRGF0YShDRlVSTFJlZiB1cmwpCit2b2lk
IGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQogewotICAg
IGF1dG8gYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgbnVsbHB0ciwgMCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoYnl0ZXNMZW5ndGggIT0gLTEpOwotICAgIGF1dG8gYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1hbGxvYyhieXRlc0xlbmd0aCkpOwotICAgIFJFTEVBU0VfQVNT
RVJUKGJ1ZmZlcik7Ci0gICAgQ0ZVUkxHZXRCeXRlcyh1cmwsIGJ1ZmZlciwgYnl0ZXNMZW5ndGgp
OwotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShudWxscHRy
LCBidWZmZXIsIGJ5dGVzTGVuZ3RoLCBrQ0ZBbGxvY2F0b3JNYWxsb2MpKTsKKyAgICBDRkluZGV4
IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51bGxwdHIsIDApOworICAgIHJlc3Vs
dC5yZXNpemUoYnl0ZXNMZW5ndGgpOworICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdl
dEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdC5kYXRhKCkpLCBieXRl
c0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0g
Ynl0ZXNMZW5ndGgpOwogfQogCi1TdHJpbmcgYnl0ZXNBc1N0cmluZyhDRlVSTFJlZiB1cmwpCit2
b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgQ1N0cmluZyYgcmVzdWx0KQogewotICAgIGF1
dG8gYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgbnVsbHB0ciwgMCk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQoYnl0ZXNMZW5ndGggIT0gLTEpOwotICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVz
TGVuZ3RoIDw9IHN0YXRpY19jYXN0PENGSW5kZXg+KFN0cmluZzo6TWF4TGVuZ3RoKSk7Ci0gICAg
TENoYXIqIGJ1ZmZlcjsKLSAgICBhdXRvIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFs
aXplZChieXRlc0xlbmd0aCwgYnVmZmVyKTsKLSAgICBDRlVSTEdldEJ5dGVzKHVybCwgYnVmZmVy
LCBieXRlc0xlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBDRkluZGV4IGJ5dGVzTGVu
Z3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51bGxwdHIsIDApOworICAgIGNoYXIqIGJ5dGVzOwor
ICAgIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoYnl0ZXNMZW5ndGgsIGJ5dGVz
KTsKKyAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJw
cmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7CiB9CiAKLVZlY3Rvcjx1
aW50OF90LCBVUkxCeXRlc1ZlY3RvcklubGluZUNhcGFjaXR5PiBieXRlc0FzVmVjdG9yKENGVVJM
UmVmIHVybCkKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYgY2ZVUkwsIGNvbnN0IFVS
TCYgdXJsKQogewotICAgIFZlY3Rvcjx1aW50OF90LCBVUkxCeXRlc1ZlY3RvcklubGluZUNhcGFj
aXR5PiByZXN1bHQoVVJMQnl0ZXNWZWN0b3JJbmxpbmVDYXBhY2l0eSk7Ci0gICAgYXV0byBieXRl
c0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZXN1bHQuZGF0YSgpLCBVUkxCeXRlc1ZlY3Rv
cklubGluZUNhcGFjaXR5KTsKLSAgICBpZiAoYnl0ZXNMZW5ndGggIT0gLTEpCi0gICAgICAgIHJl
c3VsdC5zaHJpbmsoYnl0ZXNMZW5ndGgpOwotICAgIGVsc2UgewotICAgICAgICBieXRlc0xlbmd0
aCA9IENGVVJMR2V0Qnl0ZXModXJsLCBudWxscHRyLCAwKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYnl0ZXNMZW5ndGggIT0gLTEpOwotICAgICAgICByZXN1bHQuZ3JvdyhieXRlc0xlbmd0aCk7
Ci0gICAgICAgIENGVVJMR2V0Qnl0ZXModXJsLCByZXN1bHQuZGF0YSgpLCBieXRlc0xlbmd0aCk7
Ci0gICAgfQorICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKIAotICAg
IC8vIFRoaXMgbWF5IGxvb2sgbGlrZSBpdCBjb3BpZXMgdGhlIGJ5dGVzIGluIHRoZSB2ZWN0b3Is
IGJ1dCBkdWUgdG8gdGhlIHJldHVybiB2YWx1ZSBvcHRpbWl6YXRpb24gaXQgZG9lcyBub3QuCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBpc1NhbWVPcmlnaW4oQ0ZVUkxSZWYgYSwgY29u
c3QgVVJMJiBiKQotewotICAgIEFTU0VSVChiLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0K
LSAgICBpZiAoYi5oYXNDcmVkZW50aWFscygpKQotICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGEsIGIpOworICAgIGlmICh1cmwuaGFzQ3JlZGVudGlhbHMoKSkKKyAg
ICAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJM
IH0pOwogCi0gICAgYXV0byBhQnl0ZXMgPSBieXRlc0FzVmVjdG9yKGEpOwotICAgIFN0cmluZ1Zp
ZXcgYVN0cmluZyB7IGFCeXRlcy5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhQnl0ZXMu
c2l6ZSgpKSB9OwotICAgIFN0cmluZ1ZpZXcgYlN0cmluZyB7IGIuc3RyaW5nKCkgfTsKKyAgICBV
UkxDaGFyQnVmZmVyIGJ5dGVzOworICAgIGdldFVSTEJ5dGVzKGNmVVJMLCBieXRlcyk7CisgICAg
U3RyaW5nVmlldyBjZlVSTFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihi
eXRlcy5kYXRhKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnl0ZXMuc2l6ZSgpKSB9OwogCi0g
ICAgaWYgKCFiLmhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIGFTdHJpbmcgPT0gYlN0cmluZzsK
KyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJs
LnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CiAKLSAgICB1bnNpZ25lZCBhZnRlclBhdGhTZXBh
cmF0b3IgPSBiLnBhdGhTdGFydCgpICsgMTsKLSAgICByZXR1cm4gYVN0cmluZy5sZWZ0KGFmdGVy
UGF0aFNlcGFyYXRvcikgPT0gYlN0cmluZy5sZWZ0KGFmdGVyUGF0aFNlcGFyYXRvcik7CisgICAg
YXV0byB1cmxXaXRob3V0UGF0aCA9IFN0cmluZ1ZpZXcgeyB1cmwuc3RyaW5nKCkgfS5zdWJzdHJp
bmcoMCwgdXJsLnBhdGhTdGFydCgpICsgMSk7CisgICAgcmV0dXJuIGNmVVJMU3RyaW5nLnN0YXJ0
c1dpdGgodXJsV2l0aG91dFBhdGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9jZi9DRlVSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaAppbmRl
eCA4NDQ3N2I1ZTM2YTE4NzNiOTExNDFiNDJkZjRjZTc1MmQ0MjNlYzliLi5mMWI0NzkzYTFmZWFl
ZjhjYTE5MDMyZDBjYTUxODFkYjM0NzQ1OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9j
Zi9DRlVSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
MjIgKzI2LDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0K
LXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7Ci10eXBlZGVmIGNvbnN0
IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotY29uc3RleHByIHNp
emVfdCBVUkxCeXRlc1ZlY3RvcklubGluZUNhcGFjaXR5ID0gMjA0ODsKK2NsYXNzIFVSTDsKK3R5
cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKIAotUmV0YWluUHRyPENGRGF0
YVJlZj4gYnl0ZXNBc0NGRGF0YShDRlVSTFJlZik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IGJ5dGVzQXNTdHJpbmcoQ0ZVUkxSZWYpOwotV1RGX0VYUE9SVF9QUklWQVRFIFZlY3Rvcjx1aW50
OF90LCBVUkxCeXRlc1ZlY3RvcklubGluZUNhcGFjaXR5PiBieXRlc0FzVmVjdG9yKENGVVJMUmVm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBVUkxDaGFy
QnVmZmVyJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwg
Q1N0cmluZyYpOwogCi1ib29sIGlzU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Citi
b29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25zdCBVUkwmKTsKIAogfQotCi11c2lu
ZyBXVEY6OmJ5dGVzQXNDRkRhdGE7Ci11c2luZyBXVEY6OmJ5dGVzQXNTdHJpbmc7Ci11c2luZyBX
VEY6OmJ5dGVzQXNWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKaW5kZXggNDljYjcwN2YyYWIwM2M0MmEz
YTBiMzc4OTU4MzBhZGFlZmU3N2JiMi4uZWQ1MTVjMDgwODk5MDBmZjhjNTJkZWI3OGUwZTczZGVl
NDg3ZmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApAQCAtMzUsNDcgKzM1LDM5IEBAIG5hbWVzcGFjZSBX
VEYgewogCiBVUkw6OlVSTChDRlVSTFJlZiB1cmwpCiB7Ci0gICAgLy8gRklYTUU6IFdoeSBpcyBp
dCBPSyB0byBpZ25vcmUgdGhlIGJhc2UgVVJMIGluIHRoZSBDRlVSTCBoZXJlPwotICAgIGlmICgh
dXJsKQorICAgIGlmICghdXJsKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICBlbHNlCi0g
ICAgICAgICp0aGlzID0gVVJMUGFyc2VyKGJ5dGVzQXNTdHJpbmcodXJsKSkucmVzdWx0KCk7Ci19
Ci0KLSNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLVJldGFp
blB0cjxDRlVSTFJlZj4gVVJMOjplbXB0eUNGVVJMKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPworICAg
IENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAg
VVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOwogfQogCi0jZW5kaWYKLQorI2lmICFVU0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxD
RlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBlbXB0eUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3VsdDsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtFTFkobV9zdHJpbmcuaXM4
Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIG1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxw
dHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMobnVsbHB0ciwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVu
Z3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2Ug
ewogICAgICAgICBDU3RyaW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4
LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
bnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNv
bHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVu
Z3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIH0KIAot
ICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzU2FtZU9yaWdpbihyZXN1bHQu
Z2V0KCksICp0aGlzKSkKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NG
VVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGNmVVJMOwogfQorI2VuZGlmCiAK
IFN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsKLSAgICBhdXRvIGNmVVJMID0g
Y3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRlQ0ZV
UkwoKTsKICAgICBpZiAoIWNmVVJMKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCmluZGV4IDQxNTVlMDI2YTJiYWY2NmNlMTk5OGVlYjQzM2Nm
NjcwNTdmNjdjYzYuLmJiNmRjYzIzMjUxYjQ4OGFhMTc2Y2Q2MzI1MDA5ZTUzMjYxZjk1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgKKysrIGIvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKnVz
ZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOwotV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxX
aXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICppZ25vcmVkID0gbmlsKTsgLy8g
UmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8v
IFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNV
UkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqKTsKIFdURl9FWFBPUlRfUFJJVkFURSBO
U1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBu
aWwgbWVhbnMgZXJyb3IuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmVuY29kZUhvc3RO
YW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgpAQCAt
NDEsOCArNDEsMTAgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxCeVRydW5jYXRpbmdP
bmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0YKIFdURl9FWFBPUlRfUFJJVkFU
RSBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29t
cG9uZW50VHlwZSk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVS
TCk7CiAKK05TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBCT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmluZGV4IDIwODc0NDBiMGY2
ZmRjNGQ1YjAzYzI5MmM3ZTM2MjhlZjIzOGRiNDkuLjBkOTZlOWQ0ODA5YTM4OWFhZWE0MTdkZWMy
NGRlYTlhYjJmODc4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDE0ICszMiwxNyBAQAogI2ltcG9ydCA8bXV0ZXg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9VUkwuaD4KICNp
bXBvcnQgPHd0Zi9VUkxIZWxwZXJzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KLSNpbXBv
cnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAordXNp
bmcgbmFtZXNwYWNlIFVSTEhlbHBlcnM7CisKK2NvbnN0ZXhwciB1bnNpZ25lZCB1cmxCeXRlc0J1
ZmZlckxlbmd0aCA9IDIwNDg7CisKIHN0YXRpYyBCT09MIHJlYWRJRE5BbGxvd2VkU2NyaXB0TGlz
dEZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lKQogewogICAgIGlmICghZmlsZW5hbWUpCkBAIC02NCw3
ICs2Nyw3IEBAIHN0YXRpYyBCT09MIHJlYWRJRE5BbGxvd2VkU2NyaXB0TGlzdEZpbGUoTlNTdHJp
bmcgKmZpbGVuYW1lKQogICAgICAgICAKICAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7CiAgICAg
ICAgICAgICAvLyBHb3QgYSB3b3JkLCBtYXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBpdCBpbnRv
IHRoZSBhcnJheS4KLSAgICAgICAgICAgIFVSTEhlbHBlcnM6OmFkZFNjcmlwdFRvSUROQWxsb3dl
ZFNjcmlwdExpc3Qod29yZCk7CisgICAgICAgICAgICBhZGRTY3JpcHRUb0lETkFsbG93ZWRTY3Jp
cHRMaXN0KHdvcmQpOwogICAgICAgICB9CiAgICAgfQogICAgIGZjbG9zZShmaWxlKTsKQEAgLTk3
LDcgKzEwMCw3IEBAIHN0YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAKIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5n
KQogewotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBob3N0ID0gVVJMSGVscGVyczo6bWFwSG9z
dE5hbWUoc3RyaW5nLCBudWxscHRyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaG9zdCA9
IG1hcEhvc3ROYW1lKHN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKCFob3N0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiAhKmhvc3QgPyBzdHJpbmcgOiAoTlNTdHJpbmcgKikqaG9z
dDsKQEAgLTEwNSw3ICsxMDgsNyBAQCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcg
KnN0cmluZykKIAogTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCiB7
Ci0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhvc3QgPSBVUkxIZWxwZXJzOjptYXBIb3N0TmFt
ZShzdHJpbmcsIGRlY29kZVBlcmNlbnRFc2NhcGVzKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN0cmluZywgZGVjb2RlUGVyY2VudEVzY2FwZXMpOwogICAg
IGlmICghaG9zdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gISpob3N0ID8gc3Ry
aW5nIDogKE5TU3RyaW5nICopKmhvc3Q7CkBAIC0xMjMsMTkgKzEyNiwzMCBAQCBOU1VSTCAqVVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZQogICAgIGlmICghVVJMKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAot
ICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudChicmlkZ2Vf
Y2FzdChVUkwpLCBjb21wb25lbnQsIG51bGxwdHIpOwotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9
PSBrQ0ZOb3RGb3VuZCkKKyAgICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9y
Q29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgbnVsbHB0cik7Cisg
ICAgaWYgKGZyYWdSZy5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKICAgICAgICAgcmV0dXJuIFVS
TDsKIAotICAgIGF1dG8gYnl0ZXMgPSBieXRlc0FzVmVjdG9yKGJyaWRnZV9jYXN0KFVSTCkpOwor
ICAgIFZlY3RvcjxVSW50OCwgdXJsQnl0ZXNCdWZmZXJMZW5ndGg+IHVybEJ5dGVzKHVybEJ5dGVz
QnVmZmVyTGVuZ3RoKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIHVybEJ5dGVzLnNpemUoKSk7Cisg
ICAgaWYgKG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgdXJsQnl0ZXMu
Z3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7CisgICAgfQogCi0gICAgYXV0byByZXN1
bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLmRhdGEoKSwg
cmFuZ2UubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJs
Qnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCBieXRlcy5kYXRhKCksIHJhbmdlLmxvY2F0aW9u
IC0gMSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKTsKLQorICAgICAgICBy
ZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRh
dGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51
bGxwdHIpKTsKKyAgICAgICAgCiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC5icmlkZ2luZ0F1
dG9yZWxlYXNlKCkgOiBVUkw7CiB9CiAKK3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ1Jlc291
cmNlU3BlY2lmaWVyKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5VHJ1bmNhdGluZ09u
ZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChVUkwsIGtDRlVSTENvbXBvbmVudFJlc291cmNlU3Bl
Y2lmaWVyKTsKK30KKwogTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNVUkwgKmJh
c2VVUkwpCiB7CiAgICAgaWYgKCFkYXRhKQpAQCAtMTQzLDE1ICsxNTcsMTUgQEAgTlNVUkwgKlVS
TFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgCiAgICAgc2l6ZV90
IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKLSAgICAgICAg
Ly8gV29yayBhcm91bmQgPHJkYXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyguLiwgVFJVRSkgZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9uZW50cy4KLSAg
ICAgICAgYmFzZVVSTCA9IFVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVu
dChiYXNlVVJMLCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci0KKyAgICAgICAg
Ly8gd29yayBhcm91bmQgPHJkYXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyguLiwgVFJVRSkgZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9uZW50cy4KKyAg
ICAgICAgYmFzZVVSTCA9IFVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihiYXNlVVJMKTsK
KyAgICAgICAgCiAgICAgICAgIGNvbnN0IFVJbnQ4ICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0
IFVJbnQ4Kj4oW2RhdGEgYnl0ZXNdKTsKLQorICAgICAgICAKICAgICAgICAgLy8gQ0ZVUkxDcmVh
dGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBh
c3NlZCBhIHBhdGggdG8gaXQuCiAgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VV
UkwpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotCisgICAgICAgIAogICAgICAgICAvLyBOT1RF
OiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21w
dXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwogICAgICAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCiAgICAgICAgIC8vIGNv
dWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQg
ZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKQEAgLTE2Myw3ICsxNzcs
NiBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAg
ICB9CiAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CiB9Ci0KIHN0YXRpYyBO
U0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCiB7CiAgICAg
TlNEYXRhICp1c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CkBAIC0xOTgsMTcgKzIxMSwxNyBAQCBzdGF0aWMgTlNEYXRhICpkYXRh
V2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQogICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0
cyBvdXRCeXRlcwogfQogCi1OU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqKQorTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcg
KnN0cmluZywgTlNVUkwgKm5zVVJMKQogewogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBtYXBwZWRTdHJpbmcgPSBVUkxIZWxwZXJzOjptYXBIb3N0TmFt
ZXMoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSwgZGVjb2RlUGVyY2Vu
dEVzY2FwZXMpOworICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9zdE5hbWVzKHN0cmluZ0J5
VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIGRlY29kZVBlcmNlbnRFc2NhcGVzKTsK
ICAgICBpZiAoIW1hcHBlZFN0cmluZykKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIExl
dCdzIGNoZWNrIHdoZXRoZXIgdGhlIFVSTCBpcyBib2d1cy4KLSAgICBVUkwgdXJsIHsgVVJMIHsg
fSwgbWFwcGVkU3RyaW5nIH07CisgICAgVVJMIHVybCB7IFVSTCB7IG5zVVJMIH0sIG1hcHBlZFN0
cmluZyB9OwogICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKQEAgLTIxOCw4NiArMjMxLDExMyBAQCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhO
U1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CiAKLSAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0
YSwgbmlsKTsKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOwogfQogCi1OU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZykKK05T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqc3RyaW5nLCBO
U1VSTCAqVVJMKQogewogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nKTsKKyAgICBO
U1VSTCAqcmVzdWx0ID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcsIFVSTCk7CiAgICAg
aWYgKCFyZXN1bHQpIHsKICAgICAgICAgTlNEYXRhICpyZXN1bHREYXRhID0gZGF0YVdpdGhVc2Vy
VHlwZWRTdHJpbmcoc3RyaW5nKTsKICAgICAgICAgaWYgKCFyZXN1bHREYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0gICAgICAgIHJlc3VsdCA9IFVS
TFdpdGhEYXRhKHJlc3VsdERhdGEsIG5pbCk7CisgICAgICAgIHJlc3VsdCA9IFVSTFdpdGhEYXRh
KHJlc3VsdERhdGEsIFVSTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIGJvb2wgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKE5TVVJMICpVUkwpCitzdGF0
aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwgKlVSTCkKIHsKICAg
ICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7Ci0gICAgQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JD
b21wb25lbnQoYnJpZGdlX2Nhc3QoVVJMKSwga0NGVVJMQ29tcG9uZW50UXVlcnksICZyYW5nZVdp
dGhTZXBhcmF0b3JzKTsKLSAgICByZXR1cm4gcmFuZ2VXaXRoU2VwYXJhdG9ycy5sb2NhdGlvbiAh
PSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0aCA9PSAxOworICAgIENG
VVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGtDRlVS
TENvbXBvbmVudFF1ZXJ5LCAmcmFuZ2VXaXRoU2VwYXJhdG9ycyk7CisgICAgaWYgKHJhbmdlV2l0
aFNlcGFyYXRvcnMubG9jYXRpb24gIT0ga0NGTm90Rm91bmQgJiYgcmFuZ2VXaXRoU2VwYXJhdG9y
cy5sZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKworICAgIHJldHVybiBOTzsKIH0K
IAogTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqVVJMLCBDRlVSTENvbXBv
bmVudFR5cGUgY29tcG9uZW50VHlwZSkKIHsKLSAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoYnJpZGdlX2Nhc3QoVVJMKSwgY29tcG9uZW50VHlwZSwgbnVs
bHB0cik7Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgYXV0byBieXRlc0J1ZmZlciA9IGJ5dGVzQXNWZWN0b3IoYnJpZGdl
X2Nhc3QoVVJMKSk7Ci0gICAgYXV0byBieXRlcyA9IGJ5dGVzQnVmZmVyLmRhdGEoKSArIHJhbmdl
LmxvY2F0aW9uOwotCi0gICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0ID0gW05TTXV0YWJsZURhdGEg
ZGF0YV07Ci0KLSAgICAvLyBXZSBhZGQgbGVhZGluZyAnPycgdG8gbm9uLXplcm8gbGVuZ3RoIHF1
ZXJ5IHN0cmluZ3MgaW5jbHVkaW5nIHF1ZXN0aW9uLW1hcmsgb25seSBxdWVyeSBzdHJpbmdzLgor
ICAgIFZlY3RvcjxVSW50OCwgdXJsQnl0ZXNCdWZmZXJMZW5ndGg+IGFsbEJ5dGVzQnVmZmVyKHVy
bEJ5dGVzQnVmZmVyTGVuZ3RoKTsKKyAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5
dGVzQnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAg
IENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1Rv
QWxsb2NhdGUpOworICAgICAgICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBDRlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAo
Q0ZVUkxDb21wb25lbnRUeXBlKS0xOworICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBv
bmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVS
YW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBu
dWxscHRyKTsKKyAgICAgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlv
biA9IDA7CisgICAgICAgIHJhbmdlLmxlbmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAK
KyAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0
ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAor
ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURh
dGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQg
bGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5n
cy4KKyAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3Mu
CiAgICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKLSAgICAg
ICAgaWYgKHJhbmdlLmxlbmd0aCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJM
KSkKLSAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kQnl0ZXM6Ij8iIGxlbmd0aDoxXTsKKyAgICAg
ICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5n
KFVSTCkpCisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFd
OyAgICAKICAgICB9Ci0KLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7
IGkrKykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgdW5zaWduZWQgY2hhciBjID0gYnl0ZXNbaV07Ci0gICAgICAgIGlmIChjID4gMHgyMCAm
JiBjIDwgMHg3RikKLSAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kQnl0ZXM6JmJ5dGVzW2ldIGxl
bmd0aDoxXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjaGFyIGVzY2FwZWRbM10gPSB7
ICclJywgdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyksIGxvd2VyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpIH07Ci0gICAgICAgICAgICBbcmVzdWx0IGFwcGVuZEJ5dGVzOmVzY2FwZWQgbGVu
Z3RoOjNdOwotICAgICAgICB9CisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7
CisgICAgICAgICAgICBjaGFyIGVzY2FwZWRbM107CisgICAgICAgICAgICBlc2NhcGVkWzBdID0g
JyUnOworICAgICAgICAgICAgZXNjYXBlZFsxXSA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpOworICAgICAgICAgICAgZXNjYXBlZFsyXSA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpOworICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6ZXNjYXBlZCBsZW5ndGg6
M107ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hhciBiWzFdOworICAgICAg
ICAgICAgYlswXSA9IGM7CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczpiIGxl
bmd0aDoxXTsgICAgCisgICAgICAgIH0gICAgICAgICAgICAgICAKICAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OworICAgIAorICAgIHJldHVybiByZXN1bHREYXRhOwogfQogCiBzdGF0aWMgTlNV
UkwgKlVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpV
UkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCiB7Ci0gICAgQ0ZSYW5nZSByYW5nZSA9
IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KGJyaWRnZV9jYXN0KFVSTCksIGNvbXBvbmVu
dCwgMCk7CisgICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7CiAgICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQogICAgICAgICByZXR1cm4gVVJMOwotCisgICAgCiAgICAg
Ly8gUmVtb3ZlIG9uZSBzdWJzZXF1ZW50IGNoYXJhY3Rlci4KICAgICByYW5nZS5sZW5ndGgrKzsK
IAotICAgIGF1dG8gYnl0ZXMgPSBieXRlc0FzVmVjdG9yKGJyaWRnZV9jYXN0KFVSTCkpOwotICAg
IGF1dG8gdXJsQnl0ZXMgPSBieXRlcy5kYXRhKCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IGJ5
dGVzLnNpemUoKTsKLQorICAgIFZlY3RvcjxVSW50OCwgdXJsQnl0ZXNCdWZmZXJMZW5ndGg+IGJ1
ZmZlcih1cmxCeXRlc0J1ZmZlckxlbmd0aCk7CisgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJM
R2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgaWYgKG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAg
YnVmZmVyLmdyb3cobnVtQnl0ZXMpOworICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBD
RlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisgICAgVUludDgq
IHVybEJ5dGVzID0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgCiAgICAgaWYgKG51bUJ5dGVzIDwg
cmFuZ2UubG9jYXRpb24pCiAgICAgICAgIHJldHVybiBVUkw7CiAgICAgaWYgKG51bUJ5dGVzIDwg
cmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpCiAgICAgICAgIHJhbmdlLmxlbmd0aCA9IG51
bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb247Ci0KKyAgICAgICAgCiAgICAgbWVtbW92ZSh1cmxCeXRl
cyArIHJhbmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVu
Z3RoLCBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKLQorICAgIAog
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1
cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
bnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXN1bHQgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxl
bmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKTsKLQorICAgICAgICAg
ICAgICAgIAogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
IDogVVJMOwogfQogCkBAIC0zMDgsNDIgKzM0OCw5NyBAQCBOU1VSTCAqVVJMQnlSZW1vdmluZ1Vz
ZXJJbmZvKE5TVVJMICpVUkwpCiAKIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICpVUkwp
CiB7Ci0gICAgYXV0byBkYXRhID0gYnJpZGdlX2Nhc3QoYnl0ZXNBc0NGRGF0YShicmlkZ2VfY2Fz
dChVUkwpKSk7Ci0gICAgaWYgKGF1dG8gYmFzZVVSTCA9IGJyaWRnZV9jYXN0KENGVVJMR2V0QmFz
ZVVSTChicmlkZ2VfY2FzdChVUkwpKSkpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEo
VVJMV2l0aERhdGEoZGF0YS5nZXQoKSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhLmF1dG9y
ZWxlYXNlKCk7CisgICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxvYyh1cmxCeXRlc0J1
ZmZlckxlbmd0aCk7CisgICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCB1cmxCeXRlc0J1ZmZlckxlbmd0aCk7CisgICAg
aWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRl
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7
CisgICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgICAgIEFTU0VSVChieXRlc0ZpbGxl
ZCA9PSBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICAvLyBidWZmZXIgaXMgYWRv
cHRlZCBieSB0aGUgTlNEYXRhCisgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107Cisg
ICAgCisgICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilDRlVSTEdldEJhc2VV
UkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7CisgICAgaWYgKGJhc2VVUkwpCisgICAgICAgIHJl
dHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCkpOworICAgIHJl
dHVybiBkYXRhOwogfQogCiBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkK
IHsKICAgICBOU0RhdGEgKmRhdGEgPSBvcmlnaW5hbFVSTERhdGEoVVJMKTsKLSAgICByZXR1cm4g
VVJMSGVscGVyczo6dXNlclZpc2libGVVUkwoQ1N0cmluZyhzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpOworICAgIENTdHJpbmcgc3RyaW5nKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAg
ICByZXR1cm4gdXNlclZpc2libGVVUkwoc3RyaW5nKTsKIH0KIAogQk9PTCBpc1VzZXJWaXNpYmxl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCiB7Ci0gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHVzZXJW
aXNpYmxlU3RyaW5nIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gbm90IGNoYW5nZSB0aGUgcGFz
c2VkLWluIFVSTC4KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3B0aW1pemUgYWxs
IHRoZSBtb3N0IGNvbW1vbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIHRoZSB1c2VyVmlzaWJs
ZVN0cmluZyBhbGdvcml0aG0uCi0KLSAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgICBhdXRvIHN1
Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJpbmcoYnJpZGdlX2Nhc3Qoc3RyaW5nKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpOwotICAgIGF1dG8gY2hhcmFjdGVycyA9IHN1Y2Nlc3MgPyBidWZmZXIgOiBbc3Ry
aW5nIFVURjhTdHJpbmddOwotCi0gICAgLy8gQ2hlY2sgZm9yIGNvbnRyb2wgY2hhcmFjdGVycywg
JS1lc2NhcGUgc2VxdWVuY2VzIHRoYXQgYXJlIG5vbi1BU0NJSSwgYW5kIHhuLS06IHRoZXNlCi0g
ICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCBtaWdodCBsZWFkIHRoZSB1c2VyVmlzaWJsZVN0cmlu
ZyBmdW5jdGlvbiB0byBhY3R1YWxseSBjaGFuZ2UgdGhlIHN0cmluZy4KLSAgICB3aGlsZSAoYXV0
byBjaGFyYWN0ZXIgPSAqY2hhcmFjdGVycysrKSB7Ci0gICAgICAgIC8vIENvbnRyb2wgY2hhcmFj
dGVycywgaW5jbHVkaW5nIHNwYWNlLCB3aWxsIGJlIGVzY2FwZWQgYnkgdXNlclZpc2libGVTdHJp
bmcuCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMHgyMCB8fCBjaGFyYWN0ZXIgPT0gMHg3RikK
LSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgLy8gRXNjYXBlIHNlcXVlbmNlcyB0aGF0
IGV4cGFuZCB0byBub24tQVNDSUkgY2hhcmFjdGVycyBtYXkgYmUgY29udmVydGVkIHRvIG5vbi1l
c2NhcGVkIFVURi04IHNlcXVlbmNlcy4KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnJScgJiYg
aXNBU0NJSUhleERpZ2l0KGNoYXJhY3RlcnNbMF0pICYmIGlzQVNDSUlIZXhEaWdpdChjaGFyYWN0
ZXJzWzFdKSAmJiAhaXNBU0NJSSh0b0FTQ0lJSGV4VmFsdWUoY2hhcmFjdGVyc1swXSwgY2hhcmFj
dGVyc1sxXSkpKQotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICAvLyBJZiAieG4tLSIg
YXBwZWFycywgdGhlbiB3ZSBtaWdodCBuZWVkIHRvIHJ1biB0aGUgSUROIGFsZ29yaXRobSBpZiBp
dCdzIGEgaG9zdCBuYW1lLgotICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChj
aGFyYWN0ZXIsICd4JykgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzBd
LCAnbicpICYmIGNoYXJhY3RlcnNbMV0gPT0gJy0nICYmIGNoYXJhY3RlcnNbMl0gPT0gJy0nKQot
ICAgICAgICAgICAgcmV0dXJuIE5POworICAgIEJPT0wgdmFsaWQgPSBZRVM7CisgICAgLy8gZ2V0
IGJ1ZmZlcgorICAgIAorICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKKyAgICBjb25zdCBj
aGFyICpwOworICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgpOworICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0
cmluZ107CisgICAgCisgICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKKyAgICAKKyAgICAvLyBj
aGVjayBmb3IgY2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2Vz
IG9mICU3ZiwgYW5kIHhuLS0sIHRoZXNlCisgICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxs
IGxlYWQgX3dlYl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBjID0gcFtpXTsKKyAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3Bh
Y2UsIGFuZCBkZWxldGUKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKKyAg
ICAgICAgICAgIHZhbGlkID0gTk87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNl
IGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSAr
IDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewor
ICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7
CisgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IE5P
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBp
biBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAgaWYg
KGMgPT0gJy0nICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAt
IDJdIHwgMHgyMCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgeworICAgICAgICAgICAgICAg
IHZhbGlkID0gTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICB9CisgICAgCisgICAgcmV0dXJuIHZhbGlkOworfQogCi0gICAgcmV0dXJuIFlF
UzsKK05TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIE5T
UmFuZ2UgY29sb24gPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Il07CisgICAgaWYgKGNvbG9u
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CisgICAgICAg
IE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKKyAgICAgICAgLyoKKyAgICAg
ICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9uIGEgMngxLjJH
SHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcworICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdo
ZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIg
aWYgd2UKKyAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhl
cmUuCisgICAgICAgICAqLworICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMg
PSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow
MTIzNDU2Nzg5Ky4tIjsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNDaGFyYWN0ZXJTZXQ+PiBpbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0OworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuY29uc3Ry
dWN0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzph
Y2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKKyAgICAgICAgfSk7CisgICAgICAg
IE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OmludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnNjaGVtZV07
CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91
bmQsIDApOwogfQogCitCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5TU3RyaW5nICpzdHJpbmcp
Cit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9VUkxXaXRoU3RyaW5nIGFs
bG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9mVVJMU2NoZW1lKHN0cmluZ0J5VHJp
bW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0aW9uICE9IE5TTm90Rm91bmQ7CiB9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KaW5kZXgg
NWQ5ZTE1NjU3NzQ1MmEyMjczZWYyZGY2N2E2ZDhlNDdkN2EzNWEwOS4uMjdkN2RjMzY2MmZhZjU0
NmQwMDFhOGUyMmNiNzA3ZDkwYjZmY2IwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KQEAg
LTM5LDggKzM5LDE3IEBAIEBlbmQKIG5hbWVzcGFjZSBXVEYgewogCiBVUkw6OlVSTChOU1VSTCAq
Y29jb2FVUkwpCi0gICAgOiBVUkwoYnJpZGdlX2Nhc3QoY29jb2FVUkwpKQogeworICAgIGlmICgh
Y29jb2FVUkwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8K
KyAgICBDU3RyaW5nIGJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoYnJpZGdlX2Nhc3QoY29j
b2FVUkwpLCBieXRlcyk7CisgICAgVVJMUGFyc2VyIHBhcnNlcihieXRlcy5kYXRhKCkpOworICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwogfQogCiBVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBj
b25zdApAQCAtNTAsMTEgKzU5LDI4IEBAIFVSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0CiAg
ICAgcmV0dXJuIGNyZWF0ZUNGVVJMKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCi1SZXRh
aW5QdHI8Q0ZVUkxSZWY+IFVSTDo6ZW1wdHlDRlVSTCgpCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVS
TDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogewotICAgIC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJy
aWRnZSB0byBjcmVhdGUgYW4gZW1wdHkgdmFsdWUgdGhhdCBpcyBkaXN0aW5jdCBmcm9tIG51bGwg
dGhhdCBubyBDRlVSTCBmdW5jdGlvbiBjYW4gY3JlYXRlLgotICAgIC8vIEZJWE1FOiBXaGVuIHdl
IG9yaWdpbmFsbHkgd3JvdGUgdGhpcywgd2UgdGhvdWdodCB0aGF0IGNyZWF0aW5nIGVtcHR5IENG
IFVSTHMgd2FzIHZhbHVhYmxlOyBjYW4gd2UgZG8gd2l0aG91dCBpdCBub3c/Ci0gICAgcmV0dXJu
IGJyaWRnZV9jYXN0KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSkp
OworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAo
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3
ZWVuIE5TVVJMIGFuZCBDRlVSTCB0byBjcmVhdGUgYSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGgg
ZW1wdHkgYW5kIG51bGwgdmFsdWVzLgorICAgICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKSk7CisgICAgfQorCisgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgp
ICYmIG1fc3RyaW5nLmlzQWxsQVNDSUkoKSkpCisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4
KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRy
dWUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQ1N0cmluZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgp
OworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRl
cyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgIH0KKworICAgIGlmIChwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCks
ICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7CiB9
CiAKIGJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQpAQCAtNjQsNyAr
OTAsNyBAQCBib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKIAogUmV0
YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgVVJMJiB2ZWN0b3JFbGVtZW50KQog
ewotICAgIHJldHVybiBicmlkZ2VfY2FzdCh2ZWN0b3JFbGVtZW50LmNyZWF0ZUNGVVJMKCkpOwor
ICAgIHJldHVybiBhZG9wdE5TKChfX2JyaWRnZV90cmFuc2ZlciBpZCl2ZWN0b3JFbGVtZW50LmNy
ZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxVUkw+IG1ha2VWZWN0
b3JFbGVtZW50KGNvbnN0IFVSTCosIGlkIGFycmF5RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVT
eXN0ZW1NYWMubW0KaW5kZXggMmFkOTE1Y2FmNjc4OTc0ZTlkNGMwZmZlZmQ5OTAxZTI0ZWE4YjFk
Mi4uNWUxOTMwMDU2OWI2MjFjYjRiOWNmOWMwZTdkNjIzNDUxNzczY2FiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dURi93dGYv
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdURiB7CiB2
b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAg
ICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZykpCi0gICAgICAgIHVybFN0cmluZyA9IHVzZXJWaXNp
YmxlU3RyaW5nKFVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKKyAgICBpZiAoTlNVUkwgKnVy
bCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCisgICAg
ICAgIHVybFN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5n
VXNlckluZm8odXJsKSk7CiAgICAgZWxzZQogICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVS
TFN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXgg
YmYzYzY2NDhmMjdhMzY1MzQ5OWNkZWU4NmUzZDA2YjEzYzg2NDdkYy4uNDYxODVjNmFlNjY1Mjhk
MTc4MGU3ZmU2MDcxZThhYjgyZTMyZmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0
cmluZ0NvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjIsMjAgKzIyLDE3IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KLSNpbXBvcnQgPHd0Zi9jb2NvYS9U
eXBlQ2FzdHNDb2NvYS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIEhBVkUoU0FGQVJJX0ZP
Ul9XRUJLSVRfREVWRUxPUE1FTlRfUkVRVUlSSU5HX0VYVFJBX1NZTUJPTFMpCiBTdHJpbmc6OlN0
cmluZyhOU1N0cmluZyAqc3RyaW5nKQotICAgIDogU3RyaW5nKGJyaWRnZV9jYXN0KHN0cmluZykp
Ci17Ci19CisgICAgOiBTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZykgeyB9CiAj
ZW5kaWYKIAogUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJiB2
ZWN0b3JFbGVtZW50KQogewotICAgIHJldHVybiBicmlkZ2VfY2FzdCh2ZWN0b3JFbGVtZW50LmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBhZG9wdE5TKChfX2JyaWRnZV90cmFuc2ZlciBp
ZCl2ZWN0b3JFbGVtZW50LmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAogc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyosIGlkIGFycmF5
RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJM
Q0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCmluZGV4IGNj
ZTgyNzY1YWQ5YjE2OTVkOTNhYjg3YTU5MzliZTM1OTYxNzA3N2IuLmFjNmQwODYzZjUzMDVjMDQ4
Mzc3MjZmNGQ2MDBkNzFjZDE5MTE2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NmL1dLVVJMQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Yv
V0tVUkxDRi5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV0tOU1VSTC5oIgogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RhdGljIGlubGluZSBDbGFzcyB3a05TVVJMQ2xh
c3MoKQogewpAQCAtNDQsMTQgKzQ1LDE2IEBAIHN0YXRpYyBpbmxpbmUgQ2xhc3Mgd2tOU1VSTENs
YXNzKCkKIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aENGVVJMKENGVVJMUmVmIGNmVVJMKQogewog
ICAgIGlmICghY2ZVUkwpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIFNpbmNlIFdLTlNVUkwgaXMgYW4gaW50ZXJuYWwgY2xhc3Mgd2l0aCBubyBz
dWJjbGFzc2VzLCB3ZSBjYW4gZG8gYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2suCiAgICAgaWYgKG9i
amVjdF9nZXRDbGFzcygoX19icmlkZ2UgTlNVUkwgKiljZlVSTCkgPT0gd2tOU1VSTENsYXNzKCkp
CiAgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKHN0YXRpY19jYXN0PEFQSTo6VVJMKj4oJlso
V0tOU1VSTCAqKShfX2JyaWRnZSBOU1VSTCAqKUNGUmV0YWluKGNmVVJMKSBfYXBpT2JqZWN0XSkp
OwogCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgdGhlIGJhc2UgVVJMIGlu
IHRoZSBDRlVSTCBoZXJlPwotICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKGJ5dGVz
QXNTdHJpbmcoY2ZVUkwpKTsKKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJM
Qnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJM
QVBJKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJMUmVmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggNjEyODRiMDRk
MTE2Y2ZiODdhMjNkMzA2OGE4YzJjMmI1MDlkNjYxYi4uZDkxZDIwYTBlMzViMGZlZWZiMDY2Y2Iy
YzBlYjY4YmJlM2Y2ZmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0xMDQsOCArMTA0LDkgQEAgLSAodm9pZCllbmNvZGVX
aXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIGlmIChoYXNCYXNlVVJMKQogICAgICAgICBb
Y29kZXIgZW5jb2RlT2JqZWN0OmJhc2VVUkwgZm9yS2V5OmJhc2VVUkxLZXldOwogCi0gICAgYXV0
byBieXRlcyA9IGJ5dGVzQXNWZWN0b3IoYnJpZGdlX2Nhc3QobV93cmFwcGVkVVJMLmdldCgpKSk7
Ci0gICAgW2NvZGVyIGVuY29kZUJ5dGVzOmJ5dGVzLmRhdGEoKSBsZW5ndGg6Ynl0ZXMuc2l6ZSgp
XTsKKyAgICBXVEY6OlVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7CisgICAgV1RGOjpnZXRVUkxCeXRl
cyhicmlkZ2VfY2FzdChtX3dyYXBwZWRVUkwuZ2V0KCkpLCB1cmxCeXRlcyk7CisgICAgW2NvZGVy
IGVuY29kZUJ5dGVzOnVybEJ5dGVzLmRhdGEoKSBsZW5ndGg6dXJsQnl0ZXMuc2l6ZSgpXTsKIH0K
IAogLSAoX051bGxhYmxlIGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29k
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMuaAppbmRleCA1N2Ez
Y2QyYjI0ZjFkZDFmMWE1NjY2YjMwOGVjZGViMzliYjZlZGU4Li4yMGRkY2IwOTNmYjliOTdlMjY0
OTQ5YmVkODI2ZTBiYmUwOWJiNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XS05TVVJMRXh0cmFzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tO
U1VSTEV4dHJhcy5oCkBAIC0yOCw1ICsyOCw4IEBACiBAaW50ZXJmYWNlIE5TVVJMIChXS0V4dHJh
cykKIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5n
JilzdHJpbmc7CisrIChpbnN0YW5jZXR5cGUpX3dlYl9VUkxXaXRoV1RGU3RyaW5nOihjb25zdCBT
dHJpbmcmKXN0cmluZyByZWxhdGl2ZVRvVVJMOihOU1VSTCAqKWJhc2VVUkw7CisKKy0gKFN0cmlu
Zylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQppbmRleCAxODFiODNhODdiOTZlZWE3NWU1Y2Q5
NTQ2NzgxMDQ5N2FiZmM5NmI3Li4yNjAyNzFhMGIzY2Q1NzVkNjU0ZjgwZjEwNmYzZGU4NWUzNDVi
ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAg
LTI3LDYgKzI3LDkgQEAKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKIAogI2ltcG9ydCA8d3Rm
L1VSTC5oPgorI2ltcG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogQGltcGxlbWVu
dGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIApAQCAtMzYsNCArMzksMTggQEAgKyAoaW5zdGFuY2V0
eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKICAgICByZXR1
cm4gKE5TVVJMICopdXJsOwogfQogCisrIChpbnN0YW5jZXR5cGUpX3dlYl9VUkxXaXRoV1RGU3Ry
aW5nOihjb25zdCBTdHJpbmcmKXN0cmluZyByZWxhdGl2ZVRvVVJMOihOU1VSTCAqKWJhc2VVUkwK
K3sKKyAgICBVUkwgdXJsIHsgVVJMIHsgYmFzZVVSTCB9LCBzdHJpbmcgfTsKKyAgICByZXR1cm4g
KE5TVVJMICopdXJsOworfQorCistIChTdHJpbmcpX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmlu
ZworeworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/
CisgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChvcmlnaW5hbERhdGEpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dLTlNVUkxSZXF1ZXN0Lm1tCmluZGV4IDRmMjFhYTkwMzAyYWI2OGNiZjYxOWFhY2VlNjAz
OTY1Y2FkM2JlMGMuLmQwYzkxZjdkZTI5MzkwNTkxN2NkNTY5ZDZkMDU3N2YxMGY2ZTgyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCkBAIC0zNyw3
ICszNyw3IEBAIC0gKE5TT2JqZWN0ICopX3dlYl9jcmVhdGVUYXJnZXQKIAogLSAoTlNVUkwgKilV
UkwKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVBJOjpVUkxSZXF1ZXN0Kj4oJnNlbGYuX2Fw
aU9iamVjdCktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIHJldHVybiBbTlNVUkwgX3dl
Yl9VUkxXaXRoV1RGU3RyaW5nOnN0YXRpY19jYXN0PEFQSTo6VVJMUmVxdWVzdCo+KCZzZWxmLl9h
cGlPYmplY3QpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKV07CiB9CiAKICNwcmFn
bWEgbWFyayBOU0NvcHlpbmcgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggNDYyZTg1OTQyYmY1ZDQxYWIw
OTc0ZjQ0Yjk0ZDQ3YjYzMWFkYWQwMi4uMjY3NzZkZjVmZDM2ZDYxNTE4NDQ2ZjA5YmFjYjEwZDZh
NzA3ZWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2Rl
cnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAKQEAgLTY0Myw3ICs2NDMsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZVUkxSZWY+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZVUkxSZWYgdXJsKQogICAgIGlmIChiYXNlVVJMKQogICAg
ICAgICBlbmNvZGVyIDw8IGJhc2VVUkw7CiAKLSAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVy
ZW5jZShieXRlc0FzVmVjdG9yKHVybCkpOworICAgIFdURjo6VVJMQ2hhckJ1ZmZlciB1cmxCeXRl
czsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOworICAgIGVuY29kZXIgPDwg
SVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybEJ5
dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIHZvaWQgQXJndW1l
bnRDb2RlcjxDRlVSTFJlZj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgQ0ZVUkxSZWYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggNmRjNWQwMzNkYzY5MzFkMWJiNDc0
MDc2NTJiYmY1N2ZkMmEwNmM5Yy4uZTA3MTI2YWJiZDk0MTFhZmRjMTJiMmFiZmQwOGE0ZDEwNzI0
MjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MCw3ICs2MCw2IEBA
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+Ci0jaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRy
YXMuaD4KIAogTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbklzTWFpbkZyYW1lS2V5ID0gQCJXS0Fj
dGlvbklzTWFpbkZyYW1lS2V5IjsKIE5TU3RyaW5nICogY29uc3QgV0tBY3Rpb25OYXZpZ2F0aW9u
VHlwZUtleSA9IEAiV0tBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSI7CkBAIC0xNTgsNyArMTU3LDcg
QEAgLSAodm9pZClsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGlu
OihOU1VSTCAqKWFsbG93ZWREaXJlY3RvcnkKICAgICBpZiAodXNlckRhdGEpCiAgICAgICAgIHdr
VXNlckRhdGEgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKTsKIAot
ICAgIF9wYWdlLT5sb2FkRmlsZShieXRlc0FzU3RyaW5nKGJyaWRnZV9jYXN0KFVSTCkpLCBieXRl
c0FzU3RyaW5nKGJyaWRnZV9jYXN0KGFsbG93ZWREaXJlY3RvcnkpKSwgd2tVc2VyRGF0YS5nZXQo
KSk7CisgICAgX3BhZ2UtPmxvYWRGaWxlKFtVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmlu
Z10sIFthbGxvd2VkRGlyZWN0b3J5IF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddLCB3a1Vz
ZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilI
VE1MU3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTApAQCAtMTczLDcgKzE3Miw3IEBAIC0g
KHZvaWQpbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopSFRNTFN0cmluZyBiYXNlVVJMOihOU1VS
TCAqKWJhc2VVUkwgdXNlckRhdGE6CiAgICAgICAgIHdrVXNlckRhdGEgPSBXZWJLaXQ6Ok9iakNP
YmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtIVE1M
U3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBfcGFn
ZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRh
dGEubGVuZ3RoIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgYnl0ZXNBc1N0cmluZyhicmlk
Z2VfY2FzdChiYXNlVVJMKSksIHdrVXNlckRhdGEuZ2V0KCkpOworICAgIF9wYWdlLT5sb2FkRGF0
YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgg
fSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFz
V1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpbG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBm
b3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTApAQCAtMTkzLDcgKzE5Miw3
IEBAIC0gKHZvaWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICop
TUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTooCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3
a1VzZXJEYXRhID0gV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSk7CiAK
LSAgICBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5i
eXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJ5dGVzQXNTdHJp
bmcoYnJpZGdlX2Nhc3QoYmFzZVVSTCkpLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBfcGFnZS0+
bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEu
bGVuZ3RoIH0sIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9h
ZGluZwpAQCAtNTA5LDcgKzUwOCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgICAgICAgICBpZiAob3JpZ2luYXRpbmdGcmFtZSkgewogICAgICAgICAgICAgICAg
IGFjdGlvbkRpY3Rpb25hcnkgPSBhZG9wdE5TKFthY3Rpb25EaWN0aW9uYXJ5IG11dGFibGVDb3B5
XSk7Ci0gICAgICAgICAgICAgICAgWyhOU011dGFibGVEaWN0aW9uYXJ5ICopYWN0aW9uRGljdGlv
bmFyeS5nZXQoKSBzZXRPYmplY3Q6KE5TVVJMICopV2ViS2l0Ojp0b0ltcGwob3JpZ2luYXRpbmdG
cmFtZSktPnVybCgpIGZvcktleTpXS0FjdGlvbk9yaWdpbmF0aW5nRnJhbWVVUkxLZXldOworICAg
ICAgICAgICAgICAgIFsoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWFjdGlvbkRpY3Rpb25hcnkuZ2V0
KCkgc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6V2ViS2l0Ojp0b0ltcGwo
b3JpZ2luYXRpbmdGcmFtZSktPnVybCgpLnN0cmluZygpXSBmb3JLZXk6V0tBY3Rpb25PcmlnaW5h
dGluZ0ZyYW1lVVJMS2V5XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgW3BvbGljeURlbGVnYXRlIGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6YnJvd3NpbmdDb250
ZXh0IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246YWN0aW9uRGljdGlvbmFyeS5nZXQo
KSBkZWNpc2lvbkhhbmRsZXI6bWFrZVBvbGljeURlY2lzaW9uQmxvY2sobGlzdGVuZXIpLmdldCgp
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25s
b2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxv
YWRDbGllbnQubW0KaW5kZXggNjU1ZDg5YjhkODBjZmZjNDBkOTUzMjc4MTEwZTcwZDNlNmEwZTlk
Ny4uMGZiN2U4YWQ5OWJhNDcxZjg5ZGYxYWU5MTA5ODMzMjE2ODBlYmIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0K
QEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRD
YW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6cmVxdWVzdC51cmwoKV07
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygp
XV07CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IGM4
MTFlYWQ4Mjk3ODgwMGZkZTAwZGFmZjVjMmNjNGM3OTQ2YThiYzYuLmZkYWQxMzBlMDJiYzNjNTY4
YWE0OTk0NzNlMmIxZDc4MDg0YWUyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9X
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIC0gKFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKV9icm93c2VyQ29udGV4dENvbnRy
b2xsZXIKIAogLSAoTlNVUkwgKilVUkwKIHsKLSAgICByZXR1cm4gX2ZyYW1lLT51cmwoKTsKKyAg
ICByZXR1cm4gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpfZnJhbWUtPnVybCgpLnN0cmlu
ZygpXTsKIH0KIAogLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLmgKaW5kZXggZWM3NDg2MjE0YzZjNGU3ZmIzYTVi
YWQ5MGRkMWNkYWIyMDUxMGZlOC4uZWM3MGVhMzQ1YzRlNDUyODY3ZDc1YWQ0MmVkYWQ3NmU1NTA3
YzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4
dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwOSwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDIzICsyOCwzMCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KIAotLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRvIF93ZWJfIGZyb20gX3dl
YmtpdF8gb25jZSBpZGVudGljYWxseS1uYW1lZCBtZXRob2RzIGFyZSBubyBsb25nZXIgcHJlc2Vu
dCBpbiBGb3VuZGF0aW9uLgorLy8gRklYTUU6IENoYW5nZSBtZXRob2QgbmFtZXMgYmFjayB0byBf
d2ViXyBmcm9tIF93ZWJraXRfIHdoZW4gaWRlbnRpY2FsbHktbmFtZWQKKy8vIG1ldGhvZHMgYXJl
IG5vIGxvbmdlciBwcmVzZW50IGluIEZvdW5kYXRpb24uCiAKIEBpbnRlcmZhY2UgTlNVUkwgKFdl
Yk5TVVJMRXh0cmFzKQogCi0vLyBEZXByZWNhdGVkLCBhcyBpdCBpZ25vcmVzIFVSTCBwYXJzaW5n
IGVycm9ycy4KLS8vIFBsZWFzZSB1c2UgdGhlIF93ZWJraXRfVVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyBpbnN0ZWFkLgorLy8gRGVwcmVjYXRlZCBhcyBpdCBpZ25vcmVzIFVSTCBwYXJzaW5nIGVycm9y
LgorLy8gUGxlYXNlIHVzZSB0aGUgX3dlYmtpdF8gY291bnRlcnBhcnRzLgogKyAoTlNVUkwgKilf
d2ViX1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOworKyAoTlNVUkwg
Kilfd2ViX1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZl
VG9VUkw6KE5TVVJMICopVVJMOwogCisvLyBOZXcgU1BJLgogLy8gUmV0dXJuIHZhbHVlIG9mIG5p
bCBtZWFucyBlcnJvciBpbiBVUkwgcGFyc2luZy4KICsgKE5TVVJMICopX3dlYmtpdF9VUkxXaXRo
VXNlclR5cGVkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKKysgKE5TVVJMICopX3dlYmtpdF9V
UkxXaXRoVXNlclR5cGVkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRvVVJMOihO
U1VSTCAqKVVSTDsKIAogKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nOwogKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nIHJlbGF0aXZlVG9VUkw6KE5TVVJMICopYmFzZVVSTDsKIAorKyAoTlNVUkwg
Kilfd2ViX1VSTFdpdGhEYXRhOihOU0RhdGEgKilkYXRhOworKyAoTlNVUkwgKilfd2ViX1VSTFdp
dGhEYXRhOihOU0RhdGEgKilkYXRhIHJlbGF0aXZlVG9VUkw6KE5TVVJMICopYmFzZVVSTDsKKwog
LSAoTlNEYXRhICopX3dlYl9vcmlnaW5hbERhdGE7CiAtIChOU1N0cmluZyAqKV93ZWJfb3JpZ2lu
YWxEYXRhQXNTdHJpbmc7Ci0tIChjb25zdCBjaGFyKilfd2ViX1VSTENTdHJpbmc7CistIChjb25z
dCBjaGFyICopX3dlYl9VUkxDU3RyaW5nOwogCiAtIChOU1N0cmluZyAqKV93ZWJfaG9zdFN0cmlu
ZzsKIApAQCAtNzEsMTYgKzc4LDE0IEBACiAKIC0gKEJPT0wpX3dlYl9pc1VzZXJWaXNpYmxlVVJM
OwogCi0vLyBEZXByZWNhdGVkIGFzIGl0IGlnbm9yZXMgVVJMIHBhcnNpbmcgZXJyb3JzLgotLy8g
UGxlYXNlIHVzZSBfd2Via2l0X2RlY29kZUhvc3ROYW1lIGluc3RlYWQuCi0vLyBUdXJucyBmdW5u
eS1sb29raW5nIEFTQ0lJIGZvcm0gaW50byBVbmljb2RlLCByZXR1cm5zIHNlbGYgaWYgbm8gZGVj
b2RpbmcgbmVlZGVkLgorLy8gRGVwcmVjYXRlZCBhcyBpdCBpZ25vcmVzIFVSTCBwYXJzaW5nIGVy
cm9yLgorLy8gUGxlYXNlIHVzZSB0aGUgX3dlYmtpdF8gY291bnRlcnBhcnRzLgorLy8gdHVybnMg
ZnVubnktbG9va2luZyBBU0NJSSBmb3JtIGludG8gVW5pY29kZSwgcmV0dXJucyBzZWxmIGlmIG5v
IGRlY29kaW5nIG5lZWRlZCwgY29udmVuaWVudCBjb3ZlcgogLSAoTlNTdHJpbmcgKilfd2ViX2Rl
Y29kZUhvc3ROYW1lOwotCi0vLyBEZXByZWNhdGVkIGFzIGl0IGlnbm9yZXMgVVJMIHBhcnNpbmcg
ZXJyb3JzLgotLy8gUGxlYXNlIHVzZSB0aGUgX3dlYmtpdF9lbmNvZGVIb3N0TmFtZSBpbnN0ZWFk
LgotLy8gVHVybnMgVW5pY29kZSBpbnRvIGZ1bm55LWxvb2tpbmcgQVNDSUkgZm9ybSwgcmV0dXJu
cyBzZWxmIGlmIG5vIGVuY29kaW5nIG5lZWRlZC4KKy8vIHR1cm5zIFVuaWNvZGUgaW50byBmdW5u
eS1sb29raW5nIEFTQ0lJIGZvcm0sIHJldHVybnMgc2VsZiBpZiBubyBkZWNvZGluZyBuZWVkZWQs
IGNvbnZlbmllbnQgY292ZXIKIC0gKE5TU3RyaW5nICopX3dlYl9lbmNvZGVIb3N0TmFtZTsKIAor
Ly8gTmV3IFNQSS4KIC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IgaW4gVVJMIHBh
cnNpbmcuCiAtIChOU1N0cmluZyAqKV93ZWJraXRfZGVjb2RlSG9zdE5hbWU7CiAtIChOU1N0cmlu
ZyAqKV93ZWJraXRfZW5jb2RlSG9zdE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCA0NDhmMjJmOWEzMTZkMGE3YWYyYzM3YWVkYTJj
OTBmNWI2NmM0Zjc1Li4xZWMwNGVhYWY1YjQ2NDc2ZDg5OWRmZTg1NWVlZjI2Y2MyOTM1ODJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC00MSwzOCArNDEsNzAgQEAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0
Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CisKKyNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0
OAogCiBAaW1wbGVtZW50YXRpb24gTlNVUkwgKFdlYk5TVVJMRXh0cmFzKQogCisrIChOU1VSTCAq
KV93ZWJfVVJMV2l0aFVzZXJUeXBlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgcmVsYXRpdmVU
b1VSTDooTlNVUkwgKilVUkwKK3sKKyAgICByZXR1cm4gVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0Rl
cHJlY2F0ZWQoc3RyaW5nLCBVUkwpOworfQorCiArIChOU1VSTCAqKV93ZWJfVVJMV2l0aFVzZXJU
eXBlZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKLSAgICByZXR1cm4gV1RGOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChzdHJpbmcpOworICAgIHJldHVybiBVUkxXaXRoVXNl
clR5cGVkU3RyaW5nRGVwcmVjYXRlZChzdHJpbmcsIG5pbCk7Cit9CisKKysgKE5TVVJMICopX3dl
YmtpdF9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRv
VVJMOihOU1VSTCAqKVVSTAoreworICAgIHJldHVybiBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0
cmluZywgVVJMKTsKIH0KIAogKyAoTlNVUkwgKilfd2Via2l0X1VSTFdpdGhVc2VyVHlwZWRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgcmV0dXJuIFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmlu
ZywgbmlsKTsKIH0KIAogKyAoTlNVUkwgKilfd2ViX1VSTFdpdGhEYXRhQXNTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nCiB7CisgICAgaWYgKHN0cmluZyA9PSBuaWwpIHsKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CiAgICAgcmV0dXJuIFtzZWxmIF93ZWJfVVJMV2l0aERhdGFBc1N0cmluZzpz
dHJpbmcgcmVsYXRpdmVUb1VSTDpuaWxdOwogfQogCiArIChOU1VSTCAqKV93ZWJfVVJMV2l0aERh
dGFBc1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwgKiliYXNl
VVJMCiB7Ci0gICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW1tzdHJpbmcgX3dlYmtpdF9zdHJp
bmdCeVRyaW1taW5nV2hpdGVzcGFjZV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJp
bmdFbmNvZGluZ10sIGJhc2VVUkwpOworICAgIGlmIChzdHJpbmcgPT0gbmlsKSB7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorICAgIHN0cmluZyA9IFtzdHJpbmcgX3dlYmtpdF9zdHJpbmdC
eVRyaW1taW5nV2hpdGVzcGFjZV07CisgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNp
bmdFbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXTsKKyAgICByZXR1cm4gVVJMV2l0
aERhdGEoZGF0YSwgYmFzZVVSTCk7Cit9CisKKysgKE5TVVJMICopX3dlYl9VUkxXaXRoRGF0YToo
TlNEYXRhICopZGF0YQoreworICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBuaWwpOworfSAg
ICAgIAorCisrIChOU1VSTCAqKV93ZWJfVVJMV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgcmVsYXRp
dmVUb1VSTDooTlNVUkwgKiliYXNlVVJMCit7CisgICAgcmV0dXJuIFVSTFdpdGhEYXRhKGRhdGEs
IGJhc2VVUkwpOwogfQogCiAtIChOU0RhdGEgKilfd2ViX29yaWdpbmFsRGF0YQogewotICAgIHJl
dHVybiBXVEY6Om9yaWdpbmFsVVJMRGF0YShzZWxmKTsKKyAgICByZXR1cm4gb3JpZ2luYWxVUkxE
YXRhKHNlbGYpOwogfQogCiAtIChOU1N0cmluZyAqKV93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmcK
IHsKLSAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6V1RG
OjpvcmlnaW5hbFVSTERhdGEoc2VsZikgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGlu
Z10pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOm9yaWdpbmFsVVJMRGF0YShzZWxmKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0
cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfd2ViX3Vz
ZXJWaXNpYmxlU3RyaW5nCkBAIC04MiwyMiArMTE0LDIyIEBAIC0gKE5TU3RyaW5nICopX3dlYl91
c2VyVmlzaWJsZVN0cmluZwogCiAtIChCT09MKV93ZWJfaXNFbXB0eQogewotICAgIGlmICghQ0ZV
UkxHZXRCYXNlVVJMKGJyaWRnZV9jYXN0KHNlbGYpKSkKLSAgICAgICAgcmV0dXJuICFDRlVSTEdl
dEJ5dGVzKGJyaWRnZV9jYXN0KHNlbGYpLCBudWxscHRyLCAwKTsKLSAgICByZXR1cm4gIVtXVEY6
Om9yaWdpbmFsVVJMRGF0YShzZWxmKSBsZW5ndGhdOworICAgIGlmICghQ0ZVUkxHZXRCYXNlVVJM
KChDRlVSTFJlZilzZWxmKSkKKyAgICAgICAgcmV0dXJuIENGVVJMR2V0Qnl0ZXMoKENGVVJMUmVm
KXNlbGYsIE5VTEwsIDApID09IDA7CisgICAgcmV0dXJuIFtvcmlnaW5hbFVSTERhdGEoc2VsZikg
bGVuZ3RoXSA9PSAwOwogfQogCi0tIChjb25zdCBjaGFyKilfd2ViX1VSTENTdHJpbmcKKy0gKGNv
bnN0IGNoYXIgKilfd2ViX1VSTENTdHJpbmcKIHsKICAgICBOU011dGFibGVEYXRhICpkYXRhID0g
W05TTXV0YWJsZURhdGEgZGF0YV07Ci0gICAgW2RhdGEgYXBwZW5kRGF0YTpXVEY6Om9yaWdpbmFs
VVJMRGF0YShzZWxmKV07CisgICAgW2RhdGEgYXBwZW5kRGF0YTpvcmlnaW5hbFVSTERhdGEoc2Vs
ZildOwogICAgIFtkYXRhIGFwcGVuZEJ5dGVzOiJcMCIgbGVuZ3RoOjFdOwotICAgIHJldHVybiAo
Y29uc3QgY2hhciopW2RhdGEgYnl0ZXNdOworICAgIHJldHVybiAoY29uc3QgY2hhciAqKVtkYXRh
IGJ5dGVzXTsKICB9CiAKIC0gKE5TVVJMICopX3dlYmtpdF9jYW5vbmljYWxpemUKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6VVJMQnlDYW5vbmljYWxpemluZ1VSTChzZWxmKTsKKyAgICByZXR1cm4g
VVJMQnlDYW5vbmljYWxpemluZ1VSTChzZWxmKTsKIH0KIAogLSAoTlNVUkwgKilfd2Via2l0X2Nh
bm9uaWNhbGl6ZV93aXRoX3d0ZgpAQCAtMTA4LDcgKzE0MCw3IEBAIC0gKE5TVVJMICopX3dlYmtp
dF9jYW5vbmljYWxpemVfd2l0aF93dGYKIAogLSAoTlNVUkwgKilfd2Via2l0X1VSTEJ5UmVtb3Zp
bmdGcmFnbWVudCAKIHsKLSAgICByZXR1cm4gV1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0
ZXJCZWZvcmVDb21wb25lbnQoc2VsZiwga0NGVVJMQ29tcG9uZW50RnJhZ21lbnQpOworICAgIHJl
dHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoc2VsZiwga0NG
VVJMQ29tcG9uZW50RnJhZ21lbnQpOwogfQogCiAtIChOU1VSTCAqKV93ZWJfVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvCkBAIC0xMzEsNiArMTYzLDI3IEBAIC0gKEJPT0wpX3dlYmtpdF9pc0ZpbGVVUkwK
ICAgICByZXR1cm4gW1tzZWxmIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddIF93ZWJraXRfaXNG
aWxlVVJMXTsKIH0KIAorLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xv
bgoreworICAgIE5TRGF0YSAqcmVzdWx0ID0gbmlsOworICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2Vw
YXJhdG9yczsKKyAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKENGVVJMUmVmKXNlbGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSwgJnJhbmdlV2l0aFNlcGFy
YXRvcnMpOworICAgIGlmIChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZv
dW5kKSB7CisgICAgICAgIE5TU3RyaW5nICphYnNvbHV0ZVN0cmluZyA9IFtzZWxmIGFic29sdXRl
U3RyaW5nXTsKKyAgICAgICAgTlNSYW5nZSBzZXBhcmF0b3JzUmFuZ2UgPSBOU01ha2VSYW5nZShy
YW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCArIDEsIHJhbmdlV2l0aFNlcGFyYXRvcnMubGVu
Z3RoIC0gcmFuZ2UubGVuZ3RoIC0gMSk7CisgICAgICAgIGlmIChzZXBhcmF0b3JzUmFuZ2UubG9j
YXRpb24gKyBzZXBhcmF0b3JzUmFuZ2UubGVuZ3RoIDw9IFthYnNvbHV0ZVN0cmluZyBsZW5ndGhd
KSB7CisgICAgICAgICAgICBOU1N0cmluZyAqc2xhc2hlcyA9IFthYnNvbHV0ZVN0cmluZyBzdWJz
dHJpbmdXaXRoUmFuZ2U6c2VwYXJhdG9yc1JhbmdlXTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFtz
bGFzaGVzIGRhdGFVc2luZ0VuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0oTlNEYXRhICopX3dlYl9k
YXRhRm9yVVJMQ29tcG9uZW50VHlwZTooQ0ZVUkxDb21wb25lbnRUeXBlKWNvbXBvbmVudFR5cGUK
K3sKKyAgICByZXR1cm4gV1RGOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBjb21wb25l
bnRUeXBlKTsKK30KKwogLShOU0RhdGEgKilfd2ViX3NjaGVtZURhdGEKIHsKICAgICByZXR1cm4g
V1RGOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRTY2hlbWUp
OwpAQCAtMTM5LDExICsxOTIsMTEgQEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZURhdGEKIC0oTlNE
YXRhICopX3dlYl9ob3N0RGF0YQogewogICAgIE5TRGF0YSAqcmVzdWx0ID0gV1RGOjpkYXRhRm9y
VVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKLQotICAgIC8vIFRh
a2Ugb2ZmIGxvY2FsaG9zdCBmb3IgZmlsZS4KLSAgICBpZiAoW3Jlc3VsdCBfd2ViX2lzQ2FzZUlu
c2Vuc2l0aXZlRXF1YWxUb0NTdHJpbmc6ImxvY2FsaG9zdCJdICYmIFtbc2VsZiBfd2ViX3NjaGVt
ZURhdGFdIF93ZWJfaXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzoiZmlsZSJdKQotICAg
ICAgICByZXR1cm4gbmlsOwotCisgICAgTlNEYXRhICpzY2hlbWUgPSBbc2VsZiBfd2ViX3NjaGVt
ZURhdGFdOworICAgIC8vIFRha2Ugb2ZmIGxvY2FsaG9zdCBmb3IgZmlsZQorICAgIGlmIChbc2No
ZW1lIF93ZWJfaXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzoiZmlsZSJdKSB7CisgICAg
ICAgIHJldHVybiAoW3Jlc3VsdCBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJpbmc6
ImxvY2FsaG9zdCJdKSA/IG5pbCA6IHJlc3VsdDsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtMTcwLDcgKzIyMyw3IEBAIEBpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoV2ViTlNV
UkxFeHRyYXMpCiAKIC0gKEJPT0wpX3dlYl9pc1VzZXJWaXNpYmxlVVJMCiB7Ci0gICAgcmV0dXJu
IFdURjo6aXNVc2VyVmlzaWJsZVVSTChzZWxmKTsKKyAgICByZXR1cm4gaXNVc2VyVmlzaWJsZVVS
TChzZWxmKTsKIH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTg1LDcg
KzIzOCw3IEBAIC0gKEJPT0wpX3dlYmtpdF9pc0ZpbGVVUkwKIAogLSAoTlNTdHJpbmcgKilfd2Vi
a2l0X3N0cmluZ0J5UmVwbGFjaW5nVmFsaWRQZXJjZW50RXNjYXBlcwogewotICAgIHJldHVybiBX
ZWJDb3JlOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoU3RyaW5nKHNlbGYpKTsKKyAgICByZXR1
cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKFN0cmluZyhzZWxmKSk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopX3dlYmtpdF9zY3JpcHRJZkphdmFTY3JpcHRVUkwKQEAgLTE5OCwyNCArMjUxLDI0IEBA
IC0gKE5TU3RyaW5nICopX3dlYmtpdF9zY3JpcHRJZkphdmFTY3JpcHRVUkwKIAogLSAoTlNTdHJp
bmcgKilfd2ViX2RlY29kZUhvc3ROYW1lCiB7Ci0gICAgTlNTdHJpbmcgKm5hbWUgPSBXVEY6OmRl
Y29kZUhvc3ROYW1lKHNlbGYpOworICAgIE5TU3RyaW5nICpuYW1lID0gZGVjb2RlSG9zdE5hbWUo
c2VsZik7CiAgICAgcmV0dXJuICFuYW1lID8gc2VsZiA6IG5hbWU7CiB9CiAKIC0gKE5TU3RyaW5n
ICopX3dlYl9lbmNvZGVIb3N0TmFtZQogewotICAgIE5TU3RyaW5nICpuYW1lID0gV1RGOjplbmNv
ZGVIb3N0TmFtZShzZWxmKTsKKyAgICBOU1N0cmluZyAqbmFtZSA9IGVuY29kZUhvc3ROYW1lKHNl
bGYpOwogICAgIHJldHVybiAhbmFtZSA/IHNlbGYgOiBuYW1lOwogfQogCiAtIChOU1N0cmluZyAq
KV93ZWJraXRfZGVjb2RlSG9zdE5hbWUKIHsKLSAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFt
ZShzZWxmKTsKKyAgICByZXR1cm4gZGVjb2RlSG9zdE5hbWUoc2VsZik7CiB9CiAKIC0gKE5TU3Ry
aW5nICopX3dlYmtpdF9lbmNvZGVIb3N0TmFtZQogewotICAgIHJldHVybiBXVEY6OmVuY29kZUhv
c3ROYW1lKHNlbGYpOworICAgIHJldHVybiBlbmNvZGVIb3N0TmFtZShzZWxmKTsKIH0KIAogLShO
U1JhbmdlKV93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjNDcxNzdkY2E2NWMxYWJjODhmNWM0OTRjOTZh
OGIwMGE1NTI3YWYuLjFhOThiNzkyZmIxMjQ3MjdlNzBiYTM4ODBmZjZhZDY4MmY0YWRmYTAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0xMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODU1MzYuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5MTUKKworICAgICAgICBj
YXVzZXMgQVBJIHRlc3QgY3Jhc2hlcworCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKwor
ICAgICAgICAiW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5kIHVubmVlZGVkIGJ1ZmZlciBhbGxv
Y2F0aW9ucyBhbmQKKyAgICAgICAgY29weWluZyBpbiBVUkwgY29kZSwgYWxzbyByZW1vdmUgdW51
c2VkIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjIyMAorICAgICAgICBodHRwczovL2NvbW1pdHMud2Via2l0
Lm9yZy9yMjg1NTM2CisKIDIwMjEtMTEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlmeSBidWlsZCBvZiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9jb2Nv
YS9VUkxFeHRyYXMubW0KaW5kZXggYTcwMTk4ODg1YThlZDYwNGU0MjYzYjBhODVkZTllNGQ2NDlm
ODMzYS4uMGRiNDk2NjAwYzBjNmY0YmNlZjE4ODc1NDY2MWM3MDU3ZWMzNDQ5MiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjQ5
LDEwICsyNDksMTAgQEAgVEVTVChXVEZfVVJMRXh0cmFzLCBVUkxFeHRyYXNfUGFyc2luZ0Vycm9y
KQogCiBURVNUKFdURl9VUkxFeHRyYXMsIFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNVUkwgKnVy
bDEgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9
IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUo
dXJsMSA9PSBuaWwpOwogCi0gICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKG5pbCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09
IG5pbCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>