<?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>207930</bug_id>
          
          <creation_ts>2020-02-19 01:26:18 -0800</creation_ts>
          <short_desc>[Curl] Simplify Cookie class.</short_desc>
          <delta_ts>2020-02-20 12:07:17 -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>Platform</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Komori">takashi.komori</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>chris.reid</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pfeldman</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>takashi.komori</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1620568</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-19 01:26:18 -0800</bug_when>
    <thetext>In this ticket we will remove redundant implementation in curl Cookie classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620571</commentid>
    <comment_count>1</comment_count>
      <attachid>391148</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-19 01:36:59 -0800</bug_when>
    <thetext>Created attachment 391148
Remove redundant CookieJarCurl.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620726</commentid>
    <comment_count>2</comment_count>
      <attachid>391148</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-02-19 10:23:45 -0800</bug_when>
    <thetext>Comment on attachment 391148
Remove redundant CookieJarCurl.cpp

This is informal review: Please add a simple description of this fix. AFAIK, Curl implementation has an abstraction of cookie backend such as file-based, sqlite-based. This is a left over of those abstraction when file-based implementation was removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621120</commentid>
    <comment_count>3</comment_count>
      <attachid>391265</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-19 23:16:07 -0800</bug_when>
    <thetext>Created attachment 391265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621124</commentid>
    <comment_count>4</comment_count>
      <attachid>391266</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-19 23:47:14 -0800</bug_when>
    <thetext>Created attachment 391266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621348</commentid>
    <comment_count>5</comment_count>
      <attachid>391266</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-20 12:06:58 -0800</bug_when>
    <thetext>Comment on attachment 391266
Patch

Clearing flags on attachment: 391266

Committed r257078: &lt;https://trac.webkit.org/changeset/257078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621349</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-20 12:07:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621350</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-20 12:07:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59638605&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391148</attachid>
            <date>2020-02-19 01:36:59 -0800</date>
            <delta_ts>2020-02-19 23:16:04 -0800</delta_ts>
            <desc>Remove redundant CookieJarCurl.cpp</desc>
            <filename>cookie-simplify-0218.diff</filename>
            <type>text/plain</type>
            <size>29653</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4IGVjZmRlOTMwYjAyLi5kZjcyYTExZmVm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC01LDcgKzUsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZv
Q3VybC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVVdGlsLmNwcApAQCAtNDEsNyArNDAsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oCi0gICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckN1cmwuaAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAogICAgIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA2NTA2
ZjEwNzcwNi4uZDliY2Q4MDc4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNDksNyArNDksNiBAQCB0
eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwogI2VuZGlmCiAKICNp
ZiBVU0UoQ1VSTCkKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAjaW5jbHVkZSAiQ29va2ll
SmFyREIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjZW5kaWYKQEAgLTExNCwxMCAr
MTEzLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIAotICAg
IGNvbnN0IENvb2tpZUphckN1cmwmIGNvb2tpZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nv
b2tpZVN0b3JhZ2U7IH07CiAgICAgQ29va2llSmFyREImIGNvb2tpZURhdGFiYXNlKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVEYXRhYmFzZShVbmlxdWVSZWY8Q29v
a2llSmFyREI+JiYpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzRnJvbUhU
VFBSZXNwb25zZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5
KENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQ
cm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYpOwogI2Vsc2UKICAgICBXRUJDT1JFX0VY
UE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIE5ldHdvcmtpbmdDb250
ZXh0Kik7CkBAIC0xODQsNyArMTgzLDYgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPFNvdXBDb29r
aWVKYXI+IG1fY29va2llU3RvcmFnZTsKICAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Nvb2tpZU9i
c2VydmVySGFuZGxlcjsKICNlbGlmIFVTRShDVVJMKQotICAgIFVuaXF1ZVJlZjxDb29raWVKYXJD
dXJsPiBtX2Nvb2tpZVN0b3JhZ2U7CiAgICAgbXV0YWJsZSBVbmlxdWVSZWY8Q29va2llSmFyREI+
IG1fY29va2llRGF0YWJhc2U7CiAjZWxzZQogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4g
bV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODli
OGEyYzJiZi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgotCi0j
aWYgVVNFKENVUkwpCi0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyREIu
aCIKLSNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0K
LSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNl
c3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCi17Ci0gICAgU3Ry
aW5nQnVpbGRlciBjb29raWVzOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vz
c2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSAoZm9ySFRU
UEhlYWRlciA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHtmYWxzZX0pOwotICAgIGF1
dG8gc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRp
b25hbDxib29sPiB7ZmFsc2V9OwotCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gY29va2llSmFyREIu
c2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdU
Rjo6bnVsbG9wdCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7Ci0g
ICAgICAgICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvb2tp
ZXMuYXBwZW5kKCI7ICIpOwotICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUp
OwotICAgICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKLSAgICAgICAgICAgIGNvb2tpZXMu
YXBwZW5kKGNvb2tpZS52YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNvb2tp
ZXMudG9TdHJpbmcoKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLQotICAgIENv
b2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBj
b29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6
OlNvdXJjZTo6U2NyaXB0KTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJv
bUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0Ci17Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRh
YmFzZSgpOwotICAgIGNvb2tpZUphckRCLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVl
LCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQg
aWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KLSAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lv
bihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKLX0KLQotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBmaWx0ZXIgc2VjdXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCi0g
ICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCB0
cnVlKSwgZmFsc2UgfTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3Vy
bDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVy
RmllbGRQcm94eSkgY29uc3QKLXsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoc2Vzc2lvbiwgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFBy
b3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHku
ZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwotfQotCi12b2lkIENvb2tpZUphckN1cmw6OnNldENvb2tpZUFjY2Vw
dFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgYXV0byYgY29va2llSmFyREIgPSBzZXNzaW9u
LmNvb2tpZURhdGFiYXNlKCk7Ci0gICAgY29va2llSmFyREIuc2V0QWNjZXB0UG9saWN5KHBvbGlj
eSk7Ci19Ci0KLUNvb2tpZUFjY2VwdFBvbGljeSBDb29raWVKYXJDdXJsOjpjb29raWVBY2NlcHRQ
b2xpY3koY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAg
IHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuYWNjZXB0UG9saWN5KCk7Ci19Ci0KLWJv
b2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNl
KCkuaXNFbmFibGVkKCk7Ci19Ci0KLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUph
ckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGlmIChhdXRvIGNvb2tpZXMgPSBj
b29raWVKYXJEQi5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpIHsKLSAgICAgICAgcmF3Q29va2llcyA9IFdURk1v
dmUoKmNvb2tpZXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0Ci17Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29r
aWVEYXRhYmFzZSgpOwotICAgIGNvb2tpZUphckRCLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOwot
fQotCi12b2lkIENvb2tpZUphckN1cmw6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZAotfQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBj
b29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5k
ZWxldGVBbGxDb29raWVzKCk7Ci19Ci0KLVZlY3RvcjxDb29raWU+IENvb2tpZUphckN1cmw6Omdl
dEFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAot
ewotICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2Uo
KTsKLSAgICByZXR1cm4gY29va2llSmFyREIuZ2V0QWxsQ29va2llcygpOwotfQotCi12b2lkIENv
b2tpZUphckN1cmw6OnNldENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IENvb2tpZSYgY29va2llKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBjb29r
aWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5zZXRD
b29raWUoY29va2llKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBDb29raWUmIGNvb2tpZSkg
Y29uc3QKLXsKLSAgICBTdHJpbmcgdXJsID0gbWFrZVN0cmluZyhjb29raWUuc2VjdXJlID8gImh0
dHBzIl9zIDogImh0dHAiX3MsICI6Ly8iX3MsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsK
LSAgICBDb29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7
Ci0gICAgY29va2llSmFyREIuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwotfQotCi12
b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBO
b3QgeWV0IGltcGxlbWVudGVkCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFVTRShDVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJDdXJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2U3
ODc3NDM5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKLWVudW0gY2xhc3MgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgOiBib29sOwotc3RydWN0IENvb2tpZTsKLXN0cnVjdCBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eTsKLXN0cnVjdCBTYW1lU2l0ZUluZm87Ci1lbnVtIGNsYXNzIENvb2tp
ZUFjY2VwdFBvbGljeTsKLQotY2xhc3MgQ29va2llSmFyQ3VybCB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRDb29raWVBY2NlcHRQb2xpY3koY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgQ29v
a2llQWNjZXB0UG9saWN5KSBjb25zdDsKLSAgICBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNj
ZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0OwotICAgIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgY29uc3Q7Ci0gICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5JikgY29uc3Q7Ci0gICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Ci0gICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykgY29u
c3Q7Ci0gICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpIGNvbnN0
OwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
KSBjb25zdDsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lKSBjb25zdDsKLSAgICBWZWN0b3I8Q29va2ll
PiBnZXRBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0OwotICAg
IHZvaWQgc2V0Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IENvb2tp
ZSYpIGNvbnN0OwotICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IENvb2tpZSYpIGNvbnN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMjFkYzQ0NmE0MDku
LjNjZmNjMGUzZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAg
LTg4LDEyICs4OCwxMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVDb29raWVIZWFkZXJzKFJlc291cmNl
SGFuZGxlSW50ZXJuYWwqIGQsIGNvbnN0IFJlc291cmNlUmVxdWVzdAogewogICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNldENvb2tpZUhlYWRlciA9ICJzZXQtY29va2llOiAiOwogCi0gICAgY29uc3Qg
YXV0byYgc3RvcmFnZVNlc3Npb24gPSAqZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOwot
ICAgIGNvbnN0IGF1dG8mIGNvb2tpZUphciA9IHN0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IHJlc3BvbnNlLmhlYWRlcnMpIHsKICAg
ICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc2V0Q29va2llSGVh
ZGVyKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byBjb250ZW50cyA9IGhlYWRlci5yaWdodCho
ZWFkZXIubGVuZ3RoKCkgLSBzdHJsZW4oc2V0Q29va2llSGVhZGVyKSk7Ci0gICAgICAgICAgICBj
b29raWVKYXIuc2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2Uoc3RvcmFnZVNlc3Npb24sIHJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVzcG9uc2UudXJsLCBjb250ZW50cyk7CisgICAg
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPnNldENvb2tpZXNGcm9tSFRU
UFJlc3BvbnNlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVzcG9uc2UudXJsLCBj
b250ZW50cyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q3VybC5jcHAKaW5kZXggNmI5MDNjZDc2MDIuLmVkMDY4NzRkODFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE5ICsyOCwxMyBAQAogCiAjaWYgVVNFKENVUkwp
CiAKLSNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAjaW5j
bHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFj
Y2VwdFBvbGljeS5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OSw5ICs1MywyOCBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkKICNl
bmRpZgogfQogCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsK
KworICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSBmb3JIVFRQSGVhZGVyID8gV1RGOjpudWxsb3B0
IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OworICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3Rv
Y29sSXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07
CisKKyAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuc2VhcmNo
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdURjo6bnVs
bG9wdCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7Cisg
ICAgICAgICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvb2tp
ZXMuYXBwZW5kKCI7ICIpOworICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUp
OworICAgICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKKyAgICAgICAgICAgIGNvb2tpZXMu
YXBwZW5kKGNvb2tpZS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29v
a2llcy50b1N0cmluZygpOworfQorCiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCi0gICAgLCBtX2Nvb2tpZVN0b3JhZ2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJD
dXJsPigpKQogICAgIC8vIDptZW1vcnk6IGNyZWF0ZXMgaW4tbWVtb3J5IGRhdGFiYXNlLCBzZWUg
aHR0cHM6Ly93d3cuc3FsaXRlLm9yZy9pbm1lbW9yeWRiLmh0bWwKICAgICAsIG1fY29va2llRGF0
YWJhc2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJEQj4oc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkg
PyAiOm1lbW9yeToiX3MgOiBkZWZhdWx0Q29va2llSmFyUGF0aCgpKSkKIHsKQEAgLTgyLDE0ICs5
NSwyNCBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRhYmFz
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0
cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29va2llU3RvcmFnZSgpLnNldENvb2tpZXNGcm9t
RE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCB2YWx1ZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7Cisg
ICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29v
a2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgY29u
c3QKK3sKKyAgICBjb29raWVEYXRhYmFzZSgpLnNldEFjY2VwdFBvbGljeShwb2xpY3kpOwogfQog
CiBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNj
ZXB0UG9saWN5KCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGNvb2tpZVN0b3JhZ2UoKS5jb29raWVB
Y2NlcHRQb2xpY3koKnRoaXMpKSB7CisgICAgc3dpdGNoIChjb29raWVEYXRhYmFzZSgpLmFjY2Vw
dFBvbGljeSgpKSB7CiAgICAgY2FzZSBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5czoKICAgICAg
ICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5c0FjY2VwdDsKICAgICBjYXNl
IENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI6CkBAIC0xMDQsNjEgKzEyNyw2MSBAQCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5
KCkgY29uc3QKICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWlu
RG9jdW1lbnREb21haW47CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25z
dAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0
aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0
aGlzLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMo
Y29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIC8qIG1haW5Eb2N1
bWVudFVSTCAqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8gdXNl
LgogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tp
ZSYgY29va2llKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWUoKnRoaXMsIGNvb2tp
ZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoY29va2llKTsKIH0KIAogdm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkK
IHsKLSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCBjb29raWUpOworICAg
IFN0cmluZyB1cmwgPSBtYWtlU3RyaW5nKGNvb2tpZS5zZWN1cmUgPyAiaHR0cHMiX3MgOiAiaHR0
cCJfcywgIjovLyJfcywgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgpOworICAgIGNvb2tpZURh
dGFiYXNlKCkuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwogfQogCi12b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29r
aWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb29r
aWVTdG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCB1cmwsIGNvb2tpZSk7CisgICAgY29va2ll
RGF0YWJhc2UoKS5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5k
ZWxldGVBbGxDb29raWVzKCp0aGlzKTsKKyAgICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUFsbENv
b2tpZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIHNpbmNlKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKQogewotICAgIGNvb2tp
ZVN0b3JhZ2UoKS5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqdGhpcywgc2luY2UpOwor
ICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2ll
cykKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBjb29raWVIb3N0TmFtZXMgKi8sIEluY2x1ZGVIdHRw
T25seUNvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0gICAg
VU5VU0VEX1BBUkFNKGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwotICAgIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhv
c3ROYW1lcykKIHsKLSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cygqdGhpcywgY29va2llSG9zdE5hbWVzKTsKKyAgICBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzKTsKIH0KIAogVmVj
dG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKIHsKLSAg
ICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldEFsbENvb2tpZXMoKnRoaXMpOworICAgIHJldHVy
biBjb29raWVEYXRhYmFzZSgpLmdldEFsbENvb2tpZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKEhhc2hTZXQ8U3RyaW5nPiYgLyogaG9zdG5hbWVzICovKQogewotICAgIGNvb2tpZVN0b3Jh
Z2UoKS5nZXRIb3N0bmFtZXNXaXRoQ29va2llcygqdGhpcywgaG9zdG5hbWVzKTsKKyAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCiBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJikKQEAgLTE3Myw5ICsxOTYsMTQgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9
CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFz
a0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNv
b2tpZVN0b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKKyAgICBhdXRvIGNvb2tpZXMg
PSBjb29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIWNvb2tpZXMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJhd0Nvb2tpZXMgPSBXVEZNb3ZlKCpjb29raWVz
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZs
dXNoQ29va2llU3RvcmUoKQpAQCAtMTgzLDE0ICsyMTEsMTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IFdlYktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVy
IHJlcXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJz
dFBhcnR5LCB1cmwsIHRydWUpLCBmYWxzZSB9OwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25z
dAogewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94
eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZy
YW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
aGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5m
bywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVy
RmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dFByb3h5U2V0dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJiBwcm94eVNldHRpbmdzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcAppbmRleCBhMjcwZTZkODZmZi4uNDkxNWQ5MGRmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaWYgVVNFKENVUkwpCiAKICNpbmNsdWRl
ICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJDdXJsQ2FjaGVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiQ3VybENvbnRleHQuaCIKQEAgLTE0NSwxNyArMTQ0LDE1IEBAIFJlZjxDdXJsUmVxdWVzdD4g
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlCiAgICAgaWYgKHN0YXR1cyA9PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KSB7CiAg
ICAgICAgIGFkZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMocmVxdWVzdCk7CiAKLSAgICAgICAgYXV0
byYgc3RvcmFnZVNlc3Npb24gPSAqZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOwotICAg
ICAgICBhdXRvJiBjb29raWVKYXIgPSBzdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CiAg
ICAgICAgIGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVybCgpLnByb3RvY29s
SXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNv
b2tpZXM6Ok5vOwotICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBjb29raWVKYXIu
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVl
c3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2ll
cykuZmlyc3Q7CisgICAgICAgIFN0cmluZyBjb29raWVIZWFkZXJGaWVsZCA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwg
cmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CiAgICAgICAgIGlmICghY29va2llSGVh
ZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29va2llSGVhZGVyRmllbGQpOwogICAgIH0KIAog
ICAgIEN1cmxSZXF1ZXN0OjpTaG91bGRTdXNwZW5kIHNob3VsZFN1c3BlbmQgPSBkLT5tX2RlZmVy
c0xvYWRpbmcgPyBDdXJsUmVxdWVzdDo6U2hvdWxkU3VzcGVuZDo6WWVzIDogQ3VybFJlcXVlc3Q6
OlNob3VsZFN1c3BlbmQ6Ok5vOwogICAgIGF1dG8gY3VybFJlcXVlc3QgPSBDdXJsUmVxdWVzdDo6
Y3JlYXRlKHJlcXVlc3QsICpkZWxlZ2F0ZSgpLCBzaG91bGRTdXNwZW5kLCBDdXJsUmVxdWVzdDo6
RW5hYmxlTXVsdGlwYXJ0OjpZZXMsIEN1cmxSZXF1ZXN0OjpDYXB0dXJlTmV0d29ya0xvYWRNZXRy
aWNzOjpCYXNpYywgUmVmUHRyPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPihkLT5tX21l
c3NhZ2VRdWV1ZSkpOwotICAgIAorCiAgICAgcmV0dXJuIGN1cmxSZXF1ZXN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29r
aWVNYW5hZ2VyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMv
Y3VybC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHAKaW5kZXggN2E1Y2IzOTZlMjkuLmMyZWYxNTY4
NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvY3Vy
bC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICB9CiAKICAgICBtX3Byb2Nlc3MuZm9yRWFj
aE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihbY3VybFBvbGljeV0gKGNvbnN0IGF1dG8mIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24uY29va2llU3Rv
cmFnZSgpLnNldENvb2tpZUFjY2VwdFBvbGljeShuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGN1cmxQ
b2xpY3kpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2V0Q29va2llQWNjZXB0UG9s
aWN5KGN1cmxQb2xpY3kpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggNDcz
NjM1OGEzY2IuLjk3N2E0MDNiZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC00NDQsMTAgKzQ0
NCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVzdGFydFdpdGhDcmVkZW50aWFsKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Np
b24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVx
dWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6Olll
cyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxk
ID0gY29va2llSmFyLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCpzdG9yYWdlU2Vzc2lv
biwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86
OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIGluY2x1ZGVTZWN1cmVDb29raWVzKS5maXJzdDsKKyAgICBhdXRvIGNvb2tpZUhlYWRlckZp
ZWxkID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyku
Zmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhl
YWRlckZpZWxkKTsKIH0KQEAgLTQ1NiwxMiArNDU0LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6aGFuZGxlQ29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0Q29va2llSGVhZGVyID0gInNldC1jb29r
aWU6ICI7CiAKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFn
ZVNlc3Npb24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBmb3IgKGF1dG8gaGVhZGVyIDogcmVzcG9u
c2UuaGVhZGVycykgewogICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzZXRDb29raWVIZWFkZXIpKSB7CiAgICAgICAgICAgICBTdHJpbmcgc2V0Q29va2llU3Ry
aW5nID0gaGVhZGVyLnJpZ2h0KGhlYWRlci5sZW5ndGgoKSAtIHN0cmxlbihzZXRDb29raWVIZWFk
ZXIpKTsKLSAgICAgICAgICAgIGNvb2tpZUphci5zZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZSgq
c3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVzcG9uc2Uu
dXJsLCBzZXRDb29raWVTdHJpbmcpOworICAgICAgICAgICAgbV9zZXNzaW9uLT5uZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKS0+c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UocmVxdWVzdC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIHNldENvb2tpZVN0cmluZyk7CiAgICAgICAg
IH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391265</attachid>
            <date>2020-02-19 23:16:07 -0800</date>
            <delta_ts>2020-02-19 23:47:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207930-20200220160949.patch</filename>
            <type>text/plain</type>
            <size>33757</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU5ZWZiMTM4NWRmNzE0
NzJmZTg1ZjYyNDM4ZjlmYTA3NjdhNDU3NS4uOGIyMmIzZWZkMWZkZjkyODZkMWE0ZGE5ZTI3MzFl
ZDUzZDNmMGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTE5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBT
aW1wbGlmeSBDb29raWUgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBDb29raWVKYXJDdXJsLmNwcCBhbmQgbWFk
ZSBOZXR3b3JrRGF0YVRhc2tDdXJsIGFjY2VzcyBDb29raWVKYXJEQiBkaXJlY3RseS4KKyAgICAg
ICAgQ29va2llSmFyQ3VybCB3YXMgdXNlZCBmb3Igc3VwcG9ydGluZyBmaWxlIGJhc2VkIGNvb2tp
ZSBkYXRhYmFzZSBidXQgbm93IGl0IGlzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlQ29va2llSGVh
ZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llQWNjZXB0UG9saWN5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdCk6CisKIDIwMjAtMDItMTcgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWluIGltcGxlbWVudGF0aW9uIGZvciBsYXp5
IGltYWdlIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWQwMWQ5NDYwOTg5ZGFlZmUzZmNiYjEwMDUwMWUx
YTQzYzgwMjliOS4uYTZmMTRkNzc2NGFhNWNmNzgzMGYzMzg5ZmZjMWQyYmY1N2E1MjcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMi0xOSAgVGFrYXNoaSBLb21vcmkgIDxUYWth
c2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gU2ltcGxpZnkgQ29va2llIGNs
YXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCByZWR1bmRhbnQgQ29va2llSmFyQ3VybC5jcHAgYW5kIG1hZGUgTmV0d29ya0RhdGFUYXNr
Q3VybCBhY2Nlc3MgQ29va2llSmFyREIgZGlyZWN0bHkuCisgICAgICAgIENvb2tpZUphckN1cmwg
d2FzIHVzZWQgZm9yIHN1cHBvcnRpbmcgZmlsZSBiYXNlZCBjb29raWUgZGF0YWJhc2UgYnV0IG5v
dyBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1
cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmFwcGVuZENvb2tpZUhlYWRlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmhhbmRsZUNvb2tpZUhlYWRlcnMpOgorCiAyMDIw
LTAyLTE3ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRGF0YSBkZXRlY3RvcnMgZG8gbm90IHRyaWdnZXIgb24gbWFjQ2F0YWx5c3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4IGVjZmRlOTMwYjAyN2NhZGRiZjAwNDk1MzZlNmEwMjk0
ZjgyM2JjMGIuLmRmNzJhMTFmZWZkZDI5OGE3MzVmNmZmMDE0MjBhNTkwZmZiNmM4NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtNSw3ICs1LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1
cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVTdG9yYWdlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHAKQEAgLTQxLDcgKzQwLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAotICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDY1
YTRkMjFmNzk4MDE5MmYzZDc1MDdlYmMyM2E5ZS4uZDliY2Q4MDc4YTA2YTJkNjg4ODBkMmQ2ZThm
ZGM0NTgxMzg1ODUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC00OSw3ICs0OSw2IEBAIHR5cGVkZWYg
c3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBDb29raWVKYXI7CiAjZW5kaWYKIAogI2lmIFVTRShD
VVJMKQotI2luY2x1ZGUgIkNvb2tpZUphckN1cmwuaCIKICNpbmNsdWRlICJDb29raWVKYXJEQi5o
IgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNlbmRpZgpAQCAtMTE0LDEwICsxMTMsMTAg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCk7CiAgICAgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogCi0gICAgY29uc3Qg
Q29va2llSmFyQ3VybCYgY29va2llU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llU3Rv
cmFnZTsgfTsKICAgICBDb29raWVKYXJEQiYgY29va2llRGF0YWJhc2UoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZURhdGFiYXNlKFVuaXF1ZVJlZjxDb29raWVKYXJE
Qj4mJik7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tSFRUUFJlc3Bv
bnNlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3koQ29va2ll
QWNjZXB0UG9saWN5KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3h5U2V0
dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJik7CiAjZWxzZQogICAgIFdFQkNPUkVfRVhQT1JUIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgTmV0d29ya2luZ0NvbnRleHQqKTsK
QEAgLTE4NCw3ICsxODMsNiBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8U291cENvb2tpZUphcj4g
bV9jb29raWVTdG9yYWdlOwogICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2llT2JzZXJ2ZXJI
YW5kbGVyOwogI2VsaWYgVVNFKENVUkwpCi0gICAgVW5pcXVlUmVmPENvb2tpZUphckN1cmw+IG1f
Y29va2llU3RvcmFnZTsKICAgICBtdXRhYmxlIFVuaXF1ZVJlZjxDb29raWVKYXJEQj4gbV9jb29r
aWVEYXRhYmFzZTsKICNlbHNlCiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OWI4YTJjMmJm
ZjBkYzMzMTlhOWVmZGE4MzRmYzFhYTljZGNiNDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgotCi0jaWYgVVNF
KENVUkwpCi0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyREIuaCIKLSNp
bmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgotI2luY2x1ZGUgIk5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCi17Ci0gICAgU3RyaW5nQnVp
bGRlciBjb29raWVzOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5j
b29raWVEYXRhYmFzZSgpOwotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSAoZm9ySFRUUEhlYWRl
ciA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHtmYWxzZX0pOwotICAgIGF1dG8gc2Vj
dXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxi
b29sPiB7ZmFsc2V9OwotCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gY29va2llSmFyREIuc2VhcmNo
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdURjo6bnVs
bG9wdCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvb2tpZXMuYXBw
ZW5kKCI7ICIpOwotICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUpOwotICAg
ICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKLSAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5k
KGNvb2tpZS52YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNvb2tpZXMudG9T
dHJpbmcoKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLQotICAgIENvb2tpZUph
ckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVK
YXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJj
ZTo6U2NyaXB0KTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBS
ZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17
Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgp
OwotICAgIGNvb2tpZUphckRCLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29r
aWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Q29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0Ci17Ci0g
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhl
IGNhbGxlciByZXF1ZXN0cyBpdC4KLSAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKLX0KLQotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAg
ICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0
ZXIgc2VjdXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCi0gICAgcmV0
dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKSwg
ZmFsc2UgfTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQ
cm94eSkgY29uc3QKLXsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
c2Vzc2lvbiwgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNh
bWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJ
RCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpOwotfQotCi12b2lkIENvb2tpZUphckN1cmw6OnNldENvb2tpZUFjY2VwdFBvbGlj
eShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgYXV0byYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tp
ZURhdGFiYXNlKCk7Ci0gICAgY29va2llSmFyREIuc2V0QWNjZXB0UG9saWN5KHBvbGljeSk7Ci19
Ci0KLUNvb2tpZUFjY2VwdFBvbGljeSBDb29raWVKYXJDdXJsOjpjb29raWVBY2NlcHRQb2xpY3ko
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIHJldHVy
biBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuYWNjZXB0UG9saWN5KCk7Ci19Ci0KLWJvb2wgQ29v
a2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNF
bmFibGVkKCk7Ci19Ci0KLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAg
IFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0g
c2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGlmIChhdXRvIGNvb2tpZXMgPSBjb29raWVK
YXJEQi5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCkpIHsKLSAgICAgICAgcmF3Q29va2llcyA9IFdURk1vdmUoKmNv
b2tpZXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0Ci17Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRh
YmFzZSgpOwotICAgIGNvb2tpZUphckRCLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOwotfQotCi12
b2lkIENvb2tpZUphckN1cmw6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAot
fQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBjb29raWVK
YXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5kZWxldGVB
bGxDb29raWVzKCk7Ci19Ci0KLVZlY3RvcjxDb29raWU+IENvb2tpZUphckN1cmw6OmdldEFsbENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAg
IENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAg
ICByZXR1cm4gY29va2llSmFyREIuZ2V0QWxsQ29va2llcygpOwotfQotCi12b2lkIENvb2tpZUph
ckN1cmw6OnNldENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IENvb2tpZSYgY29va2llKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBjb29raWVKYXJE
QiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5zZXRDb29raWUo
Y29va2llKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBDb29raWUmIGNvb2tpZSkgY29uc3QK
LXsKLSAgICBTdHJpbmcgdXJsID0gbWFrZVN0cmluZyhjb29raWUuc2VjdXJlID8gImh0dHBzIl9z
IDogImh0dHAiX3MsICI6Ly8iX3MsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKLSAgICBD
b29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7Ci0gICAg
Y29va2llSmFyREIuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwotfQotCi12b2lkIENv
b2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVT
RShDVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2U3ODc3NDM5
YzNiN2UxYjNlMmQ1YWVlNTAyZGZhNzdlZTUyMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Ci1lbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVD
b29raWVzIDogYm9vbDsKLXN0cnVjdCBDb29raWU7Ci1zdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHk7Ci1zdHJ1Y3QgU2FtZVNpdGVJbmZvOwotZW51bSBjbGFzcyBDb29raWVBY2Nl
cHRQb2xpY3k7Ci0KLWNsYXNzIENvb2tpZUphckN1cmwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJv
bUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZvaWQgc2V0
Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIENvb2tpZUFj
Y2VwdFBvbGljeSkgY29uc3Q7Ci0gICAgQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBv
bGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKLSAgICBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0OwotICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwotICAgIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYpIGNvbnN0OwotICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpIGNvbnN0Owot
ICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKSBjb25zdDsKLSAg
ICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgY29u
c3Q7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBXYWxsVGltZSkgY29uc3Q7Ci0gICAgVmVjdG9yPENvb2tpZT4gZ2V0
QWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKLSAgICB2b2lk
IHNldENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWUmKSBj
b25zdDsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBDb29raWUmKSBjb25zdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDIxZGM0NDZhNDA5OGI3ZWYw
MWY0MGJhMDJjNjM0MjE4ZGVmY2Y0NTAuLjNjZmNjMGUzZjk5MTY1ODgxYTVjZDQ4ODFjNWZmNDY0
ODc4YmE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtODgs
MTIgKzg4LDEwIEBAIHN0YXRpYyB2b2lkIGhhbmRsZUNvb2tpZUhlYWRlcnMoUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiB7CiAgICAgc3RhdGljIGNvbnN0
IGF1dG8gc2V0Q29va2llSGVhZGVyID0gInNldC1jb29raWU6ICI7CiAKLSAgICBjb25zdCBhdXRv
JiBzdG9yYWdlU2Vzc2lvbiA9ICpkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7Ci0gICAg
Y29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogcmVzcG9uc2UuaGVhZGVycykgewogICAgICAg
ICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzZXRDb29raWVIZWFkZXIp
KSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvIGNvbnRlbnRzID0gaGVhZGVyLnJpZ2h0KGhlYWRl
ci5sZW5ndGgoKSAtIHN0cmxlbihzZXRDb29raWVIZWFkZXIpKTsKLSAgICAgICAgICAgIGNvb2tp
ZUphci5zZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIGNvbnRlbnRzKTsKKyAgICAgICAg
ICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+c2V0Q29va2llc0Zyb21IVFRQUmVz
cG9uc2UocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIGNvbnRl
bnRzKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJs
LmNwcAppbmRleCA2YjkwM2NkNzYwMmJlZGI0NWQ0OWVjNWZhYzI5ZTM1MzRhMjI1ZDg1Li5lZDA2
ODc0ZDgxZTY2MDU3MDcyODU1YWM2N2JjYTM5MmUyODg2MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE5ICsyOCwxMyBAQAogCiAjaWYgVVNFKENVUkwpCiAK
LSNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAjaW5jbHVk
ZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
OSw5ICs1MywyOCBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkKICNlbmRp
ZgogfQogCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgYm9vbCBmb3JIVFRQSGVhZGVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsKKwor
ICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSBmb3JIVFRQSGVhZGVyID8gV1RGOjpudWxsb3B0IDog
T3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OworICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3RvY29s
SXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07CisK
KyAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29v
a2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdURjo6bnVsbG9w
dCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7CisgICAg
ICAgICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvb2tpZXMu
YXBwZW5kKCI7ICIpOworICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUpOwor
ICAgICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKKyAgICAgICAgICAgIGNvb2tpZXMuYXBw
ZW5kKGNvb2tpZS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29va2ll
cy50b1N0cmluZygpOworfQorCiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCi0gICAgLCBtX2Nvb2tpZVN0b3JhZ2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJDdXJs
PigpKQogICAgIC8vIDptZW1vcnk6IGNyZWF0ZXMgaW4tbWVtb3J5IGRhdGFiYXNlLCBzZWUgaHR0
cHM6Ly93d3cuc3FsaXRlLm9yZy9pbm1lbW9yeWRiLmh0bWwKICAgICAsIG1fY29va2llRGF0YWJh
c2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJEQj4oc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyAi
Om1lbW9yeToiX3MgOiBkZWZhdWx0Q29va2llSmFyUGF0aCgpKSkKIHsKQEAgLTgyLDE0ICs5NSwy
NCBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRhYmFzZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29va2llU3RvcmFnZSgpLnNldENvb2tpZXNGcm9tRE9N
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCB2
YWx1ZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2
YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAg
Y29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2ll
SmFyREI6OlNvdXJjZTo6TmV0d29yayk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgY29uc3QK
K3sKKyAgICBjb29raWVEYXRhYmFzZSgpLnNldEFjY2VwdFBvbGljeShwb2xpY3kpOwogfQogCiBI
VFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0
UG9saWN5KCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGNvb2tpZVN0b3JhZ2UoKS5jb29raWVBY2Nl
cHRQb2xpY3koKnRoaXMpKSB7CisgICAgc3dpdGNoIChjb29raWVEYXRhYmFzZSgpLmFjY2VwdFBv
bGljeSgpKSB7CiAgICAgY2FzZSBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5czoKICAgICAgICAg
cmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5c0FjY2VwdDsKICAgICBjYXNlIENv
b2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI6CkBAIC0xMDQsNjEgKzEyNyw2MSBAQCBIVFRQQ29va2ll
QWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkg
Y29uc3QKICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9j
dW1lbnREb21haW47CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUg
Y2FsbGVyIHJlcXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIC8qIG1haW5Eb2N1bWVu
dFVSTCAqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8gdXNlLgog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWUoKnRoaXMsIGNvb2tpZSk7
CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoY29va2llKTsKIH0KIAogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsK
LSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCBjb29raWUpOworICAgIFN0
cmluZyB1cmwgPSBtYWtlU3RyaW5nKGNvb2tpZS5zZWN1cmUgPyAiaHR0cHMiX3MgOiAiaHR0cCJf
cywgIjovLyJfcywgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgpOworICAgIGNvb2tpZURhdGFi
YXNlKCkuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb29raWVT
dG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCB1cmwsIGNvb2tpZSk7CisgICAgY29va2llRGF0
YWJhc2UoKS5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5kZWxl
dGVBbGxDb29raWVzKCp0aGlzKTsKKyAgICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUFsbENvb2tp
ZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdhbGxUaW1lIHNpbmNlKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKQogewotICAgIGNvb2tpZVN0
b3JhZ2UoKS5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqdGhpcywgc2luY2UpOworICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBjb29raWVIb3N0TmFtZXMgKi8sIEluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0gICAgVU5V
U0VEX1BBUkFNKGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwotICAgIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3RO
YW1lcykKIHsKLSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcygq
dGhpcywgY29va2llSG9zdE5hbWVzKTsKKyAgICBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
b2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzKTsKIH0KIAogVmVjdG9y
PENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKIHsKLSAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmdldEFsbENvb2tpZXMoKnRoaXMpOworICAgIHJldHVybiBj
b29raWVEYXRhYmFzZSgpLmdldEFsbENvb2tpZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEhhc2hTZXQ8U3RyaW5nPiYgLyogaG9zdG5hbWVzICovKQogewotICAgIGNvb2tpZVN0b3JhZ2Uo
KS5nZXRIb3N0bmFtZXNXaXRoQ29va2llcygqdGhpcywgaG9zdG5hbWVzKTsKKyAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCiBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJikKQEAgLTE3Myw5ICsxOTYsMTQgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAK
LWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tp
ZVN0b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBj
b29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIWNvb2tpZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJhd0Nvb2tpZXMgPSBXVEZNb3ZlKCpjb29raWVzKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNo
Q29va2llU3RvcmUoKQpAQCAtMTgzLDE0ICsyMTEsMTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdl
YktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJl
cXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBh
cnR5LCB1cmwsIHRydWUpLCBmYWxzZSB9OwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAog
ewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5z
YW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1l
SUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1
cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVh
ZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywg
aGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmll
bGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFBy
b3h5U2V0dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJiBwcm94eVNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAppbmRleCBhMjcwZTZkODZmZjlhOTZiZTI1ZmViM2YzZmJkODBkZmFiOGM4YjY5
Li40OTE1ZDkwZGZhYjJjYTQ1ZmRmY2NjOTE4MmRmYWZhMzhmZTY0YWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lmIFVTRShDVVJMKQogCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkN1cmxDb250ZXh0LmgiCkBAIC0xNDUsMTcgKzE0NCwxNSBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJl
c291cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZQogICAgIGlmIChzdGF0dXMgPT0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCkgewogICAg
ICAgICBhZGRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKHJlcXVlc3QpOwogCi0gICAgICAgIGF1dG8m
IHN0b3JhZ2VTZXNzaW9uID0gKmQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKLSAgICAg
ICAgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOwogICAg
ICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29r
aWVzOjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gY29va2llSmFyLmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0
LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
LmZpcnN0OworICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OwogICAgICAgICBpZiAoIWNvb2tpZUhlYWRl
ckZpZWxkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhlYWRlckZpZWxkKTsKICAgICB9CiAKICAg
ICBDdXJsUmVxdWVzdDo6U2hvdWxkU3VzcGVuZCBzaG91bGRTdXNwZW5kID0gZC0+bV9kZWZlcnNM
b2FkaW5nID8gQ3VybFJlcXVlc3Q6OlNob3VsZFN1c3BlbmQ6OlllcyA6IEN1cmxSZXF1ZXN0OjpT
aG91bGRTdXNwZW5kOjpObzsKICAgICBhdXRvIGN1cmxSZXF1ZXN0ID0gQ3VybFJlcXVlc3Q6OmNy
ZWF0ZShyZXF1ZXN0LCAqZGVsZWdhdGUoKSwgc2hvdWxkU3VzcGVuZCwgQ3VybFJlcXVlc3Q6OkVu
YWJsZU11bHRpcGFydDo6WWVzLCBDdXJsUmVxdWVzdDo6Q2FwdHVyZU5ldHdvcmtMb2FkTWV0cmlj
czo6QmFzaWMsIFJlZlB0cjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4oZC0+bV9tZXNz
YWdlUXVldWUpKTsKLSAgICAKKwogICAgIHJldHVybiBjdXJsUmVxdWVzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2ll
TWFuYWdlckN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1
cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCmluZGV4IDdhNWNiMzk2ZTI5Yzg4ZDg0ODBmYTFj
YjYzNzBjYmM0NWJmZmU3ZGUuLmMyZWYxNTY4NDUwNDIwMGY5OGVlNGZlNjBlMzVhZGRhMjVjMTlk
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJs
L1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeQogICAgIH0KIAogICAgIG1fcHJvY2Vzcy5mb3JFYWNo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFtjdXJsUG9saWN5XSAoY29uc3QgYXV0byYgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuc2V0Q29va2llQWNjZXB0UG9saWN5KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY3VybFBv
bGljeSk7CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVBY2NlcHRQb2xp
Y3koY3VybFBvbGljeSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA0NzM2
MzU4YTNjYjVhMmMyZDBlNmJlYzE2YWZkMjNjNzBiMTlhMjI3Li45NzdhNDAzYmU4ZGM5NjJhOWNj
ZmE2NDI4YmMxZDNlN2M0NjgyZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC00NDQsMTAgKzQ0
NCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVzdGFydFdpdGhDcmVkZW50aWFsKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Np
b24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVx
dWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6Olll
cyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxk
ID0gY29va2llSmFyLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCpzdG9yYWdlU2Vzc2lv
biwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86
OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIGluY2x1ZGVTZWN1cmVDb29raWVzKS5maXJzdDsKKyAgICBhdXRvIGNvb2tpZUhlYWRlckZp
ZWxkID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyku
Zmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhl
YWRlckZpZWxkKTsKIH0KQEAgLTQ1NiwxMiArNDU0LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6aGFuZGxlQ29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0Q29va2llSGVhZGVyID0gInNldC1jb29r
aWU6ICI7CiAKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFn
ZVNlc3Npb24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBmb3IgKGF1dG8gaGVhZGVyIDogcmVzcG9u
c2UuaGVhZGVycykgewogICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzZXRDb29raWVIZWFkZXIpKSB7CiAgICAgICAgICAgICBTdHJpbmcgc2V0Q29va2llU3Ry
aW5nID0gaGVhZGVyLnJpZ2h0KGhlYWRlci5sZW5ndGgoKSAtIHN0cmxlbihzZXRDb29raWVIZWFk
ZXIpKTsKLSAgICAgICAgICAgIGNvb2tpZUphci5zZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZSgq
c3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVzcG9uc2Uu
dXJsLCBzZXRDb29raWVTdHJpbmcpOworICAgICAgICAgICAgbV9zZXNzaW9uLT5uZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKS0+c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UocmVxdWVzdC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIHNldENvb2tpZVN0cmluZyk7CiAgICAgICAg
IH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391266</attachid>
            <date>2020-02-19 23:47:14 -0800</date>
            <delta_ts>2020-02-20 12:06:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207930-20200220164057.patch</filename>
            <type>text/plain</type>
            <size>33757</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU5ZWZiMTM4NWRmNzE0
NzJmZTg1ZjYyNDM4ZjlmYTA3NjdhNDU3NS4uOGIyMmIzZWZkMWZkZjkyODZkMWE0ZGE5ZTI3MzFl
ZDUzZDNmMGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTE5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBT
aW1wbGlmeSBDb29raWUgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBDb29raWVKYXJDdXJsLmNwcCBhbmQgbWFk
ZSBOZXR3b3JrRGF0YVRhc2tDdXJsIGFjY2VzcyBDb29raWVKYXJEQiBkaXJlY3RseS4KKyAgICAg
ICAgQ29va2llSmFyQ3VybCB3YXMgdXNlZCBmb3Igc3VwcG9ydGluZyBmaWxlIGJhc2VkIGNvb2tp
ZSBkYXRhYmFzZSBidXQgbm93IGl0IGlzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlQ29va2llSGVh
ZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llQWNjZXB0UG9saWN5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdCk6CisKIDIwMjAtMDItMTcgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWluIGltcGxlbWVudGF0aW9uIGZvciBsYXp5
IGltYWdlIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWQwMWQ5NDYwOTg5ZGFlZmUzZmNiYjEwMDUwMWUx
YTQzYzgwMjliOS4uYTZmMTRkNzc2NGFhNWNmNzgzMGYzMzg5ZmZjMWQyYmY1N2E1MjcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMi0xOSAgVGFrYXNoaSBLb21vcmkgIDxUYWth
c2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gU2ltcGxpZnkgQ29va2llIGNs
YXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCByZWR1bmRhbnQgQ29va2llSmFyQ3VybC5jcHAgYW5kIG1hZGUgTmV0d29ya0RhdGFUYXNr
Q3VybCBhY2Nlc3MgQ29va2llSmFyREIgZGlyZWN0bHkuCisgICAgICAgIENvb2tpZUphckN1cmwg
d2FzIHVzZWQgZm9yIHN1cHBvcnRpbmcgZmlsZSBiYXNlZCBjb29raWUgZGF0YWJhc2UgYnV0IG5v
dyBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1
cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmFwcGVuZENvb2tpZUhlYWRlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmhhbmRsZUNvb2tpZUhlYWRlcnMpOgorCiAyMDIw
LTAyLTE3ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRGF0YSBkZXRlY3RvcnMgZG8gbm90IHRyaWdnZXIgb24gbWFjQ2F0YWx5c3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4IGVjZmRlOTMwYjAyN2NhZGRiZjAwNDk1MzZlNmEwMjk0
ZjgyM2JjMGIuLmRmNzJhMTFmZWZkZDI5OGE3MzVmNmZmMDE0MjBhNTkwZmZiNmM4NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtNSw3ICs1LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1
cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVTdG9yYWdlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHAKQEAgLTQxLDcgKzQwLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAotICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDY1
YTRkMjFmNzk4MDE5MmYzZDc1MDdlYmMyM2E5ZS4uZDliY2Q4MDc4YTA2YTJkNjg4ODBkMmQ2ZThm
ZGM0NTgxMzg1ODUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC00OSw3ICs0OSw2IEBAIHR5cGVkZWYg
c3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBDb29raWVKYXI7CiAjZW5kaWYKIAogI2lmIFVTRShD
VVJMKQotI2luY2x1ZGUgIkNvb2tpZUphckN1cmwuaCIKICNpbmNsdWRlICJDb29raWVKYXJEQi5o
IgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNlbmRpZgpAQCAtMTE0LDEwICsxMTMsMTAg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCk7CiAgICAgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogCi0gICAgY29uc3Qg
Q29va2llSmFyQ3VybCYgY29va2llU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llU3Rv
cmFnZTsgfTsKICAgICBDb29raWVKYXJEQiYgY29va2llRGF0YWJhc2UoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZURhdGFiYXNlKFVuaXF1ZVJlZjxDb29raWVKYXJE
Qj4mJik7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tSFRUUFJlc3Bv
bnNlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3koQ29va2ll
QWNjZXB0UG9saWN5KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3h5U2V0
dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJik7CiAjZWxzZQogICAgIFdFQkNPUkVfRVhQT1JUIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgTmV0d29ya2luZ0NvbnRleHQqKTsK
QEAgLTE4NCw3ICsxODMsNiBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8U291cENvb2tpZUphcj4g
bV9jb29raWVTdG9yYWdlOwogICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2llT2JzZXJ2ZXJI
YW5kbGVyOwogI2VsaWYgVVNFKENVUkwpCi0gICAgVW5pcXVlUmVmPENvb2tpZUphckN1cmw+IG1f
Y29va2llU3RvcmFnZTsKICAgICBtdXRhYmxlIFVuaXF1ZVJlZjxDb29raWVKYXJEQj4gbV9jb29r
aWVEYXRhYmFzZTsKICNlbHNlCiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OWI4YTJjMmJm
ZjBkYzMzMTlhOWVmZGE4MzRmYzFhYTljZGNiNDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgotCi0jaWYgVVNF
KENVUkwpCi0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyREIuaCIKLSNp
bmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgotI2luY2x1ZGUgIk5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCi17Ci0gICAgU3RyaW5nQnVp
bGRlciBjb29raWVzOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5j
b29raWVEYXRhYmFzZSgpOwotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSAoZm9ySFRUUEhlYWRl
ciA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHtmYWxzZX0pOwotICAgIGF1dG8gc2Vj
dXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxi
b29sPiB7ZmFsc2V9OwotCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gY29va2llSmFyREIuc2VhcmNo
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdURjo6bnVs
bG9wdCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvb2tpZXMuYXBw
ZW5kKCI7ICIpOwotICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUpOwotICAg
ICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKLSAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5k
KGNvb2tpZS52YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNvb2tpZXMudG9T
dHJpbmcoKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLQotICAgIENvb2tpZUph
ckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVK
YXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJj
ZTo6U2NyaXB0KTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBS
ZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17
Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgp
OwotICAgIGNvb2tpZUphckRCLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29r
aWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Q29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0Ci17Ci0g
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhl
IGNhbGxlciByZXF1ZXN0cyBpdC4KLSAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKLX0KLQotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAg
ICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0
ZXIgc2VjdXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCi0gICAgcmV0
dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKSwg
ZmFsc2UgfTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQ
cm94eSkgY29uc3QKLXsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
c2Vzc2lvbiwgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNh
bWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJ
RCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpOwotfQotCi12b2lkIENvb2tpZUphckN1cmw6OnNldENvb2tpZUFjY2VwdFBvbGlj
eShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgYXV0byYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tp
ZURhdGFiYXNlKCk7Ci0gICAgY29va2llSmFyREIuc2V0QWNjZXB0UG9saWN5KHBvbGljeSk7Ci19
Ci0KLUNvb2tpZUFjY2VwdFBvbGljeSBDb29raWVKYXJDdXJsOjpjb29raWVBY2NlcHRQb2xpY3ko
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIHJldHVy
biBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuYWNjZXB0UG9saWN5KCk7Ci19Ci0KLWJvb2wgQ29v
a2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNF
bmFibGVkKCk7Ci19Ci0KLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAg
IFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCi0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0g
c2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGlmIChhdXRvIGNvb2tpZXMgPSBjb29raWVK
YXJEQi5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCkpIHsKLSAgICAgICAgcmF3Q29va2llcyA9IFdURk1vdmUoKmNv
b2tpZXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0Ci17Ci0gICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRh
YmFzZSgpOwotICAgIGNvb2tpZUphckRCLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOwotfQotCi12
b2lkIENvb2tpZUphckN1cmw6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAot
fQotCi12b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBjb29raWVK
YXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5kZWxldGVB
bGxDb29raWVzKCk7Ci19Ci0KLVZlY3RvcjxDb29raWU+IENvb2tpZUphckN1cmw6OmdldEFsbENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAg
IENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAg
ICByZXR1cm4gY29va2llSmFyREIuZ2V0QWxsQ29va2llcygpOwotfQotCi12b2lkIENvb2tpZUph
ckN1cmw6OnNldENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IENvb2tpZSYgY29va2llKSBjb25zdAotewotICAgIENvb2tpZUphckRCJiBjb29raWVKYXJE
QiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBjb29raWVKYXJEQi5zZXRDb29raWUo
Y29va2llKTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBDb29raWUmIGNvb2tpZSkgY29uc3QK
LXsKLSAgICBTdHJpbmcgdXJsID0gbWFrZVN0cmluZyhjb29raWUuc2VjdXJlID8gImh0dHBzIl9z
IDogImh0dHAiX3MsICI6Ly8iX3MsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKLSAgICBD
b29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7Ci0gICAg
Y29va2llSmFyREIuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwotfQotCi12b2lkIENv
b2tpZUphckN1cmw6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVT
RShDVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2U3ODc3NDM5
YzNiN2UxYjNlMmQ1YWVlNTAyZGZhNzdlZTUyMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Ci1lbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVD
b29raWVzIDogYm9vbDsKLXN0cnVjdCBDb29raWU7Ci1zdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHk7Ci1zdHJ1Y3QgU2FtZVNpdGVJbmZvOwotZW51bSBjbGFzcyBDb29raWVBY2Nl
cHRQb2xpY3k7Ci0KLWNsYXNzIENvb2tpZUphckN1cmwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJv
bUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZvaWQgc2V0
Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIENvb2tpZUFj
Y2VwdFBvbGljeSkgY29uc3Q7Ci0gICAgQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBv
bGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKLSAgICBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0OwotICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwotICAgIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYpIGNvbnN0OwotICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpIGNvbnN0Owot
ICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKSBjb25zdDsKLSAg
ICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgY29u
c3Q7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBXYWxsVGltZSkgY29uc3Q7Ci0gICAgVmVjdG9yPENvb2tpZT4gZ2V0
QWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKLSAgICB2b2lk
IHNldENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWUmKSBj
b25zdDsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBDb29raWUmKSBjb25zdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDIxZGM0NDZhNDA5OGI3ZWYw
MWY0MGJhMDJjNjM0MjE4ZGVmY2Y0NTAuLjNjZmNjMGUzZjk5MTY1ODgxYTVjZDQ4ODFjNWZmNDY0
ODc4YmE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtODgs
MTIgKzg4LDEwIEBAIHN0YXRpYyB2b2lkIGhhbmRsZUNvb2tpZUhlYWRlcnMoUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiB7CiAgICAgc3RhdGljIGNvbnN0
IGF1dG8gc2V0Q29va2llSGVhZGVyID0gInNldC1jb29raWU6ICI7CiAKLSAgICBjb25zdCBhdXRv
JiBzdG9yYWdlU2Vzc2lvbiA9ICpkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7Ci0gICAg
Y29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogcmVzcG9uc2UuaGVhZGVycykgewogICAgICAg
ICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzZXRDb29raWVIZWFkZXIp
KSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvIGNvbnRlbnRzID0gaGVhZGVyLnJpZ2h0KGhlYWRl
ci5sZW5ndGgoKSAtIHN0cmxlbihzZXRDb29raWVIZWFkZXIpKTsKLSAgICAgICAgICAgIGNvb2tp
ZUphci5zZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIGNvbnRlbnRzKTsKKyAgICAgICAg
ICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+c2V0Q29va2llc0Zyb21IVFRQUmVz
cG9uc2UocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIGNvbnRl
bnRzKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJs
LmNwcAppbmRleCA2YjkwM2NkNzYwMmJlZGI0NWQ0OWVjNWZhYzI5ZTM1MzRhMjI1ZDg1Li5kZjRk
YTExNTI1YmY2YzkxOGFmNWYwMzU2YzU3NzM2NDMzY2I4Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE5ICsyOCwxMyBAQAogCiAjaWYgVVNFKENVUkwpCiAK
LSNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAjaW5jbHVk
ZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
OSw5ICs1MywyOCBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkKICNlbmRp
ZgogfQogCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgYm9vbCBmb3JIVFRQSGVhZGVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsKKwor
ICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSBmb3JIVFRQSGVhZGVyID8gV1RGOjpudWxsb3B0IDog
T3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OworICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3RvY29s
SXMoImh0dHBzIikgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07CisK
KyAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29v
a2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIFdURjo6bnVsbG9w
dCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7CisgICAg
ICAgICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvb2tpZXMu
YXBwZW5kKCI7ICIpOworICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2llLm5hbWUpOwor
ICAgICAgICAgICAgY29va2llcy5hcHBlbmQoIj0iKTsKKyAgICAgICAgICAgIGNvb2tpZXMuYXBw
ZW5kKGNvb2tpZS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29va2ll
cy50b1N0cmluZygpOworfQorCiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCi0gICAgLCBtX2Nvb2tpZVN0b3JhZ2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJDdXJs
PigpKQogICAgIC8vIDptZW1vcnk6IGNyZWF0ZXMgaW4tbWVtb3J5IGRhdGFiYXNlLCBzZWUgaHR0
cHM6Ly93d3cuc3FsaXRlLm9yZy9pbm1lbW9yeWRiLmh0bWwKICAgICAsIG1fY29va2llRGF0YWJh
c2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJEQj4oc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyAi
Om1lbW9yeToiX3MgOiBkZWZhdWx0Q29va2llSmFyUGF0aCgpKSkKIHsKQEAgLTgyLDE0ICs5NSwy
NCBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRhYmFzZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29va2llU3RvcmFnZSgpLnNldENvb2tpZXNGcm9tRE9N
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCB2
YWx1ZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2
YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAg
Y29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2ll
SmFyREI6OlNvdXJjZTo6TmV0d29yayk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgY29uc3QK
K3sKKyAgICBjb29raWVEYXRhYmFzZSgpLnNldEFjY2VwdFBvbGljeShwb2xpY3kpOwogfQogCiBI
VFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0
UG9saWN5KCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGNvb2tpZVN0b3JhZ2UoKS5jb29raWVBY2Nl
cHRQb2xpY3koKnRoaXMpKSB7CisgICAgc3dpdGNoIChjb29raWVEYXRhYmFzZSgpLmFjY2VwdFBv
bGljeSgpKSB7CiAgICAgY2FzZSBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5czoKICAgICAgICAg
cmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5c0FjY2VwdDsKICAgICBjYXNlIENv
b2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI6CkBAIC0xMDQsNjEgKzEyNyw2MSBAQCBIVFRQQ29va2ll
QWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkg
Y29uc3QKICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9j
dW1lbnREb21haW47CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUg
Y2FsbGVyIHJlcXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIC8qIG1haW5Eb2N1bWVu
dFVSTCAqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8gdXNlLgog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWUoKnRoaXMsIGNvb2tpZSk7
CisgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoY29va2llKTsKIH0KIAogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsK
LSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCBjb29raWUpOworICAgIFN0
cmluZyB1cmwgPSBtYWtlU3RyaW5nKGNvb2tpZS5zZWN1cmUgPyAiaHR0cHMiX3MgOiAiaHR0cCJf
cywgIjovLyJfcywgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgpOworICAgIGNvb2tpZURhdGFi
YXNlKCkuZGVsZXRlQ29va2llKHVybCwgY29va2llLm5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb29raWVT
dG9yYWdlKCkuZGVsZXRlQ29va2llKCp0aGlzLCB1cmwsIGNvb2tpZSk7CisgICAgY29va2llRGF0
YWJhc2UoKS5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIGNvb2tpZVN0b3JhZ2UoKS5kZWxl
dGVBbGxDb29raWVzKCp0aGlzKTsKKyAgICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUFsbENvb2tp
ZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdhbGxUaW1lIHNpbmNlKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKQogewotICAgIGNvb2tpZVN0
b3JhZ2UoKS5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqdGhpcywgc2luY2UpOworICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBjb29raWVIb3N0TmFtZXMgKi8sIEluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0gICAgVU5V
U0VEX1BBUkFNKGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwotICAgIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoaG9zdG5hbWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3RO
YW1lcykKIHsKLSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcygq
dGhpcywgY29va2llSG9zdE5hbWVzKTsKKyAgICBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
b2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzKTsKIH0KIAogVmVjdG9y
PENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKIHsKLSAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmdldEFsbENvb2tpZXMoKnRoaXMpOworICAgIHJldHVybiBj
b29raWVEYXRhYmFzZSgpLmdldEFsbENvb2tpZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEhhc2hTZXQ8U3RyaW5nPiYgLyogaG9zdG5hbWVzICovKQogewotICAgIGNvb2tpZVN0b3JhZ2Uo
KS5nZXRIb3N0bmFtZXNXaXRoQ29va2llcygqdGhpcywgaG9zdG5hbWVzKTsKKyAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCiBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJikKQEAgLTE3Myw5ICsxOTYsMTQgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAK
LWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tp
ZVN0b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBj
b29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIWNvb2tpZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJhd0Nvb2tpZXMgPSBXVEZNb3ZlKCpjb29raWVzKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNo
Q29va2llU3RvcmUoKQpAQCAtMTgzLDE0ICsyMTEsMTUgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdl
YktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJl
cXVlc3RzIGl0LgorICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBh
cnR5LCB1cmwsIHRydWUpLCBmYWxzZSB9OwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAog
ewotICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5z
YW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1l
SUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1
cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVh
ZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywg
aGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmll
bGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFBy
b3h5U2V0dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJiBwcm94eVNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAppbmRleCBhMjcwZTZkODZmZjlhOTZiZTI1ZmViM2YzZmJkODBkZmFiOGM4YjY5
Li40OTE1ZDkwZGZhYjJjYTQ1ZmRmY2NjOTE4MmRmYWZhMzhmZTY0YWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lmIFVTRShDVVJMKQogCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ3VybENhY2hlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkN1cmxDb250ZXh0LmgiCkBAIC0xNDUsMTcgKzE0NCwxNSBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJl
c291cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZQogICAgIGlmIChzdGF0dXMgPT0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCkgewogICAg
ICAgICBhZGRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKHJlcXVlc3QpOwogCi0gICAgICAgIGF1dG8m
IHN0b3JhZ2VTZXNzaW9uID0gKmQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKLSAgICAg
ICAgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOwogICAg
ICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29r
aWVzOjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gY29va2llSmFyLmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0
LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
LmZpcnN0OworICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OwogICAgICAgICBpZiAoIWNvb2tpZUhlYWRl
ckZpZWxkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhlYWRlckZpZWxkKTsKICAgICB9CiAKICAg
ICBDdXJsUmVxdWVzdDo6U2hvdWxkU3VzcGVuZCBzaG91bGRTdXNwZW5kID0gZC0+bV9kZWZlcnNM
b2FkaW5nID8gQ3VybFJlcXVlc3Q6OlNob3VsZFN1c3BlbmQ6OlllcyA6IEN1cmxSZXF1ZXN0OjpT
aG91bGRTdXNwZW5kOjpObzsKICAgICBhdXRvIGN1cmxSZXF1ZXN0ID0gQ3VybFJlcXVlc3Q6OmNy
ZWF0ZShyZXF1ZXN0LCAqZGVsZWdhdGUoKSwgc2hvdWxkU3VzcGVuZCwgQ3VybFJlcXVlc3Q6OkVu
YWJsZU11bHRpcGFydDo6WWVzLCBDdXJsUmVxdWVzdDo6Q2FwdHVyZU5ldHdvcmtMb2FkTWV0cmlj
czo6QmFzaWMsIFJlZlB0cjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4oZC0+bV9tZXNz
YWdlUXVldWUpKTsKLSAgICAKKwogICAgIHJldHVybiBjdXJsUmVxdWVzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2ll
TWFuYWdlckN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL2N1
cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCmluZGV4IDdhNWNiMzk2ZTI5Yzg4ZDg0ODBmYTFj
YjYzNzBjYmM0NWJmZmU3ZGUuLmMyZWYxNTY4NDUwNDIwMGY5OGVlNGZlNjBlMzVhZGRhMjVjMTlk
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJs
L1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeQogICAgIH0KIAogICAgIG1fcHJvY2Vzcy5mb3JFYWNo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFtjdXJsUG9saWN5XSAoY29uc3QgYXV0byYgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuc2V0Q29va2llQWNjZXB0UG9saWN5KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY3VybFBv
bGljeSk7CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVBY2NlcHRQb2xp
Y3koY3VybFBvbGljeSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA0NzM2
MzU4YTNjYjVhMmMyZDBlNmJlYzE2YWZkMjNjNzBiMTlhMjI3Li45NzdhNDAzYmU4ZGM5NjJhOWNj
ZmE2NDI4YmMxZDNlN2M0NjgyZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC00NDQsMTAgKzQ0
NCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVzdGFydFdpdGhDcmVkZW50aWFsKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFnZVNlc3Np
b24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVx
dWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6Olll
cyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxk
ID0gY29va2llSmFyLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCpzdG9yYWdlU2Vzc2lv
biwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86
OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIGluY2x1ZGVTZWN1cmVDb29raWVzKS5maXJzdDsKKyAgICBhdXRvIGNvb2tpZUhlYWRlckZp
ZWxkID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyku
Zmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhl
YWRlckZpZWxkKTsKIH0KQEAgLTQ1NiwxMiArNDU0LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6aGFuZGxlQ29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0Q29va2llSGVhZGVyID0gInNldC1jb29r
aWU6ICI7CiAKLSAgICBjb25zdCBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgY29uc3QgYXV0byYgY29va2llSmFyID0gc3RvcmFn
ZVNlc3Npb24tPmNvb2tpZVN0b3JhZ2UoKTsKICAgICBmb3IgKGF1dG8gaGVhZGVyIDogcmVzcG9u
c2UuaGVhZGVycykgewogICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzZXRDb29raWVIZWFkZXIpKSB7CiAgICAgICAgICAgICBTdHJpbmcgc2V0Q29va2llU3Ry
aW5nID0gaGVhZGVyLnJpZ2h0KGhlYWRlci5sZW5ndGgoKSAtIHN0cmxlbihzZXRDb29raWVIZWFk
ZXIpKTsKLSAgICAgICAgICAgIGNvb2tpZUphci5zZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZSgq
c3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVzcG9uc2Uu
dXJsLCBzZXRDb29raWVTdHJpbmcpOworICAgICAgICAgICAgbV9zZXNzaW9uLT5uZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKS0+c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UocmVxdWVzdC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCByZXNwb25zZS51cmwsIHNldENvb2tpZVN0cmluZyk7CiAgICAgICAg
IH0KICAgICB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>