<?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>224088</bug_id>
          
          <creation_ts>2021-04-01 17:42:08 -0700</creation_ts>
          <short_desc>Make sure service workers use a ScriptSourceCode backed by file-mapped memory when possible</short_desc>
          <delta_ts>2021-04-05 18:07:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>
          <dependson>224092</dependson>
    
    <dependson>224110</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ggaren</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746345</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 17:42:08 -0700</bug_when>
    <thetext>Make sure service workers use a ScriptSourceCode backed by file-mapped memory whenever possible. This saves dirty memory in the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746346</commentid>
    <comment_count>1</comment_count>
      <attachid>424969</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 17:48:02 -0700</bug_when>
    <thetext>Created attachment 424969
WIP Patch

Needs polish but with this patch, warm memory usage on my service worker test case with ~200MB of scripts, the WebContent memory usage goes from 231MB to ~23MB.
The patch does not take care of the cold case yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746601</commentid>
    <comment_count>2</comment_count>
      <attachid>425039</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 12:14:09 -0700</bug_when>
    <thetext>Created attachment 425039
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746627</commentid>
    <comment_count>3</comment_count>
      <attachid>425046</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 13:18:57 -0700</bug_when>
    <thetext>Created attachment 425046
WIP Patch

The patch should now work in both the warm and cold cases. However, I am waiting for the dependency patch to land before I rebase &amp; clean it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746674</commentid>
    <comment_count>4</comment_count>
      <attachid>425055</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 14:32:54 -0700</bug_when>
    <thetext>Created attachment 425055
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746718</commentid>
    <comment_count>5</comment_count>
      <attachid>425063</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 16:11:48 -0700</bug_when>
    <thetext>Created attachment 425063
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746736</commentid>
    <comment_count>6</comment_count>
      <attachid>425071</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 17:16:21 -0700</bug_when>
    <thetext>Created attachment 425071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747032</commentid>
    <comment_count>7</comment_count>
      <attachid>425071</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 11:38:08 -0700</bug_when>
    <thetext>Comment on attachment 425071
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747200</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-05 18:05:30 -0700</bug_when>
    <thetext>Committed r275465: &lt;https://commits.webkit.org/r275465&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425071.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747202</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 18:07:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/76245819&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424969</attachid>
            <date>2021-04-01 17:48:02 -0700</date>
            <delta_ts>2021-04-02 12:14:09 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>224088_SharedBufferScriptSource_wip.patch</filename>
            <type>text/plain</type>
            <size>37125</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhNmE2Y2NlMzQyNjguLjNhYzdlZmVjNTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Niw2ICsxMjg2LDcgQEAK
IAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2
MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMx
QzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI4NTkzQzI2MTY3MjI3MDAxOUVE
QzYgLyogU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTaGFy
ZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovOyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04Mjc4LDYg
KzgyNzksNyBAQAogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFD
NkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2hh
cmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyU291
cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdE
NjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjkyLDYgKzI3
Mjk0LDcgQEAKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLAogCQkJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKKwkJCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyog
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAw
RjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNTQ2Niw2ICszNTQ2OSw3IEBACiAJCQkJ
NEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJz
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMTBmYTdlOGI0NDljLi45M2EwMTIwMDg0MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92
aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDEyIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCisgICAgU2NyaXB0U291cmNlQ29kZShTaGFyZWRCdWZmZXImIHNv
dXJjZSwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VU
eXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgICAgIDog
bV9wcm92aWRlcihTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlND
OjpTb3VyY2VPcmlnaW4geyB1cmwgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9uLCBzb3Vy
Y2VUeXBlKSkKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9z
aXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFz
ZWRJbnQoKSkKKyAgICB7CisgICAgfQorCiAgICAgU2NyaXB0U291cmNlQ29kZShDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgOiBt
X3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2FjaGVkU2NyaXB0
LCBzb3VyY2VUeXBlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKSkKICAgICAgICAgLCBtX2NvZGUo
bV9wcm92aWRlci5jb3B5UmVmKCkpCkBAIC02MywxMCArNzAsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKFNoYXJlZEJ1ZmZlciYgc291cmNlLCBVUkwm
JiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPEpTQzo6U2NyaXB0RmV0Y2hlcj4mJiBzY3Jp
cHRGZXRjaGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLCBXVEZNb3ZlKHNjcmlw
dEZldGNoZXIpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCisg
ICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGlu
ZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisg
ICAgeworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5s
ZW5ndGgoKSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogCisgICAgSlNDOjpTb3VyY2VQcm92aWRlciYg
cHJvdmlkZXIoKSB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgU3RyaW5nVmlldyBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLT5zb3VyY2UoKTsgfQogCiAgICAgaW50
IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5maXJzdExpbmUoKS5vbmVCYXNlZElu
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TaGFyZWRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmZmNTIwZjE2ZDA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNo
YXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdEJ1ZmZl
ciwgY29uc3QgSlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nIHNvdXJjZVVS
TCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyKFdURk1vdmUoc2NyaXB0QnVmZmVyKSwgc291
cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUp
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9zY3JpcHRIYXNoKQorICAgICAgICAgICAgc291cmNlKCk7CisgICAgICAg
IHJldHVybiBtX3NjcmlwdEhhc2g7CisgICAgfQorCisgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBj
b25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7
CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci0+ZGF0YSgpKSwg
bV9zY3JpcHRCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5
QVNDSUkpCisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9z
Y3JpcHRCdWZmZXItPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLT5zaXplKCkpOworICAgICAgICB9
CisgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKKyAgICAgICAgICAgIHJldHVybiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci0+ZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLT5zaXplKCkpIH07CisKKyAgICAg
ICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgeworICAgICAgICAgICAgbV9jYWNoZWRTY3Jp
cHRTdHJpbmcgPSBzY3JpcHRCdWZmZXJUb1N0cmluZyhtX3NjcmlwdEJ1ZmZlcik7CisgICAgICAg
ICAgICBpZiAoIW1fc2NyaXB0SGFzaCkKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBt
X2NhY2hlZFNjcmlwdFN0cmluZy5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBtX2NhY2hlZFNjcmlwdFN0cmluZzsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGVj
b2RlZERhdGEoKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBTdHJpbmco
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdEJ1ZmZlciwgY29uc3QgSlNDOjpTb3VyY2VPcmlnaW4m
IHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisg
ICAgICAgIDogSlNDOjpTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIFdURk1vdmUoc291cmNl
VVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkKKyAgICAgICAgLCBtX3NjcmlwdEJ1ZmZl
cihXVEZNb3ZlKHNjcmlwdEJ1ZmZlcikpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
c2NyaXB0SGFzaCB7IDAgfTsKKyAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmlu
ZzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cAppbmRleCA0YWQ1MzVkZDc5ZTUuLjRiYWUwMDc4ZmMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
bW9yeVJlbGVhc2UuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5o
IgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgor
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgpAQCAtOTcsNiArOTgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxNZW1vcnko
U3luY2hyb25vdXMgc3luY2hyb25vdXMsIE1haW50YWluQmFja0ZvcndhcmRDYQogICAgIGlmICht
YWludGFpbk1lbW9yeUNhY2hlID09IE1haW50YWluTWVtb3J5Q2FjaGU6Ok5vKSB7CiAgICAgICAg
IGF1dG8gc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyA9IHRydWU7
CiAgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZUxpdmVSZXNvdXJjZXNUb1Np
emUoMCwgc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyk7CisgICAg
ICAgIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhckRlY29kZWRTY3JpcHREYXRhSW5BbGxTY29wZXMo
KTsKICAgICB9CiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5kZXgg
MDM3NjU3ODE2ODZiLi5kNDY0NzYwODRjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM0LDExICszNCwxMiBAQAogCiAjaW5j
bHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlck9iamVj
dFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVkaWNhdGVkV29ya2VyVGhyZWFk
OjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSwgV29ya2VyT2Jq
ZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRN
b2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK0RlZGljYXRlZFdvcmtlclRocmVh
ZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywg
U2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlck9i
amVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0
TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQo
cGFyYW1zLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyRGVidWdnZXJQcm94
eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCiAgICAgLCBtX3dvcmtlck9iamVjdFBy
b3h5KHdvcmtlck9iamVjdFByb3h5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmgKaW5kZXggMDU5ZDgxNzE4NjE2Li5hZmI0ZTQwMjg2OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaApAQCAt
MzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3Jr
ZXJPYmplY3RQcm94eTsKIAogY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdv
cmtlclRocmVhZCB7CkBAIC01NCw3ICs1NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2
ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIERlZGljYXRlZFdvcmtlclRocmVh
ZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYs
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVu
dGltZUZsYWdzKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1l
dGVycyYsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3Jr
ZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICBX
b3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKaW5kZXggMmE0MWEzZWU0YjA1Li44YTBjZGIxMjRlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5
RmluaXNoZWQoKQogICAgICAgICAgICAgcmVzcG9uc2VVUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVy
KG1fc2NyaXB0TG9hZGVyLT51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgfQogICAg
IG1fY29udGV4dFByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUocmVzcG9uc2VVUkwsIG1fbmFt
ZSwgY29udGV4dC0+dXNlckFnZW50KHJlc3BvbnNlVVJMKSwgaXNPbmxpbmUsIG1fc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBtX3No
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgbV93b3JrZXJDcmVhdGlv
blRpbWUsIHJlZmVycmVyUG9saWN5LCBtX3R5cGUsIG1fY3JlZGVudGlhbHMsIG1fcnVudGltZUZs
YWdzKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpjb250
ZXh0LCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0
KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKmNvbnRl
eHQsIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHRB
c1N0cmluZygpKTsKIH0KIAogdm9pZCBXb3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBi
ZWI2N2JkNTRhZjMuLjcyZTdiYmVkYWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTU5LDYgKzU5LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJHbG9iYWxTY29w
ZSk7CiAKK3N0YXRpYyBMb2NrIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrOwor
c3RhdGljIEhhc2hTZXQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiBhbGxXb3Jr
ZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4+IGlkZW50aWZpZXJzOwor
ICAgIEFTU0VSVChhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jay5pc0xvY2tlZCgp
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcnM7Cit9CisKIFdvcmtlckdsb2JhbFNjb3BlOjpXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0
aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92
aWRlcikKICAgICA6IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHR5cGUsIEpTQzo6Vk06OmNy
ZWF0ZSgpLCAmdGhyZWFkKQogICAgICwgbV91cmwocGFyYW1zLnNjcmlwdFVSTCkKQEAgLTc1LDYg
KzgzLDEwIEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJl
YWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlCiAgICAgLCBtX3dvcmtlclR5cGUocGFy
YW1zLndvcmtlclR5cGUpCiAgICAgLCBtX2NyZWRlbnRpYWxzKHBhcmFtcy5jcmVkZW50aWFscykK
IHsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFs
U2NvcGVJZGVudGlmaWVyc0xvY2spOworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50
aWZpZXJzKCkuYWRkKGNvbnRleHRJZGVudGlmaWVyKCkpOworICAgIH0KICAgICBpZiAobV90b3BP
cmlnaW4tPmhhc1VuaXZlcnNhbEFjY2VzcygpKQogICAgICAgICBvcmlnaW4tPmdyYW50VW5pdmVy
c2FsQWNjZXNzKCk7CiAgICAgaWYgKG1fdG9wT3JpZ2luLT5uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9t
RmlsZVVSTHNRdWlyaygpKQpAQCAtODksNiArMTAxLDEwIEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+
V29ya2VyR2xvYmFsU2NvcGUoKQogICAgIEFTU0VSVCh0aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRl
eHRzIG1hcCB2ZXJ5IGVhcmx5IGluIHRoZSBkZXN0cnVjdG9yIHNvIHRoYXQgY2FsbGluZyBwb3N0
VGFzaygpIG9uIHRoaXMgV29ya2VyR2xvYmFsU2NvcGUgZnJvbSBhbm90aGVyIHRocmVhZCBpcyBz
YWZlLgogICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgpOworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayk7Cisg
ICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMoKS5yZW1vdmUoY29udGV4dElk
ZW50aWZpZXIoKSk7CisgICAgfQogCiAgICAgbV9wZXJmb3JtYW5jZSA9IG51bGxwdHI7CiAgICAg
bV9jcnlwdG8gPSBudWxscHRyOwpAQCAtMzA0LDE0ICszMjAsMjEgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHVybHMpCiAgICAgICAgIGlmIChhdXRvIGV4Y2VwdGlvbiA9IHNjcmlwdExvYWRlci0+bG9hZFN5
bmNocm9ub3VzbHkodGhpcywgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgY2FjaGVQ
b2xpY3ksIGNzcEVuZm9yY2VtZW50LCByZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUoKmV4Y2VwdGlvbik7CiAKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgc2NyaXB0TG9hZGVyLT5pZGVu
dGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotCi0gICAgICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJl
c3BvbnNlVVJMKCkpKSwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAg
ICAgICAgICAgc2NyaXB0KCktPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBv
cnRlZCgqdGhpcywgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2Ny
aXB0QXNTdHJpbmcoKSk7CisKKyAgICAgICAgV2Vha1B0cjxTaGFyZWRCdWZmZXJTb3VyY2VQcm92
aWRlcj4gc2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI7CisgICAgICAgIHsKKyAgICAgICAgICAg
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgICAgICAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgVVJMKHNjcmlwdExv
YWRlci0+cmVzcG9uc2VVUkwoKSkpOworICAgICAgICAgICAgc2hhcmVkQnVmZmVyU291cmNlUHJv
dmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRl
ciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOworICAgICAgICAgICAgc2NyaXB0KCktPmV2YWx1
YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
CisgICAgICAgICAgICAgICAgc2NyaXB0KCktPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgaWYgKHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyKQorICAgICAgICAgICAgYWRkQXNzb2Np
YXRlZFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyKCpzaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTQ4OCw0ICs1MTEsMjYgQEAgV29ya2Vy
VGhyZWFkJiBXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkgY29uc3QKICAgICByZXR1cm4gKnN0
YXRpY19jYXN0PFdvcmtlclRocmVhZCo+KHdvcmtlck9yV29ya2xldFRocmVhZCgpKTsKIH0KIAor
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJEZWNvZGVkU2NyaXB0RGF0YUluQWxsU2NvcGVz
KCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRl
bnRpZmllcnNMb2NrKTsKKyAgICBmb3IgKGF1dG8mIGdsb2JhbFNjb3BlSWRlbnRpZmllciA6IGFs
bFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMoKSkgeworICAgICAgICBwb3N0VGFza1RvKGds
b2JhbFNjb3BlSWRlbnRpZmllciwgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmNsZWFyRGVjb2RlZFNjcmlwdERhdGEo
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRB
c3NvY2lhdGVkU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJv
dmlkZXImIHByb3ZpZGVyKQoreworICAgIG1fYXNzb2NpYXRlZFNoYXJlZFNvdXJjZVNvdXJjZVBy
b3ZpZGVycy5hZGQocHJvdmlkZXIpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVh
ckRlY29kZWRTY3JpcHREYXRhKCkKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIGZvciAoYXV0byYgc291cmNlUHJvdmlkZXIgOiBtX2Fzc29jaWF0ZWRTaGFyZWRTb3VyY2VT
b3VyY2VQcm92aWRlcnMpCisgICAgICAgIHNvdXJjZVByb3ZpZGVyLmNsZWFyRGVjb2RlZERhdGEo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDExMDI1OGRkZmM4ZS4uYzYzZDU0ZTNiMmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkltYWdl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUu
aCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjMsNiArMTI1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVy
biBtX2NyZWRlbnRpYWxzOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBjbGVhckRlY29kZWRTY3JpcHRE
YXRhSW5BbGxTY29wZXMoKTsKKyAgICB2b2lkIGFkZEFzc29jaWF0ZWRTaGFyZWRCdWZmZXJTb3Vy
Y2VQcm92aWRlcihTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlciYpOworICAgIHZvaWQgY2xlYXJE
ZWNvZGVkU2NyaXB0RGF0YSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyR2xvYmFsU2NvcGUo
V29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCkBAIC0x
NzMsNiArMTc5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQZXJmb3JtYW5jZT4gbV9wZXJm
b3JtYW5jZTsKICAgICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOworICAgIFdlYWtI
YXNoU2V0PFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBtX2Fzc29jaWF0ZWRTaGFyZWRTb3Vy
Y2VTb3VyY2VQcm92aWRlcnM7CiAKICAgICBSZWZQdHI8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4gbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
aW5kZXggMTJkNWUxYzBmODE5Li40YmI1OWYxOTM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkgewogcHVibGljOgogICAgIHN0YXRpYyBXb3JrZXJHbG9i
YWxTY29wZVByb3h5JiBjcmVhdGUoV29ya2VyJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBi
b29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNoYXJlZEJ1ZmZl
ciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90
b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9u
PHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDcyMDY0MzgwODQ3OS4u
ZmU3OTVmNTJjMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6fldv
cmtlck1lc3NhZ2luZ1Byb3h5KCkKICAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKSk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVy
UG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mp
Cit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBTaGFyZWRCdWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVk
ZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4gd2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2Vy
IG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBiZTlmNDYwZjM4
ZTIuLjRjMGNjMmYzOWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgIC8vIChPbmx5
IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIHdvcmtlciBvYmplY3QgdGhyZWFkLikKLSAgICB2
b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0
IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CisgICAgdm9p
ZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTaGFyZWRC
dWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRj
aFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQg
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKICAg
ICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYTRiZTEwMDQwYmUyLi44ODYyNWY3ZmZkYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3Jp
cHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKKyAgICAgICAgICAgIG1fc2Ny
aXB0ID0gc2NyaXB0UmVzb3VyY2UtPnNjcmlwdDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwg
PSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlN
RVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAg
ICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
ZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWlt
ZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0
KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlw
dFJlc291cmNlKHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7
IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQog
I2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIxMSw4ICsyMTEsMTMgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW4pCiAgICAgCiAgICAgaWYgKGxlbiA9PSAtMSkKICAgICAgICAgbGVuID0gc3RybGVuKGRh
dGEpOworCisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAgbV9zY3JpcHQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBsZW4pKTsKKyAgICBTdHJpbmcgZGVjb2RlZFNjcmlwdCA9IG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbik7CisgICAgYXV0byBkZWNvZGVkU2NyaXB0VXRmOCA9IGRlY29kZWRTY3Jp
cHQudXRmOCgpOworICAgIG1fc2NyaXB0LT5hcHBlbmQoZGVjb2RlZFNjcmlwdFV0ZjguZGF0YSgp
LCBkZWNvZGVkU2NyaXB0VXRmOC5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0TG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIyMiw4
ICsyMjcsMTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG1fZGVjb2RlcikKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+Zmx1c2goKSk7
CisgICAgaWYgKG1fZGVjb2RlcikgeworICAgICAgICBTdHJpbmcgZGVjb2RlZFNjcmlwdCA9IG1f
ZGVjb2Rlci0+Zmx1c2goKTsKKyAgICAgICAgYXV0byBkZWNvZGVkU2NyaXB0VXRmOCA9IGRlY29k
ZWRTY3JpcHQudXRmOCgpOworICAgICAgICBtX3NjcmlwdC0+YXBwZW5kKGRlY29kZWRTY3JpcHRV
dGY4LmRhdGEoKSwgZGVjb2RlZFNjcmlwdFV0ZjgubGVuZ3RoKCkpOworICAgIH0KIAogICAgIG1f
aWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgbm90aWZ5RmluaXNoZWQoKTsKQEAgLTI0Myw5
ICsyNTEsMTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9yKCkKICAgICBu
b3RpZnlGaW5pc2hlZCgpOwogfQogCi1TdHJpbmcgV29ya2VyU2NyaXB0TG9hZGVyOjpzY3JpcHQo
KQorUmVmPFNoYXJlZEJ1ZmZlcj4gV29ya2VyU2NyaXB0TG9hZGVyOjpzY3JpcHQoKQogewotICAg
IHJldHVybiBtX3NjcmlwdC50b1N0cmluZygpOworICAgIGlmICghbV9zY3JpcHQpCisgICAgICAg
IG1fc2NyaXB0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2NyaXB0
OwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjY4
LDQgKzI3OCwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6Y2FuY2VsKCkKICAgICBtX3Ro
cmVhZGFibGVMb2FkZXIgPSBudWxscHRyOwogfQogCitTdHJpbmcgV29ya2VyU2NyaXB0TG9hZGVy
OjpzY3JpcHRBc1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBzY3JpcHRCdWZmZXJUb1N0cmluZygqbV9zY3Jp
cHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBjZmEzMWEzNTMyNTkuLjBmNGVlZWUwYmQwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC02Miw3
ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIAotICAgIFN0cmlu
ZyBzY3JpcHQoKTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBzY3JpcHQoKTsKKyAgICBTdHJpbmcg
c2NyaXB0QXNTdHJpbmcoKSBjb25zdDsKICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkBAIC05OCw3ICs5OSw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fdGhyZWFkYWJsZUxvYWRlcjsKICAgICBTdHJp
bmcgbV9yZXNwb25zZUVuY29kaW5nOwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7Ci0gICAgU3RyaW5nQnVpbGRlciBtX3NjcmlwdDsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3NjcmlwdDsKICAgICBVUkwgbV91cmw7CiAgICAgVVJMIG1fcmVzcG9uc2VVUkw7
CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDc3ZmNkMmE3NDQ0OC4uNmI5MjQwNTE0ZDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC02NiwyNSArNjYsMjUg
QEAgV29ya2VyUGFyYW1ldGVycyBXb3JrZXJQYXJhbWV0ZXJzOjppc29sYXRlZENvcHkoKSBjb25z
dAogc3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIHBhcmFtcywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pOworICAgIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgU2hhcmVkQnVmZmVyJiBz
b3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4pOwogCiAgICAgV29ya2VyUGFyYW1ldGVycyBwYXJhbXM7CiAgICAgUmVmPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW47Ci0gICAgU3RyaW5nIHNvdXJjZUNvZGU7CisgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gc291cmNlQ29kZTsKICAgICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2Rl
OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luOwogfTsKIAotV29ya2VyVGhyZWFk
U3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIG90aGVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pCitXb3JrZXJUaHJl
YWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgV29ya2VyUGFyYW1l
dGVycyYgb3RoZXIsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikKICAgICA6IHBh
cmFtcyhvdGhlci5pc29sYXRlZENvcHkoKSkKICAgICAsIG9yaWdpbihTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG90aGVyLnNjcmlwdFVSTCktPmlzb2xhdGVkQ29weSgpKQotICAgICwgc291cmNlQ29k
ZShzb3VyY2VDb2RlLmlzb2xhdGVkQ29weSgpKQorICAgICwgc291cmNlQ29kZShzb3VyY2VDb2Rl
LmNvcHkoKSkKICAgICAsIHN0YXJ0TW9kZShzdGFydE1vZGUpCiAgICAgLCB0b3BPcmlnaW4odG9w
T3JpZ2luLmlzb2xhdGVkQ29weSgpKQogewogfQogCi1Xb3JrZXJUaHJlYWQ6OldvcmtlclRocmVh
ZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclBy
b3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVw
b3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25u
ZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1l
RmxhZ3MgcnVudGltZUZsYWdzKQorV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1zLCBTaGFyZWRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2Vy
RGVidWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5
LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncykKICAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbXMuaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVyUHJv
eHkpCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKQEAg
LTEyNSwxMiArMTI1LDE2IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVj
ZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKICAgICAvLyBXZSBhcmUgY3VycmVudGx5
IGhvbGRpbmcgb25seSB0aGUgaW5pdGlhbCBzY3JpcHQgY29kZS4gSWYgdGhlIFdvcmtlclR5cGUg
aXMgTW9kdWxlLCB3ZSBzaG91bGQgZmV0Y2ggdGhlIGVudGlyZSBncmFwaCBiZWZvcmUgZXhlY3V0
aW5nIHRoZSByZXN0IG9mIHRoaXMuCiAgICAgLy8gV2UgaW52b2tlIG1vZHVsZSBsb2FkZXIgYXMg
aWYgd2UgYXJlIGV4ZWN1dGluZyBpbmxpbmUgbW9kdWxlIHNjcmlwdCB0YWcgaW4gRG9jdW1lbnQu
CiAKKyAgICBXZWFrUHRyPFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBzaGFyZWRCdWZmZXJT
b3VyY2VQcm92aWRlcjsKICAgICBpZiAobV9zdGFydHVwRGF0YS0+cGFyYW1zLndvcmtlclR5cGUg
PT0gV29ya2VyVHlwZTo6Q2xhc3NpYykgewotICAgICAgICBnbG9iYWxTY29wZSgpLT5zY3JpcHQo
KS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3VyY2VDb2RlLCBV
UkwobV9zdGFydHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCkpLCAmZXhjZXB0aW9uTWVzc2FnZSk7
CisgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3Vy
Y2VDb2RlLCBVUkwobV9zdGFydHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCkpOworICAgICAgICBz
aGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlclNvdXJjZVByb3ZpZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7CisgICAgICAg
IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5ldmFsdWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9u
TWVzc2FnZSk7CiAgICAgICAgIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGF1dG8gc2NyaXB0RmV0Y2hlciA9IFdvcmtlclNjcmlwdEZldGNoZXI6OmNy
ZWF0ZShnbG9iYWxTY29wZSgpLT5jcmVkZW50aWFscygpLCBnbG9iYWxTY29wZSgpLT5kZXN0aW5h
dGlvbigpLCBnbG9iYWxTY29wZSgpLT5yZWZlcnJlclBvbGljeSgpKTsKICAgICAgICAgU2NyaXB0
U291cmNlQ29kZSBzb3VyY2VDb2RlKG1fc3RhcnR1cERhdGEtPnNvdXJjZUNvZGUsIFVSTChtX3N0
YXJ0dXBEYXRhLT5wYXJhbXMuc2NyaXB0VVJMKSwgeyB9LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6TW9kdWxlLCBzY3JpcHRGZXRjaGVyLmNvcHlSZWYoKSk7CisgICAgICAgIHNoYXJl
ZEJ1ZmZlclNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKICAgICAgICAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+bG9h
ZE1vZHVsZVN5bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQoKSwgc291cmNlQ29kZSk7CiAg
ICAgICAgIGlmIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgewogICAgICAgICAg
ICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRGZXRj
aGVyLT5lcnJvcigpKSB7CkBAIC0xNDUsNiArMTQ5LDggQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OmV2
YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGlmIChzaGFyZWRCdWZmZXJTb3VyY2VQcm92
aWRlcikKKyAgICAgICAgZ2xvYmFsU2NvcGUoKS0+YWRkQXNzb2NpYXRlZFNoYXJlZEJ1ZmZlclNv
dXJjZVByb3ZpZGVyKCpzaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcik7CiAKICAgICAvLyBGcmVl
IHRoZSBzdGFydHVwIGRhdGEgdG8gY2F1c2UgaXRzIG1lbWJlciB2YXJpYWJsZSBkZXJlZidzIGhh
cHBlbiBvbiB0aGUgd29ya2VyJ3MgdGhyZWFkIChzaW5jZQogICAgIC8vIGFsbCByZWYvZGVyZWZz
IG9mIHRoZXNlIG9iamVjdHMgYXJlIGhhcHBlbmluZyBvbiB0aGUgdGhyZWFkIGF0IHRoaXMgcG9p
bnQpLiBOb3RlIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IDkz
NWU5NzJkNTM4Zi4uOGRkYTRkMzEyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3Rp
ZmljYXRpb25DbGllbnQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFz
cyBXb3JrZXJMb2FkZXJQcm94eTsKQEAgLTkyLDcgKzkzLDcgQEAgcHVibGljOgogICAgIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdz
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJE
ZWJ1Z2dlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CisgICAgV29y
a2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBTaGFyZWRCdWZmZXImIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlclJlcG9y
dGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVy
KiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgLy8gRmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0
aW5nIGEgbmV3IHdvcmtlciBjb250ZXh0IGZvciB0aGUgdGhyZWFkLgogICAgIHZpcnR1YWwgUmVm
PFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggZTNjZTkyY2YzOTdjLi44ODViMTYxMzVmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
Yi5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZp
bmlzaGVkKCkKICAgICBhdXRvIHNjcmlwdExvYWRlciA9IFdURk1vdmUobV9zY3JpcHRMb2FkZXIp
OwogCiAgICAgaWYgKCFzY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7Ci0gICAgICAgIG1fY2xpZW50
LmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwg
c2NyaXB0TG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgc2NyaXB0TG9hZGVyLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5yZWZlcnJlclBvbGljeSgpKTsKKyAgICAgICAg
bV9jbGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNj
cmlwdEFzU3RyaW5nKCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIHNjcmlwdExv
YWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExvYWRlci0+cmVmZXJyZXJQb2xp
Y3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHAKaW5kZXggMjg4MTIyOGE4MjRkLi5mNDFiZjgzZmFjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlk
IHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVh
ZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNv
bnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYg
bG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBl
bXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0Zh
Y3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2Vj
dXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtl
clR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBz
Y3JpcHRCdWZmZXJUb1N0cmluZyhkYXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclBy
b3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2Vj
dXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwg
SlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAgICA6IFdvcmtlclRocmVh
ZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5z
cGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1
c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxp
bmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpu
b3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0
LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJv
eHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1
cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBK
U0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9zZXJ2aWNlV29y
a2VySWRlbnRpZmllcihkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9qb2JE
YXRhSWRlbnRpZmllcihkYXRhLmpvYkRhdGFJZGVudGlmaWVyKQogICAgICwgbV9kYXRhKGNyb3Nz
VGhyZWFkQ29weShkYXRhKSkK
</data>
<flag name="commit-queue"
          id="444793"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425039</attachid>
            <date>2021-04-02 12:14:09 -0700</date>
            <delta_ts>2021-04-02 13:29:39 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>224088_SharedBufferScriptSource_wip2.patch</filename>
            <type>text/plain</type>
            <size>34736</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhNmE2Y2NlMzQyNjguLjNhYzdlZmVjNTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Niw2ICsxMjg2LDcgQEAK
IAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2
MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMx
QzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI4NTkzQzI2MTY3MjI3MDAxOUVE
QzYgLyogU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTaGFy
ZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovOyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04Mjc4LDYg
KzgyNzksNyBAQAogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFD
NkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2hh
cmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyU291
cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdE
NjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjkyLDYgKzI3
Mjk0LDcgQEAKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLAogCQkJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKKwkJCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyog
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAw
RjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNTQ2Niw2ICszNTQ2OSw3IEBACiAJCQkJ
NEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJz
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMTBmYTdlOGI0NDljLi45M2EwMTIwMDg0MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92
aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDEyIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCisgICAgU2NyaXB0U291cmNlQ29kZShTaGFyZWRCdWZmZXImIHNv
dXJjZSwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VU
eXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgICAgIDog
bV9wcm92aWRlcihTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlND
OjpTb3VyY2VPcmlnaW4geyB1cmwgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9uLCBzb3Vy
Y2VUeXBlKSkKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9z
aXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFz
ZWRJbnQoKSkKKyAgICB7CisgICAgfQorCiAgICAgU2NyaXB0U291cmNlQ29kZShDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgOiBt
X3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2FjaGVkU2NyaXB0
LCBzb3VyY2VUeXBlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKSkKICAgICAgICAgLCBtX2NvZGUo
bV9wcm92aWRlci5jb3B5UmVmKCkpCkBAIC02MywxMCArNzAsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKFNoYXJlZEJ1ZmZlciYgc291cmNlLCBVUkwm
JiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPEpTQzo6U2NyaXB0RmV0Y2hlcj4mJiBzY3Jp
cHRGZXRjaGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLCBXVEZNb3ZlKHNjcmlw
dEZldGNoZXIpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCisg
ICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGlu
ZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisg
ICAgeworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5s
ZW5ndGgoKSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogCisgICAgSlNDOjpTb3VyY2VQcm92aWRlciYg
cHJvdmlkZXIoKSB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgU3RyaW5nVmlldyBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLT5zb3VyY2UoKTsgfQogCiAgICAgaW50
IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5maXJzdExpbmUoKS5vbmVCYXNlZElu
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TaGFyZWRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjY1MzBkZjkyMjRkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNo
YXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlk
ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNjcmlw
dEJ1ZmZlciwgY29uc3QgSlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nIHNv
dXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9u
KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyKFdURk1vdmUoc2NyaXB0QnVmZmVy
KSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJj
ZVR5cGUpKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9zY3JpcHRIYXNoKQorICAgICAgICAgICAgc291cmNlKCk7CisgICAg
ICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CisgICAgfQorCisgICAgU3RyaW5nVmlldyBzb3VyY2Uo
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX3NjcmlwdEJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAgICAgaWYgKCFtX2Nv
bnRhaW5zT25seUFTQ0lJKSB7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3Njcmlw
dEJ1ZmZlci0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXItPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLT5z
aXplKCkpOworICAgICAgICB9CisgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKKyAg
ICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3Njcmlw
dEJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLT5z
aXplKCkpIH07CisKKyAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgeworICAgICAg
ICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBzY3JpcHRCdWZmZXJUb1N0cmluZyhtX3Njcmlw
dEJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIW1fc2NyaXB0SGFzaCkKKyAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBtX2NhY2hlZFNjcmlwdFN0cmluZy5pbXBsKCktPmhhc2goKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdFN0cmluZzsKKyAgICB9CisK
KyAgICB2b2lkIGNsZWFyRGVjb2RlZERhdGEoKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRTY3Jp
cHRTdHJpbmcgPSBTdHJpbmcoKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWRCdWZm
ZXJTb3VyY2VQcm92aWRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdEJ1ZmZlciwgY29uc3Qg
SlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlIHNvdXJjZVR5cGUpCisgICAgICAgIDogSlNDOjpTb3VyY2VQcm92aWRlcihzb3VyY2VPcmln
aW4sIFdURk1vdmUoc291cmNlVVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkKKyAgICAg
ICAgLCBtX3NjcmlwdEJ1ZmZlcihXVEZNb3ZlKHNjcmlwdEJ1ZmZlcikpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBt
dXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKKyAgICBtdXRhYmxlIFN0cmluZyBt
X2NhY2hlZFNjcmlwdFN0cmluZzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY29udGFp
bnNPbmx5QVNDSUk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggMDM3NjU3ODE2
ODZiLi5kNDY0NzYwODRjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM0LDExICszNCwxMiBAQAogCiAjaW5jbHVkZSAiRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29y
a2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK0RlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNh
dGVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgU2hhcmVkQnVm
ZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdv
cmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5
JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1zLCBz
b3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyRGVidWdnZXJQcm94eSwgd29ya2Vy
T2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNvY2tl
dFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtl
ck9iamVjdFByb3h5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyVGhyZWFkLmgKaW5kZXggMDU5ZDgxNzE4NjE2Li5hZmI0ZTQwMjg2OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaApAQCAtMzYsNiArMzYs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJPYmplY3RQ
cm94eTsKIAogY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVh
ZCB7CkBAIC01NCw3ICs1NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdz
KTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFNo
YXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dl
clByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICBXb3JrZXJPYmpl
Y3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKaW5kZXggMmE0MWEzZWU0YjA1Li44YTBjZGIxMjRlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQo
KQogICAgICAgICAgICAgcmVzcG9uc2VVUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fc2NyaXB0
TG9hZGVyLT51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgfQogICAgIG1fY29udGV4
dFByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUocmVzcG9uc2VVUkwsIG1fbmFtZSwgY29udGV4
dC0+dXNlckFnZW50KHJlc3BvbnNlVVJMKSwgaXNPbmxpbmUsIG1fc2NyaXB0TG9hZGVyLT5zY3Jp
cHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBtX3Nob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgbV93b3JrZXJDcmVhdGlvblRpbWUsIHJl
ZmVycmVyUG9saWN5LCBtX3R5cGUsIG1fY3JlZGVudGlhbHMsIG1fcnVudGltZUZsYWdzKTsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpjb250ZXh0LCBtX3Nj
cmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKmNvbnRleHQsIG1fc2Ny
aXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHRBc1N0cmluZygp
KTsKIH0KIAogdm9pZCBXb3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0
MTMuLjc1ZjFjYTQxNjNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTMyOCwxNCArMzI4LDIxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtl
ckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKQog
ICAgICAgICBpZiAoYXV0byBleGNlcHRpb24gPSBzY3JpcHRMb2FkZXItPmxvYWRTeW5jaHJvbm91
c2x5KHRoaXMsIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIGNhY2hlUG9saWN5LCBj
c3BFbmZvcmNlbWVudCwgcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllcigpKSkKICAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKCpleGNlcHRpb24pOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigp
LCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKLQotICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVS
TCgpKSksIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAg
IHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRo
aXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdEFzU3Ry
aW5nKCkpOworCisgICAgICAgIFdlYWtQdHI8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IHNo
YXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyOworICAgICAgICB7CisgICAgICAgICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICAgICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJl
c3BvbnNlVVJMKCkpKTsKKyAgICAgICAgICAgIHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyID0g
bWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXImPihzb3Vy
Y2VDb2RlLnByb3ZpZGVyKCkpKTsKKyAgICAgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShzb3Vy
Y2VDb2RlLCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChz
aGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcikKKyAgICAgICAgICAgIGFkZEFzc29jaWF0ZWRTaGFy
ZWRCdWZmZXJTb3VyY2VQcm92aWRlcigqc2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIpOwogICAg
IH0KIAogICAgIHJldHVybiB7IH07CkBAIC01MjcsNiArNTM0LDEzIEBAIFdvcmtlclRocmVhZCYg
V29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpIGNvbnN0CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OnJlbGVhc2VNZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCit7CisgICAgQVNT
RVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBkZWxldGVKU0NvZGVBbmRHQyhzeW5jaHJvbm91
cyk7CisgICAgY2xlYXJEZWNvZGVkU2NyaXB0RGF0YSgpOworfQorCit2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKICAg
ICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwogCkBAIC01NjMsNCArNTc3LDE2IEBAIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hyb25vdXMgc3lu
Y2hyb25vdXMpCiAgICAgfQogfQogCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRBc3NvY2lh
dGVkU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIm
IHByb3ZpZGVyKQoreworICAgIG1fYXNzb2NpYXRlZFNoYXJlZFNvdXJjZVNvdXJjZVByb3ZpZGVy
cy5hZGQocHJvdmlkZXIpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhckRlY29k
ZWRTY3JpcHREYXRhKCkKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAgIGZv
ciAoYXV0byYgc291cmNlUHJvdmlkZXIgOiBtX2Fzc29jaWF0ZWRTaGFyZWRTb3VyY2VTb3VyY2VQ
cm92aWRlcnMpCisgICAgICAgIHNvdXJjZVByb3ZpZGVyLmNsZWFyRGVjb2RlZERhdGEoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IDM3YmRmMjkxNDdlMy4uZTA5ZThlYzgyMTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFw
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNo
U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDYgKzEzMiw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbGVhc2VNZW1vcnkoU3luY2hyb25vdXMpOwogICAgIHN0YXRpYyB2b2lk
IHJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hyb25vdXMpOwogCisgICAgdm9pZCBhZGRBc3Nv
Y2lhdGVkU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJvdmlk
ZXImKTsKKwogcHJvdGVjdGVkOgogICAgIFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5
cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtl
clRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIApAQCAtMTQ1LDYgKzE0OSw5IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKKyAgICB2b2lkIGRlbGV0ZUpTQ29kZUFuZEdDKFN5bmNocm9ub3Vz
KTsKKyAgICB2b2lkIGNsZWFyRGVjb2RlZFNjcmlwdERhdGEoKTsKKwogICAgIFVSTCBjb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5h
bDsKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCkBAIC0x
ODAsNiArMTg3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQZXJmb3JtYW5jZT4gbV9wZXJm
b3JtYW5jZTsKICAgICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOworICAgIFdlYWtI
YXNoU2V0PFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBtX2Fzc29jaWF0ZWRTaGFyZWRTb3Vy
Y2VTb3VyY2VQcm92aWRlcnM7CiAKICAgICBSZWZQdHI8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4gbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
aW5kZXggMTJkNWUxYzBmODE5Li40YmI1OWYxOTM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkgewogcHVibGljOgogICAgIHN0YXRpYyBXb3JrZXJHbG9i
YWxTY29wZVByb3h5JiBjcmVhdGUoV29ya2VyJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBi
b29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNoYXJlZEJ1ZmZl
ciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90
b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9u
PHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDcyMDY0MzgwODQ3OS4u
ZmU3OTVmNTJjMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6fldv
cmtlck1lc3NhZ2luZ1Byb3h5KCkKICAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKSk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVy
UG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mp
Cit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBTaGFyZWRCdWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVk
ZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4gd2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2Vy
IG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBiZTlmNDYwZjM4
ZTIuLjRjMGNjMmYzOWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgIC8vIChPbmx5
IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIHdvcmtlciBvYmplY3QgdGhyZWFkLikKLSAgICB2
b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0
IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CisgICAgdm9p
ZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTaGFyZWRC
dWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRj
aFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQg
dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKICAg
ICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYTRiZTEwMDQwYmUyLi41MGM4ODVhNjA5MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3Jp
cHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKKyAgICAgICAgICAgIG1fc2Ny
aXB0ID0gc2NyaXB0UmVzb3VyY2UtPnNjcmlwdDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwg
PSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlN
RVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAg
ICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
ZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWlt
ZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0
KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlw
dFJlc291cmNlKHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7
IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQog
I2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIxMSw4ICsyMTEsMTMgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW4pCiAgICAgCiAgICAgaWYgKGxlbiA9PSAtMSkKICAgICAgICAgbGVuID0gc3RybGVuKGRh
dGEpOworCisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAgbV9zY3JpcHQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBsZW4pKTsKKyAgICBTdHJpbmcgZGVjb2RlZFNjcmlwdCA9IG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbik7CisgICAgYXV0byBkZWNvZGVkU2NyaXB0VXRmOCA9IGRlY29kZWRTY3Jp
cHQudXRmOCgpOworICAgIG1fc2NyaXB0LT5hcHBlbmQoZGVjb2RlZFNjcmlwdFV0ZjguZGF0YSgp
LCBkZWNvZGVkU2NyaXB0VXRmOC5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0TG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIyMiw4
ICsyMjcsMTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG1fZGVjb2RlcikKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+Zmx1c2goKSk7
CisgICAgaWYgKG1fZGVjb2RlcikgeworICAgICAgICBTdHJpbmcgZGVjb2RlZFNjcmlwdCA9IG1f
ZGVjb2Rlci0+Zmx1c2goKTsKKyAgICAgICAgYXV0byBkZWNvZGVkU2NyaXB0VXRmOCA9IGRlY29k
ZWRTY3JpcHQudXRmOCgpOworICAgICAgICBtX3NjcmlwdC0+YXBwZW5kKGRlY29kZWRTY3JpcHRV
dGY4LmRhdGEoKSwgZGVjb2RlZFNjcmlwdFV0ZjgubGVuZ3RoKCkpOworICAgIH0KIAogICAgIG1f
aWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgbm90aWZ5RmluaXNoZWQoKTsKQEAgLTI0Myw5
ICsyNTEsMTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9yKCkKICAgICBu
b3RpZnlGaW5pc2hlZCgpOwogfQogCi1TdHJpbmcgV29ya2VyU2NyaXB0TG9hZGVyOjpzY3JpcHQo
KQorUmVmPFNoYXJlZEJ1ZmZlcj4gV29ya2VyU2NyaXB0TG9hZGVyOjpzY3JpcHQoKQogewotICAg
IHJldHVybiBtX3NjcmlwdC50b1N0cmluZygpOworICAgIGlmICghbV9zY3JpcHQpCisgICAgICAg
IG1fc2NyaXB0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fc2NyaXB0
OwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjY4
LDQgKzI3OCwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6Y2FuY2VsKCkKICAgICBtX3Ro
cmVhZGFibGVMb2FkZXIgPSBudWxscHRyOwogfQogCitTdHJpbmcgV29ya2VyU2NyaXB0TG9hZGVy
OjpzY3JpcHRBc1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCpt
X3NjcmlwdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGNmYTMxYTM1MzI1OS4uMGY0ZWVlZTBi
ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTYyLDcgKzYyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlFcnJvcigpOwogCi0gICAg
U3RyaW5nIHNjcmlwdCgpOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNjcmlwdCgpOworICAgIFN0
cmluZyBzY3JpcHRBc1N0cmluZygpIGNvbnN0OwogICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeTsgfQogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTk4LDcgKzk5LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV90aHJlYWRhYmxlTG9hZGVyOwogICAg
IFN0cmluZyBtX3Jlc3BvbnNlRW5jb2Rpbmc7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKLSAgICBTdHJpbmdCdWlsZGVyIG1fc2NyaXB0OworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIFVSTCBtX3VybDsKICAgICBVUkwgbV9yZXNwb25z
ZVVSTDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNzdmY2QyYTc0NDQ4Li42YjkyNDA1MTRk
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTY2LDI1ICs2
NiwyNSBAQCBXb3JrZXJQYXJhbWV0ZXJzIFdvcmtlclBhcmFtZXRlcnM6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgV29ya2VyUGFy
YW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbik7CisgICAgV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGEoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBTaGFyZWRCdWZm
ZXImIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbik7CiAKICAgICBXb3JrZXJQYXJhbWV0ZXJzIHBhcmFtczsKICAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKLSAgICBTdHJpbmcgc291cmNlQ29kZTsKKyAgICBSZWY8
U2hhcmVkQnVmZmVyPiBzb3VyY2VDb2RlOwogICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGU7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW47CiB9OwogCi1Xb3JrZXJU
aHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgV29ya2VyUGFy
YW1ldGVycyYgb3RoZXIsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikKK1dvcmtl
clRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBvdGhlciwgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKQogICAg
IDogcGFyYW1zKG90aGVyLmlzb2xhdGVkQ29weSgpKQogICAgICwgb3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUob3RoZXIuc2NyaXB0VVJMKS0+aXNvbGF0ZWRDb3B5KCkpCi0gICAgLCBzb3Vy
Y2VDb2RlKHNvdXJjZUNvZGUuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBzb3VyY2VDb2RlKHNvdXJj
ZUNvZGUuY29weSgpKQogICAgICwgc3RhcnRNb2RlKHN0YXJ0TW9kZSkKICAgICAsIHRvcE9yaWdp
bih0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CiAKLVdvcmtlclRocmVhZDo6V29ya2Vy
VGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVn
Z2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3Jr
ZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
IGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1
bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3
b3JrZXJEZWJ1Z2dlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5n
UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9u
UHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3Mg
cnVudGltZUZsYWdzKQogICAgIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkKHBhcmFtcy5pZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV93b3JrZXJMb2FkZXJQcm94eSh3b3JrZXJMb2Fk
ZXJQcm94eSkKICAgICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dlclByb3h5
KQpAQCAtMTI1LDEyICsxMjUsMTYgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0
SWZOZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogICAgIC8vIFdlIGFyZSBjdXJy
ZW50bHkgaG9sZGluZyBvbmx5IHRoZSBpbml0aWFsIHNjcmlwdCBjb2RlLiBJZiB0aGUgV29ya2Vy
VHlwZSBpcyBNb2R1bGUsIHdlIHNob3VsZCBmZXRjaCB0aGUgZW50aXJlIGdyYXBoIGJlZm9yZSBl
eGVjdXRpbmcgdGhlIHJlc3Qgb2YgdGhpcy4KICAgICAvLyBXZSBpbnZva2UgbW9kdWxlIGxvYWRl
ciBhcyBpZiB3ZSBhcmUgZXhlY3V0aW5nIGlubGluZSBtb2R1bGUgc2NyaXB0IHRhZyBpbiBEb2N1
bWVudC4KIAorICAgIFdlYWtQdHI8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IHNoYXJlZEJ1
ZmZlclNvdXJjZVByb3ZpZGVyOwogICAgIGlmIChtX3N0YXJ0dXBEYXRhLT5wYXJhbXMud29ya2Vy
VHlwZSA9PSBXb3JrZXJUeXBlOjpDbGFzc2ljKSB7Ci0gICAgICAgIGdsb2JhbFNjb3BlKCktPnNj
cmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc3RhcnR1cERhdGEtPnNvdXJjZUNv
ZGUsIFVSTChtX3N0YXJ0dXBEYXRhLT5wYXJhbXMuc2NyaXB0VVJMKSksICZleGNlcHRpb25NZXNz
YWdlKTsKKyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKG1fc3RhcnR1cERhdGEt
PnNvdXJjZUNvZGUsIFVSTChtX3N0YXJ0dXBEYXRhLT5wYXJhbXMuc2NyaXB0VVJMKSk7CisgICAg
ICAgIHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKKyAg
ICAgICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmV2YWx1YXRlKHNvdXJjZUNvZGUsICZleGNl
cHRpb25NZXNzYWdlKTsKICAgICAgICAgZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYXV0byBzY3JpcHRGZXRjaGVyID0gV29ya2VyU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKGdsb2JhbFNjb3BlKCktPmNyZWRlbnRpYWxzKCksIGdsb2JhbFNjb3BlKCktPmRl
c3RpbmF0aW9uKCksIGdsb2JhbFNjb3BlKCktPnJlZmVycmVyUG9saWN5KCkpOwogICAgICAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJM
KG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpLCB7IH0sIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdEZldGNoZXIuY29weVJlZigpKTsKKyAgICAgICAg
c2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOwogICAgICAg
ICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgp
LT5sb2FkTW9kdWxlU3luY2hyb25vdXNseShzY3JpcHRGZXRjaGVyLmdldCgpLCBzb3VyY2VDb2Rl
KTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CiAgICAg
ICAgICAgICBpZiAoT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IHNjcmlw
dEZldGNoZXItPmVycm9yKCkpIHsKQEAgLTE0NSw2ICsxNDksOCBAQCB2b2lkIFdvcmtlclRocmVh
ZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKHNoYXJlZEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyKQorICAgICAgICBnbG9iYWxTY29wZSgpLT5hZGRBc3NvY2lhdGVkU2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXIoKnNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyKTsKIAogICAgIC8v
IEZyZWUgdGhlIHN0YXJ0dXAgZGF0YSB0byBjYXVzZSBpdHMgbWVtYmVyIHZhcmlhYmxlIGRlcmVm
J3MgaGFwcGVuIG9uIHRoZSB3b3JrZXIncyB0aHJlYWQgKHNpbmNlCiAgICAgLy8gYWxsIHJlZi9k
ZXJlZnMgb2YgdGhlc2Ugb2JqZWN0cyBhcmUgaGFwcGVuaW5nIG9uIHRoZSB0aHJlYWQgYXQgdGhp
cyBwb2ludCkuIE5vdGUgdGhhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5k
ZXggOTM1ZTk3MmQ1MzhmLi44ZGRhNGQzMTIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsK
IGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwpAQCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAg
SlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1l
RmxhZ3M7IH0KIAogcHJvdGVjdGVkOgotICAgIFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJh
bWV0ZXJzJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdv
cmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAg
ICBXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFNoYXJlZEJ1ZmZlciYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2Vy
UmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJv
dmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICAvLyBGYWN0b3J5IG1ldGhvZCBmb3Ig
Y3JlYXRpbmcgYSBuZXcgd29ya2VyIGNvbnRleHQgZm9yIHRoZSB0aHJlYWQuCiAgICAgdmlydHVh
bCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCBlM2NlOTJjZjM5N2MuLjg4NWIxNjEzNWY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90
aWZ5RmluaXNoZWQoKQogICAgIGF1dG8gc2NyaXB0TG9hZGVyID0gV1RGTW92ZShtX3NjcmlwdExv
YWRlcik7CiAKICAgICBpZiAoIXNjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKLSAgICAgICAgbV9j
bGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlw
dCgpLCBzY3JpcHRMb2FkZXItPmNlcnRpZmljYXRlSW5mbygpLCBzY3JpcHRMb2FkZXItPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJlZmVycmVyUG9saWN5KCkpOworICAg
ICAgICBtX2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoKnRoaXMsIHNjcmlwdExvYWRl
ci0+c2NyaXB0QXNTdHJpbmcoKSwgc2NyaXB0TG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgc2Ny
aXB0TG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5yZWZlcnJl
clBvbGljeSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAppbmRleCAyODgxMjI4YTgyNGQuLmY0MWJmODNmYWMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2Ug
dmFsaWQgcnVudGltZSBmbGFncwogCiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2Vu
dCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclBy
b3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJv
dmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRV
UkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZp
ZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRl
bnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEu
d29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVz
IH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKGRhdGEuc2NyaXB0KSwgbG9hZGVyUHJveHksIGRlYnVn
Z2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4o
KS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3Zp
ZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQorICAgIDogV29ya2Vy
VGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIg
KyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZN
b3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5p
c09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1Rp
bWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6
Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdn
ZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigp
LnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBt
X2pvYkRhdGFJZGVudGlmaWVyKGRhdGEuam9iRGF0YUlkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEo
Y3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQo=
</data>
<flag name="commit-queue"
          id="444881"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425046</attachid>
            <date>2021-04-02 13:18:57 -0700</date>
            <delta_ts>2021-04-02 14:45:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>224088_SharedBufferScriptSource_wip3.patch</filename>
            <type>text/plain</type>
            <size>37596</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhNmE2Y2NlMzQyNjguLjNhYzdlZmVjNTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Niw2ICsxMjg2LDcgQEAK
IAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2
MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMx
QzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI4NTkzQzI2MTY3MjI3MDAxOUVE
QzYgLyogU2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTaGFy
ZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovOyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04Mjc4LDYg
KzgyNzksNyBAQAogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFD
NkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2hh
cmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyU291
cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdE
NjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjkyLDYgKzI3
Mjk0LDcgQEAKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLAogCQkJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKKwkJCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyog
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAw
RjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNTQ2Niw2ICszNTQ2OSw3IEBACiAJCQkJ
NEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJz
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMTBmYTdlOGI0NDljLi45M2EwMTIwMDg0MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92
aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDEyIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCisgICAgU2NyaXB0U291cmNlQ29kZShTaGFyZWRCdWZmZXImIHNv
dXJjZSwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VU
eXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgICAgIDog
bV9wcm92aWRlcihTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlND
OjpTb3VyY2VPcmlnaW4geyB1cmwgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9uLCBzb3Vy
Y2VUeXBlKSkKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9z
aXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFz
ZWRJbnQoKSkKKyAgICB7CisgICAgfQorCiAgICAgU2NyaXB0U291cmNlQ29kZShDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgOiBt
X3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2FjaGVkU2NyaXB0
LCBzb3VyY2VUeXBlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKSkKICAgICAgICAgLCBtX2NvZGUo
bV9wcm92aWRlci5jb3B5UmVmKCkpCkBAIC02MywxMCArNzAsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKFNoYXJlZEJ1ZmZlciYgc291cmNlLCBVUkwm
JiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPEpTQzo6U2NyaXB0RmV0Y2hlcj4mJiBzY3Jp
cHRGZXRjaGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIoU2hhcmVkQnVmZmVyU291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLCBXVEZNb3ZlKHNjcmlw
dEZldGNoZXIpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCisg
ICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGlu
ZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisg
ICAgeworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5s
ZW5ndGgoKSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogCisgICAgSlNDOjpTb3VyY2VQcm92aWRlciYg
cHJvdmlkZXIoKSB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgU3RyaW5nVmlldyBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLT5zb3VyY2UoKTsgfQogCiAgICAgaW50
IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5maXJzdExpbmUoKS5vbmVCYXNlZElu
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TaGFyZWRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2hhcmVkQnVm
ZmVyU291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjI1NWUzZTAzODdjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
aGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3Zp
ZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzY3Jp
cHRCdWZmZXIsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyBz
b3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlv
bigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlID0gSlNDOjpTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcihXVEZNb3ZlKHNjcmlwdEJ1ZmZl
ciksIHNvdXJjZU9yaWdpbiwgV1RGTW92ZShzb3VyY2VVUkwpLCBzdGFydFBvc2l0aW9uLCBzb3Vy
Y2VUeXBlKSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICBpZiAoIW1fc2NyaXB0SGFzaCkKKyAgICAgICAgICAgIHNvdXJjZSgpOworICAg
ICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgc291cmNl
KCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9zY3JpcHRCdWZmZXItPnNpemUo
KSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgICAgIGlmICghbV9j
b250YWluc09ubHlBU0NJSSkgeworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNo
YXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3Jp
cHRCdWZmZXItPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAg
aWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQorICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9
IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLT5kYXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCisg
ICAgICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3Jp
cHRCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci0+
c2l6ZSgpKSB9OworCisgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKKyAgICAg
ICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zY3Jp
cHRCdWZmZXIpOworICAgICAgICAgICAgaWYgKCFtX3NjcmlwdEhhc2gpCisgICAgICAgICAgICAg
ICAgbV9zY3JpcHRIYXNoID0gbV9jYWNoZWRTY3JpcHRTdHJpbmcuaW1wbCgpLT5oYXNoKCk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gbV9jYWNoZWRTY3JpcHRTdHJpbmc7CisgICAgfQor
CisgICAgdm9pZCBjbGVhckRlY29kZWREYXRhKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVkU2Ny
aXB0U3RyaW5nID0gU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9pZCB0cnlSZXBsYWNlU2NyaXB0
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgc2NyaXB0QnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gSWYg
dGhpcyBuZXcgZmlsZS1tYXBwZWQgc2NyaXB0IGJ1ZmZlciBpcyBpZGVudGljYWwgdG8gdGhlIG9u
ZSB3ZSBoYXZlLCB0aGVuIHJlcGxhY2UKKyAgICAgICAgLy8gb3VycyB0byBzYXZlIGRpcnR5IG1l
bW9yeS4KKyAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmdldCgpICE9IHNjcmlwdEJ1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1
ZmZlcjsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdEJ1ZmZlciwgY29uc3QgSlNDOjpTb3VyY2VPcmln
aW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24m
IHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUp
CisgICAgICAgIDogSlNDOjpTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIFdURk1vdmUoc291
cmNlVVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkKKyAgICAgICAgLCBtX3NjcmlwdEJ1
ZmZlcihXVEZNb3ZlKHNjcmlwdEJ1ZmZlcikpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIHVuc2lnbmVk
IG1fc2NyaXB0SGFzaCB7IDAgfTsKKyAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0
cmluZzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggMDM3NjU3ODE2ODZiLi5kNDY0NzYwODRj
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAKQEAgLTM0LDExICszNCwxMiBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQo
Y29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94
eSYgd29ya2VyRGVidWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFBy
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdp
biYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblBy
b3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWVGbGFncykKK0RlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFk
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJv
eHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQ
cm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1zLCBzb3VyY2VDb2RlLCB3b3Jr
ZXJMb2FkZXJQcm94eSwgd29ya2VyRGVidWdnZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0
YXJ0TW9kZSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50
aW1lRmxhZ3MpCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKaW5k
ZXggMDU5ZDgxNzE4NjE2Li5hZmI0ZTQwMjg2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIAogY2xhc3Mg
RGVkaWNhdGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CkBAIC01NCw3ICs1
NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRl
YnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAgICBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFNoYXJlZEJ1ZmZlciYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2Vy
T2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlk
ZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3Jr
ZXJPYmplY3RQcm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMmE0MWEz
ZWU0YjA1Li44YTBjZGIxMjRlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgICAgICAgICAg
cmVzcG9uc2VVUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fc2NyaXB0TG9hZGVyLT51cmwoKS5m
cmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgfQogICAgIG1fY29udGV4dFByb3h5LnN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUocmVzcG9uc2VVUkwsIG1fbmFtZSwgY29udGV4dC0+dXNlckFnZW50KHJl
c3BvbnNlVVJMKSwgaXNPbmxpbmUsIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgY29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgbV93b3JrZXJDcmVhdGlvblRpbWUsIHJlZmVycmVyUG9saWN5LCBt
X3R5cGUsIG1fY3JlZGVudGlhbHMsIG1fcnVudGltZUZsYWdzKTsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpjb250ZXh0LCBtX3NjcmlwdExvYWRlci0+aWRl
bnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKmNvbnRleHQsIG1fc2NyaXB0TG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHRBc1N0cmluZygpKTsKIH0KIAogdm9pZCBX
b3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0MTMuLjMyNGVlNDIxYWFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTMyOCwxNCArMzI4LDIxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjpp
bXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKQogICAgICAgICBpZiAoYXV0
byBleGNlcHRpb24gPSBzY3JpcHRMb2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHRoaXMsIHVybCwg
RmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIGNhY2hlUG9saWN5LCBjc3BFbmZvcmNlbWVudCwg
cmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KCpleGNlcHRpb24pOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0
SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIt
PnNjcmlwdCgpKTsKLQotICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwotICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2Fk
ZXItPnNjcmlwdCgpLCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlv
bik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRF
eGNlcHRpb24oZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRl
ci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdEFzU3RyaW5nKCkpOworCisgICAg
ICAgIFdlYWtQdHI8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IHNoYXJlZEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyOworICAgICAgICB7CisgICAgICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOworICAgICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNj
cmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKTsK
KyAgICAgICAgICAgIHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVy
KCkpKTsKKyAgICAgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRp
b24pOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHNjcmlw
dCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRCdWZmZXJTb3Vy
Y2VQcm92aWRlcikKKyAgICAgICAgICAgIGFkZEltcG9ydGVkU2NyaXB0U291cmNlUHJvdmlkZXIo
dXJsLCAqc2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIpOwogICAgIH0KIAogICAgIHJldHVybiB7
IH07CkBAIC01MjcsNiArNTM0LDEzIEBAIFdvcmtlclRocmVhZCYgV29ya2VyR2xvYmFsU2NvcGU6
OnRocmVhZCgpIGNvbnN0CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1v
cnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVh
ZCgpKTsKKyAgICBkZWxldGVKU0NvZGVBbmRHQyhzeW5jaHJvbm91cyk7CisgICAgY2xlYXJEZWNv
ZGVkU2NyaXB0RGF0YSgpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxldGVKU0Nv
ZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKICAgICBBU1NFUlQoaXNDb250ZXh0
VGhyZWFkKCkpOwogCkBAIC01NjMsNCArNTc3LDQ2IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OnJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAgICAgfQog
fQogCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpzZXRNYWluU2NyaXB0U291cmNlUHJvdmlkZXIo
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXImIHByb3ZpZGVyKQoreworICAgIEFTU0VSVCghbV9t
YWluU2NyaXB0U291cmNlUHJvdmlkZXIpOworICAgIG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVy
ID0gbWFrZVdlYWtQdHIocHJvdmlkZXIpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjph
ZGRJbXBvcnRlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXJTb3VyY2VQcm92aWRlciYgcHJvdmlkZXIpCit7CisgICAgbV9pbXBvcnRlZFNjcmlwdHNTb3Vy
Y2VQcm92aWRlcnMuZW5zdXJlKHVybCwgW10geworICAgICAgICByZXR1cm4gV2Vha0hhc2hTZXQ8
U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUu
YWRkKHByb3ZpZGVyKTsKK30KKwordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJEZWNvZGVk
U2NyaXB0RGF0YSgpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIGlm
IChtX21haW5TY3JpcHRTb3VyY2VQcm92aWRlcikKKyAgICAgICAgbV9tYWluU2NyaXB0U291cmNl
UHJvdmlkZXItPmNsZWFyRGVjb2RlZERhdGEoKTsKKworICAgIGZvciAoYXV0byYgc291cmNlUHJv
dmlkZXJzIDogbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMudmFsdWVzKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBzb3VyY2VQcm92aWRlciA6IHNvdXJjZVByb3ZpZGVycykKKyAgICAg
ICAgICAgIHNvdXJjZVByb3ZpZGVyLmNsZWFyRGVjb2RlZERhdGEoKTsKKyAgICB9Cit9CisKK3Zv
aWQgV29ya2VyR2xvYmFsU2NvcGU6OnVwZGF0ZVNvdXJjZVByb3ZpZGVyQnVmZmVycyhTaGFyZWRC
dWZmZXIqIG1haW5TY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwor
CisgICAgaWYgKG1haW5TY3JpcHQgJiYgbV9tYWluU2NyaXB0U291cmNlUHJvdmlkZXIpCisgICAg
ICAgIG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyLT50cnlSZXBsYWNlU2NyaXB0QnVmZmVyKCpt
YWluU2NyaXB0KTsKKworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewor
ICAgICAgICBhdXRvIGl0ID0gbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMuZmluZChw
YWlyLmtleSk7CisgICAgICAgIGlmIChpdCA9PSBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVByb3Zp
ZGVycy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGF1dG8mIHNv
dXJjZVByb3ZpZGVyIDogaXQtPnZhbHVlKQorICAgICAgICAgICAgc291cmNlUHJvdmlkZXIudHJ5
UmVwbGFjZVNjcmlwdEJ1ZmZlcigqcGFpci52YWx1ZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
aW5kZXggMzdiZGYyOTE0N2UzLi43NTBlNzg2ZTFhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyU291cmNl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsMTAgKzEzMiwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWxlYXNlTWVtb3J5KFN5bmNocm9ub3VzKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVt
b3J5SW5Xb3JrZXJzKFN5bmNocm9ub3VzKTsKIAorICAgIHZvaWQgc2V0TWFpblNjcmlwdFNvdXJj
ZVByb3ZpZGVyKFNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyJik7CisgICAgdm9pZCBhZGRJbXBv
cnRlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyJik7CisKIHByb3RlY3RlZDoKICAgICBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJl
YWRUeXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBX
b3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKICAgICB2b2lkIGFwcGx5
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYpOworICAgIHZvaWQgdXBkYXRlU291cmNlUHJvdmlkZXJC
dWZmZXJzKFNoYXJlZEJ1ZmZlciogbWFpblNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpIGZpbmFsOwpAQCAtMTQ1LDYgKzE1MSw5
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2b2lkIGRlbGV0ZUpTQ29kZUFuZEdDKFN5bmNocm9u
b3VzKTsKKyAgICB2b2lkIGNsZWFyRGVjb2RlZFNjcmlwdERhdGEoKTsKKwogICAgIFVSTCBjb21w
bGV0ZVVSTChjb25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBm
aW5hbDsKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCkBA
IC0xODEsNiArMTkwLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVyZm9ybWFuY2U+IG1fcGVy
Zm9ybWFuY2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8Q3J5cHRvPiBtX2NyeXB0bzsKIAorICAgIFdl
YWtQdHI8U2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI+IG1fbWFpblNjcmlwdFNvdXJjZVByb3Zp
ZGVyOworICAgIEhhc2hNYXA8VVJMLCBXZWFrSGFzaFNldDxTaGFyZWRCdWZmZXJTb3VyY2VQcm92
aWRlcj4+IG1faW1wb3J0ZWRTY3JpcHRzU291cmNlUHJvdmlkZXJzOworCiAgICAgUmVmUHRyPFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+IG1fbWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCAx
MmQ1ZTFjMGY4MTkuLjRiYjU5ZjE5MzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkmIGNyZWF0ZShXb3JrZXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRp
bWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50
aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2hhcmVkQnVmZmVyJiBzb3Vy
Y2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGlt
ZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3Jl
ZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1p
bmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggNzIwNjQzODA4NDc5Li5mZTc5NWY1
MmMyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVz
c2FnaW5nUHJveHkoKQogICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHMgY3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3ZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJv
b2wgaXNPbmxpbmUsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlIHdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMg
bmVlZCB0byBiZSByZXZpc2l0ZWQgd2hlbiB3ZSBzdXBwb3J0IG5lc3RlZCB3b3JrZXIgb25lIGRh
eQogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGJlOWY0NjBmMzhlMi4uNGMw
Y2MyZjM5ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVt
ZW50YXRpb25zIG9mIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgLy8gKE9ubHkgdXNlIHRo
ZXNlIGZ1bmN0aW9ucyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQotICAgIHZvaWQgc3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3Rv
bmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1
ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNoYXJlZEJ1ZmZlciYg
c291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
Ym9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90b25p
Y1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5h
dGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtl
ckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwogICAgIHZvaWQg
cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCBhNGJlMTAwNDBiZTIuLjUwYzg4NWE2MDkzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25jYXN0
PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlwdFJlc291
cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJUb1N0
cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOworICAgICAgICAgICAgbV9zY3JpcHQgPSBz
Y3JpcHRSZXNvdXJjZS0+c2NyaXB0OwogICAgICAgICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlw
dFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9
IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAg
aWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNw
b25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtF
cnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUi
X3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtl
ckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQoKSksIG1f
cmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3Vy
Y2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0
KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYK
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMjExLDggKzIxMSwxMyBAQCB2b2lkIFdvcmtl
clNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikK
ICAgICAKICAgICBpZiAobGVuID09IC0xKQogICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisK
KyAgICBpZiAoIW1fc2NyaXB0KQorICAgICAgICBtX3NjcmlwdCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgCi0gICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEs
IGxlbikpOworICAgIFN0cmluZyBkZWNvZGVkU2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0
YSwgbGVuKTsKKyAgICBhdXRvIGRlY29kZWRTY3JpcHRVdGY4ID0gZGVjb2RlZFNjcmlwdC51dGY4
KCk7CisgICAgbV9zY3JpcHQtPmFwcGVuZChkZWNvZGVkU2NyaXB0VXRmOC5kYXRhKCksIGRlY29k
ZWRTY3JpcHRVdGY4Lmxlbmd0aCgpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMjIyLDggKzIyNywx
MSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9kZWNv
ZGVyKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKyAgICBp
ZiAobV9kZWNvZGVyKSB7CisgICAgICAgIFN0cmluZyBkZWNvZGVkU2NyaXB0ID0gbV9kZWNvZGVy
LT5mbHVzaCgpOworICAgICAgICBhdXRvIGRlY29kZWRTY3JpcHRVdGY4ID0gZGVjb2RlZFNjcmlw
dC51dGY4KCk7CisgICAgICAgIG1fc2NyaXB0LT5hcHBlbmQoZGVjb2RlZFNjcmlwdFV0ZjguZGF0
YSgpLCBkZWNvZGVkU2NyaXB0VXRmOC5sZW5ndGgoKSk7CisgICAgfQogCiAgICAgbV9pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKICAgICBub3RpZnlGaW5pc2hlZCgpOwpAQCAtMjQzLDkgKzI1MSwx
MSBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RXJyb3IoKQogICAgIG5vdGlmeUZp
bmlzaGVkKCk7CiB9CiAKLVN0cmluZyBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlwdCgpCitSZWY8
U2hhcmVkQnVmZmVyPiBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlwdCgpCiB7Ci0gICAgcmV0dXJu
IG1fc2NyaXB0LnRvU3RyaW5nKCk7CisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAgbV9zY3Jp
cHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9zY3JpcHQ7CiB9CiAK
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0yNjgsNCArMjc4
LDExIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpjYW5jZWwoKQogICAgIG1fdGhyZWFkYWJs
ZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKK1N0cmluZyBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlw
dEFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2NyaXB0KQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gc2NyaXB0QnVmZmVyVG9TdHJpbmcoKm1fc2NyaXB0
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggY2ZhMzFhMzUzMjU5Li4wZjRlZWVlMGJkMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNjIsNyAr
NjIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5vdGlmeUVycm9yKCk7CiAKLSAgICBTdHJpbmcg
c2NyaXB0KCk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gc2NyaXB0KCk7CisgICAgU3RyaW5nIHNj
cmlwdEFzU3RyaW5nKCkgY29uc3Q7CiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtOTgsNyArOTksNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX3RocmVhZGFibGVMb2FkZXI7CiAgICAgU3RyaW5n
IG1fcmVzcG9uc2VFbmNvZGluZzsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9zY3JpcHQ7CiAgICAgVVJMIG1fdXJsOwogICAgIFVSTCBtX3Jlc3BvbnNlVVJMOwog
ICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA3N2ZjZDJhNzQ0NDguLmI0OWQyYzhiNWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNjYsMjUgKzY2LDI1IEBA
IFdvcmtlclBhcmFtZXRlcnMgV29ya2VyUGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
IHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFy
dHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFNoYXJlZEJ1ZmZlciYgc291
cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luKTsKIAogICAgIFdvcmtlclBhcmFtZXRlcnMgcGFyYW1zOwogICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luOwotICAgIFN0cmluZyBzb3VyY2VDb2RlOworICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHNvdXJjZUNvZGU7CiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsK
ICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbjsKIH07CiAKLVdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBvdGhlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKQorV29ya2VyVGhyZWFk
U3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIG90aGVyLCBTaGFyZWRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pCiAgICAgOiBwYXJh
bXMob3RoZXIuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBvcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShvdGhlci5zY3JpcHRVUkwpLT5pc29sYXRlZENvcHkoKSkKLSAgICAsIHNvdXJjZUNvZGUo
c291cmNlQ29kZS5pc29sYXRlZENvcHkoKSkKKyAgICAsIHNvdXJjZUNvZGUoc291cmNlQ29kZS5j
b3B5KCkpCiAgICAgLCBzdGFydE1vZGUoc3RhcnRNb2RlKQogICAgICwgdG9wT3JpZ2luKHRvcE9y
aWdpbi5pc29sYXRlZENvcHkoKSkKIHsKIH0KIAotV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQo
Y29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94
eSYgd29ya2VyRGVidWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9y
dGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVj
dGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZs
YWdzIHJ1bnRpbWVGbGFncykKK1dvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFdvcmtl
clBhcmFtZXRlcnMmIHBhcmFtcywgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRl
YnVnZ2VyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwg
U29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1l
RmxhZ3MpCiAgICAgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQocGFyYW1zLmlkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5
KQogICAgICwgbV93b3JrZXJEZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCkBAIC0x
MjUsMTIgKzEyNSwxNiBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vz
c2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBo
b2xkaW5nIG9ubHkgdGhlIGluaXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlz
IE1vZHVsZSwgd2Ugc2hvdWxkIGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGlu
ZyB0aGUgcmVzdCBvZiB0aGlzLgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlm
IHdlIGFyZSBleGVjdXRpbmcgaW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50Lgog
CisgICAgV2Vha1B0cjxTaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcj4gc2hhcmVkQnVmZmVyU291
cmNlUHJvdmlkZXI7CiAgICAgaWYgKG1fc3RhcnR1cERhdGEtPnBhcmFtcy53b3JrZXJUeXBlID09
IFdvcmtlclR5cGU6OkNsYXNzaWMpIHsKLSAgICAgICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCkt
PmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJM
KG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpKSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwor
ICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNl
Q29kZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpKTsKKyAgICAgICAgc2hh
cmVkQnVmZmVyU291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOworICAgICAgICBn
bG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+ZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4Y2VwdGlvbk1l
c3NhZ2UpOwogICAgICAgICBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBhdXRvIHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVh
dGUoZ2xvYmFsU2NvcGUoKS0+Y3JlZGVudGlhbHMoKSwgZ2xvYmFsU2NvcGUoKS0+ZGVzdGluYXRp
b24oKSwgZ2xvYmFsU2NvcGUoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIFNjcmlwdFNv
dXJjZUNvZGUgc291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3VyY2VDb2RlLCBVUkwobV9zdGFy
dHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCksIHsgfSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGU6Ok1vZHVsZSwgc2NyaXB0RmV0Y2hlci5jb3B5UmVmKCkpOworICAgICAgICBzaGFyZWRC
dWZmZXJTb3VyY2VQcm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
clNvdXJjZVByb3ZpZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7CiAgICAgICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmxvYWRN
b2R1bGVTeW5jaHJvbm91c2x5KHNjcmlwdEZldGNoZXIuZ2V0KCksIHNvdXJjZUNvZGUpOwogICAg
ICAgICBpZiAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKICAgICAgICAgICAg
IGlmIChPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gc2NyaXB0RmV0Y2hl
ci0+ZXJyb3IoKSkgewpAQCAtMTQ1LDYgKzE0OSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFs
dWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoc2hhcmVkQnVmZmVyU291cmNlUHJvdmlk
ZXIpCisgICAgICAgIGdsb2JhbFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigq
c2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIpOwogCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1cCBk
YXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhlIHdv
cmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBvYmpl
Y3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0aGF0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA5MzVlOTcyZDUzOGYuLjhk
ZGE0ZDMxMjA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zOCw2
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2Nr
ZXRQcm92aWRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgV29ya2VyTG9hZGVy
UHJveHk7CkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYs
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNv
Y2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIFdvcmtlclRocmVhZChjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGlt
ZUZsYWdzKTsKIAogICAgIC8vIEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3Jr
ZXIgY29udGV4dCBmb3IgdGhlIHRocmVhZC4KICAgICB2aXJ0dWFsIFJlZjxXb3JrZXJHbG9iYWxT
Y29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBiMDNmM2RhY2I5MzkuLjUwY2Q5M2YzMDk5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTE1OCw2ICsxNTgsOCBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6c2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFNlcnZp
Y2VXb3JrZXJDbwogdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQogewogICAgIC8vIFRoZXNlIHNjcmlw
dHMgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lcyB3ZSBoYXZlLiBIb3dldmVyLCB0aGVz
ZSBhcmUgbW1hcCdkIHNvIHVzaW5nIHRoZW0gaGVscHMgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2Fn
ZS4KKyAgICB1cGRhdGVTb3VyY2VQcm92aWRlckJ1ZmZlcnMoc2NyaXB0LmdldCgpLCBpbXBvcnRl
ZFNjcmlwdHMpOworCiAgICAgaWYgKHNjcmlwdCkgewogICAgICAgICBBU1NFUlQobV9jb250ZXh0
RGF0YS5zY3JpcHQuZ2V0KCkgPT0gKnNjcmlwdCk7CiAgICAgICAgIG1fY29udGV4dERhdGEuc2Ny
aXB0ID0gc2NyaXB0LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggZTNjZTkyY2YzOTdjLi44
ODViMTYxMzVmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBhdXRvIHNjcmlwdExvYWRlciA9IFdURk1vdmUo
bV9zY3JpcHRMb2FkZXIpOwogCiAgICAgaWYgKCFzY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7Ci0g
ICAgICAgIG1fY2xpZW50LmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgc2NyaXB0TG9h
ZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5yZWZlcnJlclBvbGlj
eSgpKTsKKyAgICAgICAgbV9jbGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBz
Y3JpcHRMb2FkZXItPnNjcmlwdEFzU3RyaW5nKCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNhdGVJ
bmZvKCksIHNjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExvYWRl
ci0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggMjg4MTIyOGE4MjRkLi5mNDFiZjgzZmFjMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBG
SVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJpbmcm
JiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2Vy
UHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHks
IFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZCh7IGRh
dGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9y
OjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdl
bnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwg
ZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwg
eyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0
aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhkYXRhLnNjcmlwdCksIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVk
KCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXku
dG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAg
ICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vydmlj
ZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENy
ZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJv
eHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQo
KSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNv
Y2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAg
ICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcihkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQogICAgICwgbV9qb2JEYXRhSWRlbnRpZmllcihkYXRhLmpvYkRhdGFJZGVudGlmaWVyKQogICAg
ICwgbV9kYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkK
</data>
<flag name="commit-queue"
          id="444889"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425055</attachid>
            <date>2021-04-02 14:32:54 -0700</date>
            <delta_ts>2021-04-02 16:11:48 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>224088_SharedBufferScriptSource_wip4.patch</filename>
            <type>text/plain</type>
            <size>37584</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhNmE2Y2NlMzQyNjguLjM5OWQ1Y2MwYjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Niw2ICsxMjg2LDcgQEAK
IAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2
MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMx
QzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI4NTkzQzI2MTY3MjI3MDAxOUVE
QzYgLyogU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovOyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04Mjc4LDYg
KzgyNzksNyBAQAogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFD
NkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdE
NjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjkyLDYgKzI3
Mjk0LDcgQEAKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLAogCQkJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKKwkJCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyog
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAw
RjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNTQ2Niw2ICszNTQ2OSw3IEBACiAJCQkJ
NEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJz
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjYzQ3OTJiY2MxYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAg
LTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nv
dXJjZVByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBmaW5hbCA6IHB1Ymxp
YyBKU0M6OlNvdXJjZVByb3ZpZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBzY3JpcHRCdWZmZXIsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJiBzb3Vy
Y2VPcmlnaW4sIFN0cmluZyBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3Vy
Y2VUeXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcihX
VEZNb3ZlKHNjcmlwdEJ1ZmZlciksIHNvdXJjZU9yaWdpbiwgV1RGTW92ZShzb3VyY2VVUkwpLCBz
dGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fc2NyaXB0SGFzaCkKKyAgICAgICAg
ICAgIHNvdXJjZSgpOworICAgICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOworICAgIH0KKworICAg
IFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9z
Y3JpcHRCdWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgeworICAgICAgICAgICAgbV9jb250
YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXItPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQorICAgICAgICAgICAg
ICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLT5kYXRhKCkp
LCBtX3NjcmlwdEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKm1fY29u
dGFpbnNPbmx5QVNDSUkpCisgICAgICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci0+c2l6ZSgpKSB9OworCisgICAgICAgIGlmICghbV9jYWNoZWRTY3Jp
cHRTdHJpbmcpIHsKKyAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gc2NyaXB0QnVm
ZmVyVG9TdHJpbmcobV9zY3JpcHRCdWZmZXIpOworICAgICAgICAgICAgaWYgKCFtX3NjcmlwdEhh
c2gpCisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gbV9jYWNoZWRTY3JpcHRTdHJpbmcu
aW1wbCgpLT5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbV9jYWNoZWRTY3Jp
cHRTdHJpbmc7CisgICAgfQorCisgICAgdm9pZCBjbGVhckRlY29kZWREYXRhKCkKKyAgICB7Cisg
ICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9p
ZCB0cnlSZXBsYWNlU2NyaXB0QnVmZmVyKFNoYXJlZEJ1ZmZlciYgc2NyaXB0QnVmZmVyKQorICAg
IHsKKyAgICAgICAgLy8gSWYgdGhpcyBuZXcgZmlsZS1tYXBwZWQgc2NyaXB0IGJ1ZmZlciBpcyBp
ZGVudGljYWwgdG8gdGhlIG9uZSB3ZSBoYXZlLCB0aGVuIHJlcGxhY2UKKyAgICAgICAgLy8gb3Vy
cyB0byBzYXZlIGRpcnR5IG1lbW9yeS4KKyAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmdldCgp
ICE9IHNjcmlwdEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3Njcmlw
dEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHRCdWZmZXIsIGNvbnN0
IEpTQzo6U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyYmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNl
VHlwZSBzb3VyY2VUeXBlKQorICAgICAgICA6IEpTQzo6U291cmNlUHJvdmlkZXIoc291cmNlT3Jp
Z2luLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpCisgICAg
ICAgICwgbV9zY3JpcHRCdWZmZXIoV1RGTW92ZShzY3JpcHRCdWZmZXIpKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKKyAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNj
cmlwdFN0cmluZzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVND
SUk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMTBmYTdlOGI0NDljLi5iMDg2OTMwMDI5
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJD
YWNoZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
b3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDEy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgU2NyaXB0U291cmNlQ29kZShTaGFyZWRC
dWZmZXImIHNvdXJjZSwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3Rh
cnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZSBzb3VyY2VUeXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCisg
ICAgICAgIDogbV9wcm92aWRlcihTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNv
dXJjZSwgSlNDOjpTb3VyY2VPcmlnaW4geyB1cmwgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0
aW9uLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCks
IHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1
bW4ub25lQmFzZWRJbnQoKSkKKyAgICB7CisgICAgfQorCiAgICAgU2NyaXB0U291cmNlQ29kZShD
YWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUg
c291cmNlVHlwZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKICAg
ICAgICAgOiBtX3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2Fj
aGVkU2NyaXB0LCBzb3VyY2VUeXBlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKSkKICAgICAgICAg
LCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCkpCkBAIC02MywxMCArNzAsMTcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2RlKFNoYXJlZEJ1ZmZlciYgc291
cmNlLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPEpTQzo6U2NyaXB0RmV0Y2hl
cj4mJiBzY3JpcHRGZXRjaGVyKQorICAgICAgICA6IG1fcHJvdmlkZXIoU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLCBXVEZN
b3ZlKHNjcmlwdEZldGNoZXIpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNl
VHlwZSkpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0
aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2Vk
SW50KCkpCisgICAgeworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZS5sZW5ndGgoKSA9PSAwOyB9CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpz
U291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogCisgICAgSlNDOjpTb3VyY2VQ
cm92aWRlciYgcHJvdmlkZXIoKSB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgU3Ry
aW5nVmlldyBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLT5zb3VyY2UoKTsgfQog
CiAgICAgaW50IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZS5maXJzdExpbmUoKS5v
bmVCYXNlZEludCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAKaW5kZXggMDM3NjU3ODE2ODZiLi5kNDY0NzYwODRjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM0
LDExICszNCwxMiBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRl
clByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVi
dWdnZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykK
K0RlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtl
clBhcmFtZXRlcnMmIHBhcmFtcywgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mp
CiAgICAgOiBXb3JrZXJUaHJlYWQocGFyYW1zLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94
eSwgd29ya2VyRGVidWdnZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgdG9w
T3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCiAg
ICAgLCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKaW5kZXggMDU5ZDgxNzE4
NjE2Li5hZmI0ZTQwMjg2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJUaHJlYWQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIAogY2xhc3MgRGVkaWNhdGVkV29y
a2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CkBAIC01NCw3ICs1NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkm
LCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2Nr
ZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkm
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4s
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1
bnRpbWVGbGFncyk7CiAKICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94
eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMmE0MWEzZWU0YjA1Li44YTBj
ZGIxMjRlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgICAgICAgICAgcmVzcG9uc2VVUkwu
c2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fc2NyaXB0TG9hZGVyLT51cmwoKS5mcmFnbWVudElkZW50
aWZpZXIoKSk7CiAgICAgfQogICAgIG1fY29udGV4dFByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2Nv
cGUocmVzcG9uc2VVUkwsIG1fbmFtZSwgY29udGV4dC0+dXNlckFnZW50KHJlc3BvbnNlVVJMKSwg
aXNPbmxpbmUsIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgbV93b3JrZXJDcmVhdGlvblRpbWUsIHJlZmVycmVyUG9saWN5LCBtX3R5cGUsIG1fY3Jl
ZGVudGlhbHMsIG1fcnVudGltZUZsYWdzKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdEltcG9ydGVkKCpjb250ZXh0LCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBt
X3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2NyaXB0SW1wb3J0ZWQoKmNvbnRleHQsIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1f
c2NyaXB0TG9hZGVyLT5zY3JpcHRBc1N0cmluZygpKTsKIH0KIAogdm9pZCBXb3JrZXI6OmRpc3Bh
dGNoRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCA4N2ZjNThjMWI0MTMuLjVmYTg0NTlhNGZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMyOCwxNCArMzI4
LDIxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKQogICAgICAgICBpZiAoYXV0byBleGNlcHRpb24g
PSBzY3JpcHRMb2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHRoaXMsIHVybCwgRmV0Y2hPcHRpb25z
OjpNb2RlOjpOb0NvcnMsIGNhY2hlUG9saWN5LCBjc3BFbmZvcmNlbWVudCwgcmVzb3VyY2VSZXF1
ZXN0SWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpleGNlcHRpb24p
OwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRo
aXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsK
LQotICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBz
Y3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgp
LCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlvbik7Ci0gICAgICAg
IGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhj
ZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmll
cigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdEFzU3RyaW5nKCkpOworCisgICAgICAgIFdlYWtQdHI8
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXI+IHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyOwor
ICAgICAgICB7CisgICAgICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OworICAgICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+
c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKTsKKyAgICAgICAgICAg
IHNoYXJlZEJ1ZmZlclNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKKyAgICAg
ICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24pOworICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNl
cHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZWRCdWZmZXJTb3VyY2VQcm92aWRlcikK
KyAgICAgICAgICAgIGFkZEltcG9ydGVkU2NyaXB0U291cmNlUHJvdmlkZXIodXJsLCAqc2hhcmVk
QnVmZmVyU291cmNlUHJvdmlkZXIpOwogICAgIH0KIAogICAgIHJldHVybiB7IH07CkBAIC01Mjcs
NiArNTM0LDEzIEBAIFdvcmtlclRocmVhZCYgV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpIGNv
bnN0CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1vcnkoU3luY2hyb25v
dXMgc3luY2hyb25vdXMpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBk
ZWxldGVKU0NvZGVBbmRHQyhzeW5jaHJvbm91cyk7CisgICAgY2xlYXJEZWNvZGVkU2NyaXB0RGF0
YSgpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5j
aHJvbm91cyBzeW5jaHJvbm91cykKIHsKICAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwog
CkBAIC01NjMsNCArNTc3LDQ2IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1v
cnlJbldvcmtlcnMoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAgICAgfQogfQogCit2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjpzZXRNYWluU2NyaXB0U291cmNlUHJvdmlkZXIoU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXImIHByb3ZpZGVyKQoreworICAgIEFTU0VSVCghbV9tYWluU2NyaXB0U291
cmNlUHJvdmlkZXIpOworICAgIG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQ
dHIocHJvdmlkZXIpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRJbXBvcnRlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYgdXJsLCBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlciYgcHJvdmlkZXIpCit7CisgICAgbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMu
ZW5zdXJlKHVybCwgW10geworICAgICAgICByZXR1cm4gV2Vha0hhc2hTZXQ8U2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKHByb3ZpZGVy
KTsKK30KKwordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJEZWNvZGVkU2NyaXB0RGF0YSgp
Cit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIGlmIChtX21haW5TY3Jp
cHRTb3VyY2VQcm92aWRlcikKKyAgICAgICAgbV9tYWluU2NyaXB0U291cmNlUHJvdmlkZXItPmNs
ZWFyRGVjb2RlZERhdGEoKTsKKworICAgIGZvciAoYXV0byYgc291cmNlUHJvdmlkZXJzIDogbV9p
bXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBzb3VyY2VQcm92aWRlciA6IHNvdXJjZVByb3ZpZGVycykKKyAgICAgICAgICAgIHNvdXJj
ZVByb3ZpZGVyLmNsZWFyRGVjb2RlZERhdGEoKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2VyR2xv
YmFsU2NvcGU6OnVwZGF0ZVNvdXJjZVByb3ZpZGVyQnVmZmVycyhTaGFyZWRCdWZmZXIqIG1haW5T
Y3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGltcG9ydGVk
U2NyaXB0cykKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1h
aW5TY3JpcHQgJiYgbV9tYWluU2NyaXB0U291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fbWFpblNj
cmlwdFNvdXJjZVByb3ZpZGVyLT50cnlSZXBsYWNlU2NyaXB0QnVmZmVyKCptYWluU2NyaXB0KTsK
KworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRv
IGl0ID0gbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMuZmluZChwYWlyLmtleSk7Cisg
ICAgICAgIGlmIChpdCA9PSBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVByb3ZpZGVycy5lbmQoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZVByb3ZpZGVy
IDogaXQtPnZhbHVlKQorICAgICAgICAgICAgc291cmNlUHJvdmlkZXIudHJ5UmVwbGFjZVNjcmlw
dEJ1ZmZlcigqcGFpci52YWx1ZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMzdiZGYy
OTE0N2UzLi4zM2Q2ZjkyMWIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNz
YWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMzAsMTAgKzEzMiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTWVt
b3J5KFN5bmNocm9ub3VzKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5SW5Xb3JrZXJz
KFN5bmNocm9ub3VzKTsKIAorICAgIHZvaWQgc2V0TWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyKFNj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJik7CisgICAgdm9pZCBhZGRJbXBvcnRlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYsIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJik7CisK
IHByb3RlY3RlZDoKICAgICBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlLCBjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQm
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKICAgICB2b2lkIGFwcGx5Q29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYpOworICAgIHZvaWQgdXBkYXRlU291cmNlUHJvdmlkZXJCdWZmZXJzKFNoYXJl
ZEJ1ZmZlciogbWFpblNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxvZ0V4Y2VwdGlv
blRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRDYWxsU3RhY2s+JiYpIGZpbmFsOwpAQCAtMTQ1LDYgKzE1MSw5IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKKyAgICB2b2lkIGRlbGV0ZUpTQ29kZUFuZEdDKFN5bmNocm9ub3VzKTsKKyAgICB2
b2lkIGNsZWFyRGVjb2RlZFNjcmlwdERhdGEoKTsKKwogICAgIFVSTCBjb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAgICBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCkBAIC0xODEsNiArMTkw
LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVyZm9ybWFuY2U+IG1fcGVyZm9ybWFuY2U7CiAg
ICAgbXV0YWJsZSBSZWZQdHI8Q3J5cHRvPiBtX2NyeXB0bzsKIAorICAgIFdlYWtQdHI8U2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXI+IG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyOworICAgIEhh
c2hNYXA8VVJMLCBXZWFrSGFzaFNldDxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4+IG1faW1w
b3J0ZWRTY3JpcHRzU291cmNlUHJvdmlkZXJzOworCiAgICAgUmVmUHRyPFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+IG1fbWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCAxMmQ1ZTFjMGY4MTku
LjRiYjU5ZjE5MzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIGNyZWF0
ZShXb3JrZXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpS
dW50aW1lRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpT
Qzo6UnVudGltZUZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xv
YmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggNzIwNjQzODA4NDc5Li5mZTc5NWY1MmMyYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHko
KQogICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpKTsKIH0KIAot
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVu
dGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK3ZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUs
IFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1l
IHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lRmxhZ3MpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZCB0byBiZSBy
ZXZpc2l0ZWQgd2hlbiB3ZSBzdXBwb3J0IG5lc3RlZCB3b3JrZXIgb25lIGRheQogICAgIEFTU0VS
VChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGJlOWY0NjBmMzhlMi4uNGMwY2MyZjM5ZmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9m
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIGZ1bmN0aW9u
cyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1l
T3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlh
bHMsIEpTQzo6UnVudGltZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9y
aWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxz
LCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9i
YWxTY29wZSgpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3Bl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb1dv
cmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cAppbmRleCBhNGJlMTAwNDBiZTIuLjUwYzg4NWE2MDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBPcHRpb25h
bDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7
CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsK
LSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJUb1N0cmluZygqc2NyaXB0
UmVzb3VyY2UtPnNjcmlwdCkpOworICAgICAgICAgICAgbV9zY3JpcHQgPSBzY3JpcHRSZXNvdXJj
ZS0+c2NyaXB0OwogICAgICAgICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5y
ZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291
cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDIs
NyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBl
KCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUg
dHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3Bl
KS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkws
IG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9u
c2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpAQCAtMjExLDggKzIxMSwxMyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKICAgICAKICAgICBp
ZiAobGVuID09IC0xKQogICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisKKyAgICBpZiAoIW1f
c2NyaXB0KQorICAgICAgICBtX3NjcmlwdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
Ci0gICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAg
IFN0cmluZyBkZWNvZGVkU2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKKyAg
ICBhdXRvIGRlY29kZWRTY3JpcHRVdGY4ID0gZGVjb2RlZFNjcmlwdC51dGY4KCk7CisgICAgbV9z
Y3JpcHQtPmFwcGVuZChkZWNvZGVkU2NyaXB0VXRmOC5kYXRhKCksIGRlY29kZWRTY3JpcHRVdGY4
Lmxlbmd0aCgpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMjIyLDggKzIyNywxMSBAQCB2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9kZWNvZGVyKQotICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKyAgICBpZiAobV9kZWNvZGVy
KSB7CisgICAgICAgIFN0cmluZyBkZWNvZGVkU2NyaXB0ID0gbV9kZWNvZGVyLT5mbHVzaCgpOwor
ICAgICAgICBhdXRvIGRlY29kZWRTY3JpcHRVdGY4ID0gZGVjb2RlZFNjcmlwdC51dGY4KCk7Cisg
ICAgICAgIG1fc2NyaXB0LT5hcHBlbmQoZGVjb2RlZFNjcmlwdFV0ZjguZGF0YSgpLCBkZWNvZGVk
U2NyaXB0VXRmOC5sZW5ndGgoKSk7CisgICAgfQogCiAgICAgbV9pZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsKICAgICBub3RpZnlGaW5pc2hlZCgpOwpAQCAtMjQzLDkgKzI1MSwxMSBAQCB2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RXJyb3IoKQogICAgIG5vdGlmeUZpbmlzaGVkKCk7CiB9
CiAKLVN0cmluZyBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlwdCgpCitSZWY8U2hhcmVkQnVmZmVy
PiBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlwdCgpCiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0LnRv
U3RyaW5nKCk7CisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAgbV9zY3JpcHQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9zY3JpcHQ7CiB9CiAKIHZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0yNjgsNCArMjc4LDExIEBAIHZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpjYW5jZWwoKQogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IG51
bGxwdHI7CiB9CiAKK1N0cmluZyBXb3JrZXJTY3JpcHRMb2FkZXI6OnNjcmlwdEFzU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fc2NyaXB0KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKyAgICByZXR1cm4gc2NyaXB0QnVmZmVyVG9TdHJpbmcoKm1fc2NyaXB0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKaW5kZXggY2ZhMzFhMzUzMjU5Li4wZjRlZWVlMGJkMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNjIsNyArNjIsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIG5vdGlmeUVycm9yKCk7CiAKLSAgICBTdHJpbmcgc2NyaXB0KCk7Cisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gc2NyaXB0KCk7CisgICAgU3RyaW5nIHNjcmlwdEFzU3RyaW5n
KCkgY29uc3Q7CiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQpAQCAtOTgsNyArOTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBtX3RocmVhZGFibGVMb2FkZXI7CiAgICAgU3RyaW5nIG1fcmVzcG9uc2VF
bmNvZGluZzsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAg
IFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zY3Jp
cHQ7CiAgICAgVVJMIG1fdXJsOwogICAgIFVSTCBtX3Jlc3BvbnNlVVJMOwogICAgIENlcnRpZmlj
YXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcAppbmRleCA3N2ZjZDJhNzQ0NDguLmY4NDY3MDlhMDE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNjYsMjUgKzY2LDI1IEBAIFdvcmtlclBhcmFt
ZXRlcnMgV29ya2VyUGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHN0cnVjdCBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFNoYXJlZEJ1ZmZlciYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKTsKIAog
ICAgIFdvcmtlclBhcmFtZXRlcnMgcGFyYW1zOwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luOwotICAgIFN0cmluZyBzb3VyY2VDb2RlOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNvdXJj
ZUNvZGU7CiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKICAgICBSZWY8U2Vj
dXJpdHlPcmlnaW4+IHRvcE9yaWdpbjsKIH07CiAKLVdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBvdGhlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKQorV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6
OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIG90aGVyLCBT
aGFyZWRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4pCiAgICAgOiBwYXJhbXMob3RoZXIuaXNv
bGF0ZWRDb3B5KCkpCiAgICAgLCBvcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvdGhlci5z
Y3JpcHRVUkwpLT5pc29sYXRlZENvcHkoKSkKLSAgICAsIHNvdXJjZUNvZGUoc291cmNlQ29kZS5p
c29sYXRlZENvcHkoKSkKKyAgICAsIHNvdXJjZUNvZGUoc291cmNlQ29kZS5jb3B5KCkpCiAgICAg
LCBzdGFydE1vZGUoc3RhcnRNb2RlKQogICAgICwgdG9wT3JpZ2luKHRvcE9yaWdpbi5pc29sYXRl
ZENvcHkoKSkKIHsKIH0KIAotV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRl
clByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVi
dWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVG
bGFncykKK1dvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMm
IHBhcmFtcywgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29y
a2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHks
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAg
OiBXb3JrZXJPcldvcmtsZXRUaHJlYWQocGFyYW1zLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkp
CiAgICAgLCBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAgICwgbV93
b3JrZXJEZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCkBAIC0xMjUsMTIgKzEyNSwx
NiBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcm
IGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkg
dGhlIGluaXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ug
c2hvdWxkIGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBv
ZiB0aGlzLgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVj
dXRpbmcgaW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCisgICAgV2Vha1B0
cjxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4gc2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXI7
CiAgICAgaWYgKG1fc3RhcnR1cERhdGEtPnBhcmFtcy53b3JrZXJUeXBlID09IFdvcmtlclR5cGU6
OkNsYXNzaWMpIHsKLSAgICAgICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmV2YWx1YXRlKFNj
cmlwdFNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJMKG1fc3RhcnR1cERh
dGEtPnBhcmFtcy5zY3JpcHRVUkwpKSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOworICAgICAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJMKG1f
c3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpKTsKKyAgICAgICAgc2hhcmVkQnVmZmVyU291
cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTY3JpcHRCdWZmZXJTb3VyY2VQ
cm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOworICAgICAgICBnbG9iYWxTY29wZSgp
LT5zY3JpcHQoKS0+ZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwogICAg
ICAgICBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBh
dXRvIHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVhdGUoZ2xvYmFsU2Nv
cGUoKS0+Y3JlZGVudGlhbHMoKSwgZ2xvYmFsU2NvcGUoKS0+ZGVzdGluYXRpb24oKSwgZ2xvYmFs
U2NvcGUoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgc291
cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3VyY2VDb2RlLCBVUkwobV9zdGFydHVwRGF0YS0+cGFy
YW1zLnNjcmlwdFVSTCksIHsgfSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVs
ZSwgc2NyaXB0RmV0Y2hlci5jb3B5UmVmKCkpOworICAgICAgICBzaGFyZWRCdWZmZXJTb3VyY2VQ
cm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFNjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7CiAgICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgcmVzdWx0ID0gZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmxvYWRNb2R1bGVTeW5jaHJv
bm91c2x5KHNjcmlwdEZldGNoZXIuZ2V0KCksIHNvdXJjZUNvZGUpOwogICAgICAgICBpZiAocmVz
dWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25h
bDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gc2NyaXB0RmV0Y2hlci0+ZXJyb3IoKSkg
ewpAQCAtMTQ1LDYgKzE0OSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElm
TmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KKyAgICBpZiAoc2hhcmVkQnVmZmVyU291cmNlUHJvdmlkZXIpCisgICAgICAg
IGdsb2JhbFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc2hhcmVkQnVmZmVy
U291cmNlUHJvdmlkZXIpOwogCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1cCBkYXRhIHRvIGNhdXNl
IGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhlIHdvcmtlcidzIHRocmVh
ZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBvYmplY3RzIGFyZSBoYXBw
ZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0aGF0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA5MzVlOTcyZDUzOGYuLjhkZGE0ZDMxMjA0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsK
IGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CkBAIC05
Miw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29y
a2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlclJlcG9y
dGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVy
KiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJh
bWV0ZXJzJiwgU2hhcmVkQnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdv
cmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKIAog
ICAgIC8vIEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29udGV4dCBm
b3IgdGhlIHRocmVhZC4KICAgICB2aXJ0dWFsIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRl
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCBiMDNmM2RhY2I5MzkuLjUwY2Q5M2YzMDk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTE1OCw2ICsxNTgsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTo6c2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFNlcnZpY2VXb3JrZXJDbwog
dm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQogewogICAgIC8vIFRoZXNlIHNjcmlwdHMgc2hvdWxkIGJl
IGlkZW50aWNhbCB0byB0aGUgb25lcyB3ZSBoYXZlLiBIb3dldmVyLCB0aGVzZSBhcmUgbW1hcCdk
IHNvIHVzaW5nIHRoZW0gaGVscHMgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2FnZS4KKyAgICB1cGRh
dGVTb3VyY2VQcm92aWRlckJ1ZmZlcnMoc2NyaXB0LmdldCgpLCBpbXBvcnRlZFNjcmlwdHMpOwor
CiAgICAgaWYgKHNjcmlwdCkgewogICAgICAgICBBU1NFUlQobV9jb250ZXh0RGF0YS5zY3JpcHQu
Z2V0KCkgPT0gKnNjcmlwdCk7CiAgICAgICAgIG1fY29udGV4dERhdGEuc2NyaXB0ID0gc2NyaXB0
LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggZTNjZTkyY2YzOTdjLi44ODViMTYxMzVmNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlm
eUZpbmlzaGVkKCkKICAgICBhdXRvIHNjcmlwdExvYWRlciA9IFdURk1vdmUobV9zY3JpcHRMb2Fk
ZXIpOwogCiAgICAgaWYgKCFzY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7Ci0gICAgICAgIG1fY2xp
ZW50LmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9hZGVyLT5zY3JpcHQo
KSwgc2NyaXB0TG9hZGVyLT5jZXJ0aWZpY2F0ZUluZm8oKSwgc2NyaXB0TG9hZGVyLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5yZWZlcnJlclBvbGljeSgpKTsKKyAgICAg
ICAgbV9jbGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXIt
PnNjcmlwdEFzU3RyaW5nKCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIHNjcmlw
dExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExvYWRlci0+cmVmZXJyZXJQ
b2xpY3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAKaW5kZXggMjg4MTIyOGE4MjRkLi5mNDFiZjgzZmFjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRo
cmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQs
IGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94
eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3Zp
ZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJM
LCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50
U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndv
cmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9
LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhkYXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dl
clByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCku
c2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRl
ciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAgICA6IFdvcmtlclRo
cmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsg
SW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92
ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNP
bkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1l
Ojpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpP
bWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2Vy
UHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5z
ZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVy
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcihkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9q
b2JEYXRhSWRlbnRpZmllcihkYXRhLmpvYkRhdGFJZGVudGlmaWVyKQogICAgICwgbV9kYXRhKGNy
b3NzVGhyZWFkQ29weShkYXRhKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425063</attachid>
            <date>2021-04-02 16:11:48 -0700</date>
            <delta_ts>2021-04-02 17:16:19 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>224088_SharedBufferScriptSource_wip5.patch</filename>
            <type>text/plain</type>
            <size>38435</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3NTMwMmRiMGQwYzYuLjk1MzkyMDFmZjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Nyw2ICsxMjg3LDcgQEAK
IAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2
MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMx
QzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2
NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI4NTkzQzI2MTY3MjI3MDAxOUVE
QzYgLyogU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovOyB9OwogCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MjgxLDYg
KzgyODIsNyBAQAogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFD
NkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEEyMDdE
NjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk3LDYgKzI3
Mjk5LDcgQEAKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLAogCQkJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKKwkJCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyog
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAw
RjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VC
RTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNTQ3Miw2ICszNTQ3NSw3IEBACiAJCQkJ
NEJBRkQwRTEyMTkyNDJBMDAwQzBBQjY0IC8qIFR5cGVkT01DU1NVbml0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJz
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcxNTJCNkUyMUNEOTk1RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMzN0NBIC8qIFUyZlJlc3BvbnNlQ29u
dmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2OTgyN2QwYWUxNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAg
LTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXI+IGNyZWF0ZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29uc3QgSlNDOjpT
b3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyKHNjcmlwdEJ1ZmZlciwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJj
ZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9zY3JpcHRIYXNoKQor
ICAgICAgICAgICAgc291cmNlKCk7CisgICAgICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CisgICAg
fQorCisgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX3NjcmlwdEJ1ZmZlciB8fCAhbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgICAgIGlmICghbV9jb250
YWluc09ubHlBU0NJSSkgeworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQorICAgICAgICAgICAgICAg
IG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5k
YXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCisgICAgICAgICAgICByZXR1cm4geyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KSB9OworCisgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKKyAgICAgICAgICAg
IG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKKyAgICAg
ICAgICAgIGlmICghbV9zY3JpcHRIYXNoKQorICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9
IG1fY2FjaGVkU2NyaXB0U3RyaW5nLmltcGwoKS0+aGFzaCgpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0U3RyaW5nOworICAgIH0KKworICAgIHZvaWQgY2xlYXJE
ZWNvZGVkRGF0YSgpCisgICAgeworICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IFN0cmlu
ZygpOworICAgIH0KKworICAgIHZvaWQgdHJ5UmVwbGFjZVNjcmlwdEJ1ZmZlcihjb25zdCBTY3Jp
cHRCdWZmZXImIHNjcmlwdEJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIElmIHRoaXMgbmV3IGZp
bGUtbWFwcGVkIHNjcmlwdCBidWZmZXIgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgd2UgaGF2ZSwg
dGhlbiByZXBsYWNlCisgICAgICAgIC8vIG91cnMgdG8gc2F2ZSBkaXJ0eSBtZW1vcnkuCisgICAg
ICAgIGlmIChtX3NjcmlwdEJ1ZmZlciAhPSBzY3JpcHRCdWZmZXIpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgc2NyaXB0QnVmZmVyLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBT
dHJpbmcmJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlND
OjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSkKKyAgICAgICAgOiBKU0M6OlNv
dXJjZVByb3ZpZGVyKHNvdXJjZU9yaWdpbiwgV1RGTW92ZShzb3VyY2VVUkwpLCBzdGFydFBvc2l0
aW9uLCBzb3VyY2VUeXBlKQorICAgICAgICAsIG1fc2NyaXB0QnVmZmVyKHNjcmlwdEJ1ZmZlcikK
KyAgICB7CisgICAgfQorCisgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11
dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OworICAgIG11dGFibGUgU3RyaW5nIG1f
Y2FjaGVkU2NyaXB0U3RyaW5nOworICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9jb250YWlu
c09ubHlBU0NJSTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCAxMGZhN2U4YjQ0OWMuLmQx
YTBlMThhYmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTAs
NiArNTEsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBTY3JpcHRTb3VyY2VDb2Rl
KGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlLCBVUkwmJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJv
dmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZTo6UHJvZ3JhbSkKKyAgICAgICAgOiBtX3Byb3ZpZGVyKFNjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyOjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybCB9LCB1cmwuc3RyaW5n
KCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQorICAgICAgICAsIG1fY29kZShtX3Byb3Zp
ZGVyLmNvcHlSZWYoKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQ
b3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKQorICAgIHsKKyAgICB9CisKICAgICBTY3Jp
cHRTb3VyY2VDb2RlKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4mJiBzY3Jp
cHRGZXRjaGVyKQogICAgICAgICA6IG1fcHJvdmlkZXIoQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShjYWNoZWRTY3JpcHQsIHNvdXJjZVR5cGUsIFdURk1vdmUoc2NyaXB0RmV0Y2hl
cikpKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYoKSkKQEAgLTYzLDEwICs3
MCwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIFNjcmlwdFNvdXJjZUNvZGUoY29u
c3QgU2NyaXB0QnVmZmVyJiBzb3VyY2UsIFVSTCYmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBS
ZWY8SlNDOjpTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCisgICAgICAgIDogbV9wcm92
aWRlcihTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlNDOjpTb3Vy
Y2VPcmlnaW4geyB1cmwsIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgfSwgdXJsLnN0cmluZygpLCBz
dGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlci5j
b3B5UmVmKCksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRp
b24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKKyAgICB7CisgICAgfQorCiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlLmxlbmd0aCgpID09IDA7IH0KIAogICAgIGNvbnN0
IEpTQzo6U291cmNlQ29kZSYganNTb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9
CiAKKyAgICBKU0M6OlNvdXJjZVByb3ZpZGVyJiBwcm92aWRlcigpIHsgcmV0dXJuIG1fcHJvdmlk
ZXIuZ2V0KCk7IH0KICAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlkZXItPnNvdXJjZSgpOyB9CiAKICAgICBpbnQgc3RhcnRMaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAppbmRleCAwMzc2NTc4MTY4NmIuLmI3
ZjkxN2Q2ZDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyVGhyZWFkLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LURlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtl
clBhcmFtZXRlcnMmIHBhcmFtcywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mp
CitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBXb3Jr
ZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3
b3JrZXJEZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHks
IFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtcywgc291cmNlQ29kZSwgd29ya2VyTG9h
ZGVyUHJveHksIHdvcmtlckRlYnVnZ2VyUHJveHksIHdvcmtlck9iamVjdFByb3h5LCBzdGFydE1v
ZGUsIHRvcE9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgcnVudGltZUZs
YWdzKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eSh3b3JrZXJPYmplY3RQcm94eSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCmluZGV4IDA1
OWQ4MTcxODYxNi4uNzNkNzVjZmVjZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworY2xh
c3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiAKIGNsYXNzIERlZGlj
YXRlZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgewpAQCAtNTQsNyArNTUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dl
clByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CisgICAgRGVkaWNhdGVkV29y
a2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNv
dXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtl
ck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdp
biYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3Zp
ZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29y
a2VyT2JqZWN0UHJveHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CmluZGV4IDMzMWM2YWM4M2ZiOS4uYWY3MGJhYjVlYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwCkBAIC02Niw0ICs2Niw5IEBAIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKICAgICByZXR1cm4gKmEu
YnVmZmVyKCkgPT0gKmIuYnVmZmVyKCk7CiB9CiAKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBTY3Jp
cHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKK3sKKyAgICByZXR1cm4gIShhID09
IGIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaAppbmRleCBjYWE1MmI0ZjgzN2IuLjA3ZTM4MjY3ZGUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC01OCw1ICs1OCw2IEBAIHByaXZhdGU6CiB9Owog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVy
Jik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVm
ZmVyJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAppbmRleCAyYTQxYTNlZTRiMDUuLmY5N2U5NTE4Yzg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hlZCgp
CiAgICAgICAgICAgICByZXNwb25zZVVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIobV9zY3JpcHRM
b2FkZXItPnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICB9CiAgICAgbV9jb250ZXh0
UHJveHkuc3RhcnRXb3JrZXJHbG9iYWxTY29wZShyZXNwb25zZVVSTCwgbV9uYW1lLCBjb250ZXh0
LT51c2VyQWdlbnQocmVzcG9uc2VVUkwpLCBpc09ubGluZSwgbV9zY3JpcHRMb2FkZXItPnNjcmlw
dCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIG1fc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBtX3dvcmtlckNyZWF0aW9uVGltZSwgcmVm
ZXJyZXJQb2xpY3ksIG1fdHlwZSwgbV9jcmVkZW50aWFscywgbV9ydW50aW1lRmxhZ3MpOwotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKmNvbnRleHQsIG1fc2Ny
aXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqY29udGV4dCwgbV9zY3Jp
cHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5n
KCkpOwogfQogCiB2b2lkIFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg3ZmM1OGMx
YjQxMy4uYzcyM2NmNGM1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMzI4LDE0ICszMjgsMjEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV29y
a2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMp
CiAgICAgICAgIGlmIChhdXRvIGV4Y2VwdGlvbiA9IHNjcmlwdExvYWRlci0+bG9hZFN5bmNocm9u
b3VzbHkodGhpcywgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgY2FjaGVQb2xpY3ks
IGNzcEVuZm9yY2VtZW50LCByZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKmV4Y2VwdGlvbik7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVy
KCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotCi0gICAgICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiBleGNlcHRpb247Ci0gICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3Vy
Y2VDb2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNl
VVJMKCkpKSwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAg
ICAgc2NyaXB0KCktPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgq
dGhpcywgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCku
dG9TdHJpbmcoKSk7CisKKyAgICAgICAgV2Vha1B0cjxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
cj4gc291cmNlUHJvdmlkZXI7CisgICAgICAgIHsKKyAgICAgICAgICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgVVJMKHNjcmlwdExvYWRlci0+cmVzcG9uc2VV
UkwoKSkpOworICAgICAgICAgICAgc291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNf
Y2FzdDxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkp
OworICAgICAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbik7
CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgc2NyaXB0KCkt
PnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNvdXJjZVByb3ZpZGVyKQorICAg
ICAgICAgICAgYWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQcm92aWRlcih1cmwsICpzb3VyY2VQcm92
aWRlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTUyNyw2ICs1MzQsMTMgQEAgV29y
a2VyVGhyZWFkJiBXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkgY29uc3QKIH0KIAogdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJvbm91cykK
K3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAgIGRlbGV0ZUpTQ29kZUFuZEdD
KHN5bmNocm9ub3VzKTsKKyAgICBjbGVhckRlY29kZWRTY3JpcHREYXRhKCk7Cit9CisKK3ZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OmRlbGV0ZUpTQ29kZUFuZEdDKFN5bmNocm9ub3VzIHN5bmNocm9u
b3VzKQogewogICAgIEFTU0VSVChpc0NvbnRleHRUaHJlYWQoKSk7CiAKQEAgLTU2Myw0ICs1Nzcs
NDYgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhTeW5j
aHJvbm91cyBzeW5jaHJvbm91cykKICAgICB9CiB9CiAKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcihTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciYg
cHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFtX21haW5TY3JpcHRTb3VyY2VQcm92aWRlcik7Cisg
ICAgbV9tYWluU2NyaXB0U291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihwcm92aWRlcik7Cit9
CisKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZEltcG9ydGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIoY29uc3QgVVJMJiB1cmwsIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJiBwcm92aWRlcikK
K3sKKyAgICBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVByb3ZpZGVycy5lbnN1cmUodXJsLCBbXSB7
CisgICAgICAgIHJldHVybiBXZWFrSGFzaFNldDxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4g
eyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQocHJvdmlkZXIpOworfQorCit2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjpjbGVhckRlY29kZWRTY3JpcHREYXRhKCkKK3sKKyAgICBBU1NFUlQo
aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVy
KQorICAgICAgICBtX21haW5TY3JpcHRTb3VyY2VQcm92aWRlci0+Y2xlYXJEZWNvZGVkRGF0YSgp
OworCisgICAgZm9yIChhdXRvJiBzb3VyY2VQcm92aWRlcnMgOiBtX2ltcG9ydGVkU2NyaXB0c1Nv
dXJjZVByb3ZpZGVycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZVByb3Zp
ZGVyIDogc291cmNlUHJvdmlkZXJzKQorICAgICAgICAgICAgc291cmNlUHJvdmlkZXIuY2xlYXJE
ZWNvZGVkRGF0YSgpOworICAgIH0KK30KKwordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6dXBkYXRl
U291cmNlUHJvdmlkZXJCdWZmZXJzKGNvbnN0IFNjcmlwdEJ1ZmZlciYgbWFpblNjcmlwdCwgY29u
c3QgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBB
U1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1haW5TY3JpcHQgJiYgbV9tYWlu
U2NyaXB0U291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVy
LT50cnlSZXBsYWNlU2NyaXB0QnVmZmVyKG1haW5TY3JpcHQpOworCisgICAgZm9yIChhdXRvJiBw
YWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2ltcG9ydGVkU2Ny
aXB0c1NvdXJjZVByb3ZpZGVycy5maW5kKHBhaXIua2V5KTsKKyAgICAgICAgaWYgKGl0ID09IG1f
aW1wb3J0ZWRTY3JpcHRzU291cmNlUHJvdmlkZXJzLmVuZCgpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGZvciAoYXV0byYgc291cmNlUHJvdmlkZXIgOiBpdC0+dmFsdWUpCisgICAg
ICAgICAgICBzb3VyY2VQcm92aWRlci50cnlSZXBsYWNlU2NyaXB0QnVmZmVyKHBhaXIudmFsdWUp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDM3YmRmMjkxNDdlMy4uZWYwM2NjMTJjYTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yOSwx
NyArMjksMjEgQEAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKKyNpbmNsdWRl
ICJTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsMTAgKzEz
NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTWVtb3J5KFN5bmNocm9ub3VzKTsKICAg
ICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5SW5Xb3JrZXJzKFN5bmNocm9ub3VzKTsKIAorICAg
IHZvaWQgc2V0TWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyKFNjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyJik7CisgICAgdm9pZCBhZGRJbXBvcnRlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVS
TCYsIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJik7CisKIHByb3RlY3RlZDoKICAgICBXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3Zp
ZGVyKik7CiAKICAgICB2b2lkIGFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYpOworICAgIHZv
aWQgdXBkYXRlU291cmNlUHJvdmlkZXJCdWZmZXJzKGNvbnN0IFNjcmlwdEJ1ZmZlciYgbWFpblNj
cmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cyk7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBm
aW5hbDsKQEAgLTE0NSw2ICsxNTMsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1dvcmtlckds
b2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdm9pZCBkZWxl
dGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyk7CisgICAgdm9pZCBjbGVhckRlY29kZWRTY3JpcHRE
YXRhKCk7CisKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4ID0g
Rm9yY2VVVEY4OjpObykgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBV
UkwmKSBjb25zdCBmaW5hbDsKIApAQCAtMTgxLDYgKzE5Miw5IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFBlcmZvcm1hbmNlPiBtX3BlcmZvcm1hbmNlOwogICAgIG11dGFibGUgUmVmUHRyPENyeXB0
bz4gbV9jcnlwdG87CiAKKyAgICBXZWFrUHRyPFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBt
X21haW5TY3JpcHRTb3VyY2VQcm92aWRlcjsKKyAgICBIYXNoTWFwPFVSTCwgV2Vha0hhc2hTZXQ8
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXI+PiBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVByb3Zp
ZGVyczsKKwogICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgKaW5kZXggMTJkNWUxYzBmODE5Li43NjlkOTVkOWFiYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHkgewogcHVibGljOgogICAgIHN0
YXRpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5JiBjcmVhdGUoV29ya2VyJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxp
bmUsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ks
IFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtl
ckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CmluZGV4IDcyMDY0MzgwODQ3OS4uYjFlNTBjNThmNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKICAgICAgICAgfHwgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCku
dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKSk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1l
IHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lRmxhZ3MpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZm
ZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVu
dGltZUZsYWdzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdo
ZW4gd2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuaAppbmRleCBiZTlmNDYwZjM4ZTIuLmI2YzQzODBhNGE0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9i
YWxTY29wZVByb3h5LgogICAgIC8vIChPbmx5IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIHdv
cmtlciBvYmplY3QgdGhyZWFkLikKLSAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1
bnRpbWVGbGFncykgZmluYWw7CisgICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4s
IFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlND
OjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggZTFjODEyMzVmYmE4Li43MGIxMjk3MGEyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTQ0LDcgKzQ0LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV29ya2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKSA9
IGRlZmF1bHQ7CitXb3JrZXJTY3JpcHRMb2FkZXI6OldvcmtlclNjcmlwdExvYWRlcigpCisgICAg
OiBtX3NjcmlwdChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQoreworfQogCiBXb3JrZXJTY3JpcHRM
b2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKQEAgLTYxLDcgKzY0LDcg
QEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJj
ZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNj
cmlwdC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIG1fc2NyaXB0ID0gc2NyaXB0UmVzb3VyY2Ut
PnNjcmlwdDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVz
cG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJj
ZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAyLDcg
KzEwNSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5
cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAg
ICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSku
c2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0IHsgU2NyaXB0QnVmZmVyIHsgc2NyaXB0KCkgfSwgbV9yZXNwb25zZVVSTCwgbV9yZXNw
b25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwg
bV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CkBAIC0yMTEsOCArMjE0LDEwIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgIAogICAgIGlmIChsZW4g
PT0gLTEpCiAgICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKLSAgICAKLSAgICBtX3NjcmlwdC5h
cHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CisKKyAgICBTdHJpbmcgZGVjb2Rl
ZFNjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbik7CisgICAgYXV0byBkZWNvZGVk
U2NyaXB0VXRmOCA9IGRlY29kZWRTY3JpcHQudXRmOCgpOworICAgIG1fc2NyaXB0LmJ1ZmZlcigp
LT5hcHBlbmQoZGVjb2RlZFNjcmlwdFV0ZjguZGF0YSgpLCBkZWNvZGVkU2NyaXB0VXRmOC5sZW5n
dGgoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIyMiw4ICsyMjcsMTEgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+Zmx1c2goKSk7CisgICAgaWYgKG1fZGVjb2Rlcikgewor
ICAgICAgICBTdHJpbmcgZGVjb2RlZFNjcmlwdCA9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKyAgICAg
ICAgYXV0byBkZWNvZGVkU2NyaXB0VXRmOCA9IGRlY29kZWRTY3JpcHQudXRmOCgpOworICAgICAg
ICBtX3NjcmlwdC5idWZmZXIoKS0+YXBwZW5kKGRlY29kZWRTY3JpcHRVdGY4LmRhdGEoKSwgZGVj
b2RlZFNjcmlwdFV0ZjgubGVuZ3RoKCkpOworICAgIH0KIAogICAgIG1faWRlbnRpZmllciA9IGlk
ZW50aWZpZXI7CiAgICAgbm90aWZ5RmluaXNoZWQoKTsKQEAgLTI0MywxMSArMjUxLDYgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9yKCkKICAgICBub3RpZnlGaW5pc2hlZCgp
OwogfQogCi1TdHJpbmcgV29ya2VyU2NyaXB0TG9hZGVyOjpzY3JpcHQoKQotewotICAgIHJldHVy
biBtX3NjcmlwdC50b1N0cmluZygpOwotfQotCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoKQogewogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBjZmEzMWEzNTMy
NTkuLmJkZDYwMTdkZjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlFcnJvcigpOwog
Ci0gICAgU3RyaW5nIHNjcmlwdCgpOworICAgIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KCkg
eyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkBAIC05OCw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fdGhyZWFkYWJsZUxvYWRlcjsKICAgICBTdHJpbmcg
bV9yZXNwb25zZUVuY29kaW5nOwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7Ci0gICAgU3RyaW5nQnVpbGRlciBtX3NjcmlwdDsKKyAgICBTY3JpcHRCdWZmZXIgbV9z
Y3JpcHQ7CiAgICAgVVJMIG1fdXJsOwogICAgIFVSTCBtX3Jlc3BvbnNlVVJMOwogICAgIENlcnRp
ZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAppbmRleCA3N2ZjZDJhNzQ0NDguLjQ0MmQyZGQyZDhhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNjYsMTYgKzY2LDE2IEBAIFdvcmtlclBh
cmFtZXRlcnMgV29ya2VyUGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHN0cnVjdCBX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2Vy
VGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNl
Q29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luKTsKIAogICAgIFdvcmtlclBhcmFtZXRlcnMgcGFyYW1zOwogICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luOwotICAgIFN0cmluZyBzb3VyY2VDb2RlOworICAgIFNjcmlwdEJ1ZmZlciBz
b3VyY2VDb2RlOwogICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGU7CiAgICAgUmVm
PFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW47CiB9OwogCi1Xb3JrZXJUaHJlYWRTdGFydHVwRGF0
YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgb3RoZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbikKK1dvcmtlclRocmVhZFN0YXJ0dXBE
YXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBvdGhl
ciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKQogICAgIDogcGFyYW1z
KG90aGVyLmlzb2xhdGVkQ29weSgpKQogICAgICwgb3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3RoZXIuc2NyaXB0VVJMKS0+aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBzb3VyY2VDb2RlKHNv
dXJjZUNvZGUuaXNvbGF0ZWRDb3B5KCkpCkBAIC04NCw3ICs4NCw3IEBAIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBvdGhlciwKIHsKIH0KIAotV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRl
clByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVi
dWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVG
bGFncykKK1dvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMm
IHBhcmFtcywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2Vy
UHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mp
CiAgICAgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQocGFyYW1zLmlkZW50aWZpZXIuaXNvbGF0ZWRD
b3B5KCkpCiAgICAgLCBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAg
ICwgbV93b3JrZXJEZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCkBAIC0xMjUsMTIg
KzEyNSwxNiBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5n
IG9ubHkgdGhlIGluaXRpYWwgc2NyaXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVs
ZSwgd2Ugc2hvdWxkIGZldGNoIHRoZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUg
cmVzdCBvZiB0aGlzLgogICAgIC8vIFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFy
ZSBleGVjdXRpbmcgaW5saW5lIG1vZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCisgICAg
V2Vha1B0cjxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7CiAgICAg
aWYgKG1fc3RhcnR1cERhdGEtPnBhcmFtcy53b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OkNsYXNz
aWMpIHsKLSAgICAgICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNv
dXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBh
cmFtcy5zY3JpcHRVUkwpKSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOworICAgICAgICBTY3JpcHRTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJMKG1fc3RhcnR1
cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpKTsKKyAgICAgICAgc291cmNlUHJvdmlkZXIgPSBtYWtl
V2Vha1B0cihzdGF0aWNfY2FzdDxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNv
ZGUucHJvdmlkZXIoKSkpOworICAgICAgICBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+ZXZhbHVh
dGUoc291cmNlQ29kZSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgICAgICBmaW5pc2hlZEV2YWx1
YXRpbmdTY3JpcHQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHNjcmlwdEZldGNoZXIg
PSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVhdGUoZ2xvYmFsU2NvcGUoKS0+Y3JlZGVudGlhbHMo
KSwgZ2xvYmFsU2NvcGUoKS0+ZGVzdGluYXRpb24oKSwgZ2xvYmFsU2NvcGUoKS0+cmVmZXJyZXJQ
b2xpY3koKSk7CiAgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3N0YXJ0dXBE
YXRhLT5zb3VyY2VDb2RlLCBVUkwobV9zdGFydHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCksIHsg
fSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0RmV0Y2hlci5j
b3B5UmVmKCkpOworICAgICAgICBzb3VyY2VQcm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19j
YXN0PFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7
CiAgICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsU2NvcGUoKS0+
c2NyaXB0KCktPmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KHNjcmlwdEZldGNoZXIuZ2V0KCksIHNv
dXJjZUNvZGUpOwogICAgICAgICBpZiAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQp
IHsKICAgICAgICAgICAgIGlmIChPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9y
ID0gc2NyaXB0RmV0Y2hlci0+ZXJyb3IoKSkgewpAQCAtMTQ1LDYgKzE0OSw4IEBAIHZvaWQgV29y
a2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVz
c2FnZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoc291cmNlUHJv
dmlkZXIpCisgICAgICAgIGdsb2JhbFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRl
cigqc291cmNlUHJvdmlkZXIpOwogCiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1cCBkYXRhIHRvIGNh
dXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4gb24gdGhlIHdvcmtlcidzIHRo
cmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBvYmplY3RzIGFyZSBo
YXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0aGF0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA5MzVlOTcyZDUzOGYuLjI2ZDQ0ZDRmMTZh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zNyw2ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKK2NsYXNz
IFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlk
ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKQEAgLTkyLDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVu
dGltZUZsYWdzOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJUaHJlYWQoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7
CisgICAgV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRC
dWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94
eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgLy8gRmFjdG9yeSBt
ZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IHdvcmtlciBjb250ZXh0IGZvciB0aGUgdGhyZWFkLgog
ICAgIHZpcnR1YWwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4
IDE4YmQ0YTllNWNiMy4uMzMwMTRhM2U3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
MTU4LDYgKzE1OCw4IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRS
ZXNvdXJjZShjb25zdCBVUkwmIHVybCwgU2VydmljZVdvcmtlckNvCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgc2NyaXB0
LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykKIHsKICAgICAv
LyBUaGVzZSBzY3JpcHRzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGhlIG9uZXMgd2UgaGF2ZS4g
SG93ZXZlciwgdGhlc2UgYXJlIG1tYXAnZCBzbyB1c2luZyB0aGVtIGhlbHBzIHJlZHVjZSBkaXJ0
eSBtZW1vcnkgdXNhZ2UuCisgICAgdXBkYXRlU291cmNlUHJvdmlkZXJCdWZmZXJzKHNjcmlwdCwg
aW1wb3J0ZWRTY3JpcHRzKTsKKwogICAgIGlmIChzY3JpcHQpIHsKICAgICAgICAgQVNTRVJUKG1f
Y29udGV4dERhdGEuc2NyaXB0ID09IHNjcmlwdCk7CiAgICAgICAgIG1fY29udGV4dERhdGEuc2Ny
aXB0ID0gV1RGTW92ZShzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGUzY2U5MmNmMzk3Yy4uMWQyMzljMzhk
NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpu
b3RpZnlGaW5pc2hlZCgpCiAgICAgYXV0byBzY3JpcHRMb2FkZXIgPSBXVEZNb3ZlKG1fc2NyaXB0
TG9hZGVyKTsKIAogICAgIGlmICghc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkgewotICAgICAgICBt
X2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoKnRoaXMsIHNjcmlwdExvYWRlci0+c2Ny
aXB0KCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIHNjcmlwdExvYWRlci0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExvYWRlci0+cmVmZXJyZXJQb2xpY3koKSk7Cisg
ICAgICAgIG1fY2xpZW50LmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKS50b1N0cmluZygpLCBzY3JpcHRMb2FkZXItPmNlcnRpZmljYXRlSW5mbygp
LCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJl
ZmVycmVyUG9saWN5KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IGQwY2UwYTYxZGQyZC4uZjQxYmY4M2ZhYzM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6
IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VX
b3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3RyaW5nJiYgdXNl
ckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9h
ZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNj
cmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRl
bnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEu
Y29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwg
ZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NW
YWx1ZXMgfSwgZGF0YS5zY3JpcHQudG9TdHJpbmcoKSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJv
eHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1
cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBK
U0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQorICAgIDogV29ya2VyVGhyZWFk
KHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVz
ZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGlu
ZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5v
dygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQs
IHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94
eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3Vy
aXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpT
Qzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2pvYkRh
dGFJZGVudGlmaWVyKGRhdGEuam9iRGF0YUlkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoY3Jvc3NU
aHJlYWRDb3B5KGRhdGEpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425071</attachid>
            <date>2021-04-02 17:16:21 -0700</date>
            <delta_ts>2021-04-05 18:05:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224088-20210402171620.patch</filename>
            <type>text/plain</type>
            <size>59399</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YwMTc0YTA0NzlhODlm
YmFlODRkMjYzMDU2YWZiNzllZWFhYjkyMC4uODgyOWM5ZjA5MjMwYzg3NGZkNzk1Y2YxMjliYThh
NmE0N2Y1OTFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAyMS0wNC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBzZXJ2aWNl
IHdvcmtlcnMgdXNlIGEgU2NyaXB0U291cmNlQ29kZSBiYWNrZWQgYnkgZmlsZS1tYXBwZWQgbWVt
b3J5IHdoZW4gcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRvIHJ1biBhIHdvcmtlciwgd2Ugd2VyZSBjb25zdHJ1Y3RpbmcgYSBTY3JpcHRT
b3VyY2VDb2RlIGZyb20gdGhlIHNvdXJjZSBTdHJpbmcgYW5kIGNhbGxpbmcKKyAgICAgICAgSlND
OjpldmFsdWF0ZS4gU2NyaXB0U291cmNlQ29kZSB3b3VsZCBjb25zdHJ1Y3QgYSBKU0M6OlN0cmlu
Z1NvdXJjZVByb3ZpZGVyLCB3aGljaCB3b3VsZAorICAgICAgICBrZWVwIHRoZSBzb3VyY2UgU3Ry
aW5nIGFsaXZlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb3ZpZGVyLiBUaGlzIGlzIHByb2Js
ZW1hdGljIHNpbmNlCisgICAgICAgIHRob3NlIHdvcmtlciBzY3JpcHRzIG1heSBiZSBiaWcgYW5k
IGtlZXBpbmcgaGVhcC1hbGxvY2F0ZWQgdmVyc2lvbiBvZiB0aGVtIGluIG1lbW9yeSBpcworICAg
ICAgICBleHBlbnNpdmUuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBhIG5ldyBKU0M6OlNvdXJjZVByb3ZpZGVyIHN1YmNsYXNzIG5hbWVkCisg
ICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLCB3aGljaCB1c2VzIGEgU2NyaXB0QnVm
ZmVyIGludGVybmFsbHkuIFNjcmlwdEJ1ZmZlciBoYXMgdGhlCisgICAgICAgIGJlbmVmaXQgb2Yg
YmVpbmcgYWJsZSB0byBob2xkIGZpbGUtbWFwcGVkIGRhdGEuIFdlIG9ubHkgY29udmVydCB0aGUg
U2NyaXB0QnVmZmVyIHRvCisgICAgICAgIGEgU3RyaW5nIHdoZW5ldmVyIG5lY2Vzc2FyeSAoV2hl
biB0aGUgc2NyaXB0IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGFuZCBKU0MKKyAgICAg
ICAgcmVxdWVzdHMgYSBTdHJpbmdWaWV3IHRvIHRoZSBzY3JpcHQpLiBJZiB3ZSBkbyBlbmQgdXAg
Y29udmVydGluZyB0aGUgU2NyaXB0QnVmZmVyIHRvCisgICAgICAgIGEgU3RyaW5nLCB0aGlzIFN0
cmluZyB3aWxsIGdldCBjbGVhcmVkIG9uIG1lbW9yeSBwcmVzc3VyZS4gVGhpcyBpcyBzaW1pbGFy
IHRvIHdoYXQKKyAgICAgICAgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIgLyBDYWNoZWRTY3Jp
cHQgZG8gb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIEluIHRoZSB3YXJtIGNhc2UsIHdo
ZXJlIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaXMgY29taW5nIGZyb20gZGlzaywgd2UgY3Jl
YXRlCisgICAgICAgIHRoZSBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciByaWdodCBhd2F5IGZy
b20gYSBmaWxlLW1hcHBlZCBTY3JpcHRCdWZmZXIsIHRodXMKKyAgICAgICAgZ3JlYXRseSByZWR1
Y2luZyBkaXJ0eSBtZW1vcnkgdXNlLiBJbiB0aGUgY29sZCBjYXNlLCB3ZSBpbml0aWFsbHkgY29u
c3RydWN0IHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciB1c2luZyBhIFNj
cmlwdEJ1ZmZlciB0aGF0IGlzIG5vdCBmaWxlLW1hcHBlZC4gSG93ZXZlciwKKyAgICAgICAgb25j
ZSB0aGUgc2NyaXB0IGlzIHNhdmVkIHRvIGRpc2sgKHZpYSBTV1NjcmlwdFN0b3JhZ2UpLCB3ZSBy
ZXBsYWNlIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcidzIFNjcmlwdEJ1
ZmZlciB3aXRoIHRoZSBuZXcgZmlsZS1tYXBwZWQgdmVyc2lvbiBpbgorICAgICAgICBvcmRlciB0
byByZWR1Y2UgZGlydHkgbWVtb3J5IHVzZSBpbiB0aGlzIGNhc2UgdG9vLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaCB0byB0aGUgcHJvamVjdC4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAtIEFkZCBu
ZXcgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIsIHdoaWNoIGlzIGEgSlNDOjpTb3VyY2VQcm92
aWRlciBzdWJjbGFzcyB0aGF0CisgICAgICAgIHVzZXMgYSBTY3JpcHRCdWZmZXIgYXMgYmFja2lu
ZyBpbnN0ZWFkIG9mIGEgU3RyaW5nLiBUaGlzIGFsbG93cyB1cyB0byB1c2UgZmlsZS1tYXBwZWQK
KyAgICAgICAgbWVtb3J5IHdoZW5ldmVyIHBvc3NpYmxlLCB0aHVzIHJlZHVjaW5nIGRpcnR5IG1l
bW9yeSB1c2UuIFRoaXMgcHJvdmlkZXIgcHJvdmlkZXMKKyAgICAgICAgc2ltaWxhciBmdW5jdGlv
bmFsaXR5IHRvIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyIC8gQ2FjaGVkU2NyaXB0IGJ1dCB3
b3JrcyB3aXRoCisgICAgICAgIGEgU2NyaXB0QnVmZmVyIGFuZCBjYW4gYmUgdXNlZCBvZmYgdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICAtIFdlIG9ubHkgdHJhbnNmb3JtIHRoZSBTaGFyZWRCdWZm
ZXIgaW50byBhIFN0cmluZyB3aGVuIHN0cmljdGx5IG5lY2Vzc2FyeSwgbWVhbmluZworICAgICAg
ICAgIHRoYXQgdGhlIFNjcmlwdEJ1ZmZlciBjb250YWlucyBub24tYXNjaWkgY2hhcmFjdGVycyBh
bmQgSlNDIGlzIGFza2luZyBmb3IgYSBTdHJpbmdWaWV3CisgICAgICAgICAgdG8gdGhlIHNjcmlw
dC4KKyAgICAgICAgLSBUaGUgY2xhc3Mgc3VwcG9ydHMgY2xlYXJpbmcgdGhlIFN0cmluZyBjb3B5
IG9mIHRoZSBzY3JpcHQgKGRvbmUgb24gbWVtb3J5IHByZXNzdXJlKQorICAgICAgICAgIGFuZCBy
ZXBsYWNpbmcgdGhlIFNjcmlwdEJ1ZmZlciAod2l0aCBhIG5ldyBmaWxlLW1hcHBlZCB2ZXJzaW9u
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlwdFNvdXJjZUNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0U291cmNlQ29kZTo6bV9jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFNvdXJjZUNvZGU6OnByb3ZpZGVyKToKKyAgICAgICAgQWRkIG5ldyBjb25zdHJ1Y3RvcnMg
dGFraW5nIGEgU2NyaXB0QnVmZmVyIGluc3RlYWQgb2YgYSBTdHJpbmcgZm9yIHRoZSBzb3VyY2Ug
Y29kZS4KKyAgICAgICAgV2UgdGhlbiB1c2UgdGhlIG5ldyBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlciBpbnRlcm5hbGx5IGluc3RlYWQgb2YgdGhlCisgICAgICAgIFN0cmluZ1NvdXJjZVByb3Zp
ZGVyLgorCisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmVtcHR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICBB
ZGQgc29tZSBmdW5jdGlvbmFsaXR5IHRvIFNDcmlwdEJ1ZmZlciB0byBtYWtlIGl0IG1vcmUgY29u
dmVuaWVudCB0byB1c2UuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBTY3Jp
cHRCdWZmZXIgdG8gYSBTdHJpbmcgc2luY2UgdGhpcyBpcyB3aGF0IFdlYkluc3BlY3RvciBleHBl
Y3RzLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgIC0g
V2hlbiBpbXBvcnRpbmcgYSBuZXcgc2NyaXB0LCB3ZSBub3cgY29uc3RydWN0IGEgU2NyaXB0U291
cmNlQ29kZSBmcm9tIGEKKyAgICAgICAgU2NyaXB0QnVmZmVyIGluc3RlYWQgb2YgYSBTdHJpbmcu
CisgICAgICAgIC0gV2UgYWxzbyBzdG9yZSBhIHdlYWsgcG9pbnRlciB0byB0aGUgU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIgdXNlZCBieSB0aGUgU2NyaXB0U291cmNlQ29kZQorICAgICAgICAg
IG9uIHRoZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBhc2sgdGhv
c2UgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgb2JqZWN0cworICAgICAgICAgIHRvIGNsZWFy
IHRoZWlyIGNhY2hlZCBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNjcmlwdCBzb3VyY2Ug
b24gbWVtb3J5IHByZXNzdXJlLiBJdCBpcworICAgICAgICAgIGFsc28gbmVlZGVkIHNvIHdlIGNh
biByZXBsYWNlIHRoZSBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcidzIFNjcmlwdEJ1ZmZlciB3
aXRoIGEgZmlsZS1tYXBwZWQKKyAgICAgICAgICB2ZXJzaW9uIHdoZW4gb25lIGJlY29tZXMgYXZh
aWxhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1l
bW9yeSk6CisgICAgICAgIEluIGFkZGl0aW9uIHRvIGRlbGV0aW5nIEpTIGNvZGUgYW5kIGRvaW5n
IGdhcmJhZ2UgY29sbGVjdGlvbiwgd2Ugbm93IGFsc28gYXNrIHRoZQorICAgICAgICBTY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlciBvYmplY3RzIHRvIGNsZWFyIHRoZWlyIGNhY2hlZCBTdHJpbmcg
cmVwcmVzZW50YXRpb24gb2YgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UuCisKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyk6CisgICAgICAg
IE1vdmVkIHRoZSBsb2dpYyB0byBkZWxldGUgSlMgY29kZSBhbmQgZG9pbmcgR0MgZnJvbSByZWxl
YXNlTWVtb3J5KCkgdG8gYSBuZXcgZnVuY3Rpb24sIG5vdworICAgICAgICB0aGF0IHJlbGVhc2VN
ZW1vcnkoKSBuZWVkcyB0byBkbyBtb3JlIHRoaW5ncy4KKworICAgICAgICAoV2ViQ29yZTo6V29y
a2VyR2xvYmFsU2NvcGU6OnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQcm92aWRl
cik6CisgICAgICAgIEZ1bmN0aW9ucyB1c2VkIHRvIHN0b3JlIHRoZSBDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlciBvYmplY3RzIGZvciB0aGUgc2NyaXB0cyB1c2VkIGJ5IHRoZQorICAgICAgICB3
b3JrZXIgb24gdGhlIFdvcmtlckdsb2JhbFNjb3BlLiBXZSBrZWVwIHdlYWsgcG9pbnRlcnMgdG8g
dGhvc2UuCisKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpjbGVhckRlY29k
ZWRTY3JpcHREYXRhKToKKyAgICAgICAgRnVuY3Rpb24gdXNlZCB0byBhc2sgdGhlIFNjcmlwdEJ1
ZmZlclNvdXJjZVByb3ZpZGVyIG9iamVjdHMgdG8gY2xlYXIgdGhlaXIgY2FjaGVkIFN0cmluZwor
ICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2NyaXB0IHNvdXJjZSBvbiBtZW1vcnkgcHJl
c3N1cmUuCisKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp1cGRhdGVTb3Vy
Y2VQcm92aWRlckJ1ZmZlcnMpOgorICAgICAgICBGdW5jdGlvbiB1c2VkIHRvIGFzayB0aGUgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgb2JqZWN0cyB0byByZXBsYWNlIHRoZWlyIFNjcmlwdEJ1
ZmZlcnMKKyAgICAgICAgd2l0aCBmaWxlLWJhY2tlZCB2ZXJzaW9ucy4KKworICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6Cisg
ICAgICAgIFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcuCisKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHRMb2FkZXI6OldvcmtlclNjcmlwdExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6
OnNjcmlwdCk6CisgICAgICAgIFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcgdG8g
aG9sZCB0aGUgc2NyaXB0IHNvdXJjZS4gV2UgZXZlbnR1YWxseSBuZWVkIGEgU2NyaXB0QnVmZmVy
CisgICAgICAgIHNpbmNlIHRoaXMgaXMgd2hhdCB0aGUgV29ya2VyIG5vdyBuZWVkcyB0byBsYXVu
Y2guIEFsc28sIGluIHRoZSBzZXJ2aWNlIHdvcmtlciBjYXNlLCB3ZSBtYXkKKyAgICAgICAgZ2V0
IGEgU2NyaXB0QnVmZmVyIHJpZ2h0IGF3YXkgZnJvbSB0aGUgc2NyaXB0UmVzb3VyY2VNYXAsIHdp
dGhvdXQgZ29pbmcgdG8gdGhlIG5ldHdvcmsgYXQgYWxsLgorCisgICAgICAgICogd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU3RhcnR1cERh
dGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgVXNlIFNjcmlwdEJ1ZmZlciBpbnN0ZWFkIG9m
IFN0cmluZy4KKworICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlw
dElmTmVjZXNzYXJ5KToKKyAgICAgICAgLSBXaGVuIGV2YWx1YXRpbmcgdGhlIG1haW4gd29ya2Vy
IHNjcmlwdCwgd2Ugbm93IGNvbnN0cnVjdCBhIFNjcmlwdFNvdXJjZUNvZGUgZnJvbSBhCisgICAg
ICAgIFNjcmlwdEJ1ZmZlciBpbnN0ZWFkIG9mIGEgU3RyaW5nLgorICAgICAgICAtIFdlIGFsc28g
c3RvcmUgYSB3ZWFrIHBvaW50ZXIgdG8gdGhlIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIHVz
ZWQgYnkgdGhlIFNjcmlwdFNvdXJjZUNvZGUKKyAgICAgICAgICBvbiB0aGUgV29ya2VyR2xvYmFs
U2NvcGUuIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gYXNrIHRob3NlIFNjcmlwdEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyIG9iamVjdHMKKyAgICAgICAgICB0byBjbGVhciB0aGVpciBjYWNoZWQgU3RyaW5n
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzY3JpcHQgc291cmNlIG9uIG1lbW9yeSBwcmVzc3VyZS4g
SXQgaXMKKyAgICAgICAgICBhbHNvIG5lZWRlZCBzbyB3ZSBjYW4gcmVwbGFjZSB0aGUgU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIncyBTY3JpcHRCdWZmZXIgd2l0aCBhIGZpbGUtbWFwcGVkCisg
ICAgICAgICAgdmVyc2lvbiB3aGVuIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS4KKworICAgICAgICAq
IHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0
Y2hGaW5pc2hlZCk6CisgICAgICAgIFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcu
CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIFJlbW92ZSBbUmVwbGFjZWFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBmcm9tIGBk
b2N1bWVudC5hbGxgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZjZTQxMTg1ZDU5NTNmMWJmYTAxZWVlMjgxYWYyODgy
MjM4YTA0ODkuLjJmZmZlMmQ5ZmM3M2Q1YzdhNjJlZmY3MjU4NGRlODdiZDI0YjZkYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIHN1cmUgc2VydmljZSB3b3JrZXJzIHVzZSBhIFNjcmlw
dFNvdXJjZUNvZGUgYmFja2VkIGJ5IGZpbGUtbWFwcGVkIG1lbW9yeSB3aGVuIHBvc3NpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisKIDIwMjEtMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgU2NyaXB0QnVmZmVyIGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgYSBzY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkwOGM5
ZWIxNTExYjNmOTYxLi5iMjA0MjllMzBkODQwNTI2MDEyN2IwNGNjMzQ5MjNhYmVmY2MxNmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMjg3LDYgKzEyODcsNyBAQAogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVk
aW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5oICovOyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
NjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3
MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQ2Qjg1OTNDMjYxNjcyMjcwMDE5RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCODU5M0Ey
NjE2NzIwQzAwMTlFREM2IC8qIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggKi87IH07CiAJ
CTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAw
QTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3Ry
YWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTcyMDdENjM0MDAw
QTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTgyODEsNiArODI4Miw3IEBACiAJCTQ2QUFBQTNDMjVEMzYzMTQwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4
QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjg1OTNB
MjYxNjcyMEMwMDE5RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8q
IFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEQyMDdE
NjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjcyODMsNiArMjcyODUsNyBAQAogCQkJCTQxOEMzOTVFMUM4RjBBQUIwMDUx
QzhBMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0MThD
Mzk1RjFDOEYwQUFCMDA1MUM4QTMgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5o
ICovLAogCQkJCTUxQkE5NDZGMjNBQzMwNTAwMDQ0NDg0NiAvKiBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycy5oICovLAorCQkJCTQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5RDg0
NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zNDgwMiw2ICszNDgwNSw3IEBACiAJ
CQkJQzFFMUQyMzYyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAv
KiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjg1OTNDMjYxNjcyMjcwMDE5
RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNCNzBENzAwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBTY3Jp
cHREaXNhbGxvd2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDEzMDcxNWM3YWNkM2QxZDE1NmU1Njk5OTc1YWNhMzdmZWI4OTdmOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlcj4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1ZmZlciwgY29u
c3QgSlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyKHNjcmlwdEJ1ZmZlciwgc291cmNlT3JpZ2luLCBXVEZN
b3ZlKHNvdXJjZVVSTCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9zY3Jp
cHRIYXNoKQorICAgICAgICAgICAgc291cmNlKCk7CisgICAgICAgIHJldHVybiBtX3NjcmlwdEhh
c2g7CisgICAgfQorCisgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewor
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRh
dGEoKSksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgaWYg
KCptX2NvbnRhaW5zT25seUFTQ0lJKQorICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCkpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKm1fY29udGFp
bnNPbmx5QVNDSUkpCisgICAgICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworCisgICAgICAgIGlm
ICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKKyAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3Ry
aW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGlmICghbV9zY3Jp
cHRIYXNoKQorICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IG1fY2FjaGVkU2NyaXB0U3Ry
aW5nLmltcGwoKS0+aGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVk
U2NyaXB0U3RyaW5nOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEZWNvZGVkRGF0YSgpCisgICAg
eworICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IFN0cmluZygpOworICAgIH0KKworICAg
IHZvaWQgdHJ5UmVwbGFjZVNjcmlwdEJ1ZmZlcihjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdEJ1
ZmZlcikKKyAgICB7CisgICAgICAgIC8vIElmIHRoaXMgbmV3IGZpbGUtbWFwcGVkIHNjcmlwdCBi
dWZmZXIgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgd2UgaGF2ZSwgdGhlbiByZXBsYWNlCisgICAg
ICAgIC8vIG91cnMgdG8gc2F2ZSBkaXJ0eSBtZW1vcnkuCisgICAgICAgIGlmIChtX3NjcmlwdEJ1
ZmZlciAhPSBzY3JpcHRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9z
Y3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIFNjcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0QnVmZmVyLCBj
b25zdCBKU0M6OlNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBTdHJpbmcmJiBzb3VyY2VVUkws
IGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGUgc291cmNlVHlwZSkKKyAgICAgICAgOiBKU0M6OlNvdXJjZVByb3ZpZGVyKHNvdXJj
ZU9yaWdpbiwgV1RGTW92ZShzb3VyY2VVUkwpLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKQor
ICAgICAgICAsIG1fc2NyaXB0QnVmZmVyKHNjcmlwdEJ1ZmZlcikKKyAgICB7CisgICAgfQorCisg
ICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11dGFibGUgdW5zaWduZWQgbV9z
Y3JpcHRIYXNoIHsgMCB9OworICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5n
OworICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaAppbmRleCAxMGZhN2U4YjQ0OWM4Yjg0OWViMzdjYzFmMmM4NjZmYTg5
M2FhZDZiLi5kMWEwZTE4YWJmY2U4M2FlMDgxYjBhOWE5M2E5ZDljMjFiMmQzNzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0
RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCisjaW5j
bHVkZSAiU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01MCw2ICs1MSwxMiBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAorICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU2NyaXB0QnVmZmVy
JiBzb3VyY2UsIFVSTCYmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24gPSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291
cmNlVHlwZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQorICAgICAg
ICA6IG1fcHJvdmlkZXIoU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2Us
IEpTQzo6U291cmNlT3JpZ2luIHsgdXJsIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwg
c291cmNlVHlwZSkpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9u
ZUJhc2VkSW50KCkpCisgICAgeworICAgIH0KKwogICAgIFNjcmlwdFNvdXJjZUNvZGUoQ2FjaGVk
U2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJj
ZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCiAgICAgICAg
IDogbV9wcm92aWRlcihDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hlZFNj
cmlwdCwgc291cmNlVHlwZSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSkpCiAgICAgICAgICwgbV9j
b2RlKG1fcHJvdmlkZXIuY29weVJlZigpKQpAQCAtNjMsMTAgKzcwLDE3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCisgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTY3JpcHRCdWZmZXImIHNv
dXJjZSwgVVJMJiYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIFJlZjxKU0M6OlNjcmlwdEZldGNo
ZXI+JiYgc2NyaXB0RmV0Y2hlcikKKyAgICAgICAgOiBtX3Byb3ZpZGVyKFNjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybCwgV1RG
TW92ZShzY3JpcHRGZXRjaGVyKSB9LCB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJj
ZVR5cGUpKQorICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYoKSwgc3RhcnRQb3Np
dGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNl
ZEludCgpKQorICAgIHsKKyAgICB9CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2NvZGUubGVuZ3RoKCkgPT0gMDsgfQogCiAgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBq
c1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KIAorICAgIEpTQzo6U291cmNl
UHJvdmlkZXImIHByb3ZpZGVyKCkgeyByZXR1cm4gbV9wcm92aWRlci5nZXQoKTsgfQogICAgIFN0
cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlci0+c291cmNlKCk7IH0K
IAogICAgIGludCBzdGFydExpbmUoKSBjb25zdCB7IHJldHVybiBtX2NvZGUuZmlyc3RMaW5lKCku
b25lQmFzZWRJbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwCmluZGV4IDAzNzY1NzgxNjg2YjdhN2I1NTNiZGRjZGZjM2NkZTlhZjcw
OTU0MTMuLmI3ZjkxN2Q2ZDhiZGEwNWVkYjU4ZDEyZjc4NWEzYjM5MjA4MTIwOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRl
clByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92
aWRlciwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQorRGVkaWNhdGVkV29ya2VyVGhy
ZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1z
LCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3Jr
ZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSwg
V29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKICAgICA6IFdvcmtl
clRocmVhZChwYXJhbXMsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJEZWJ1
Z2dlclByb3h5LCB3b3JrZXJPYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0b3BPcmlnaW4sIGNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykKICAgICAsIG1fd29ya2Vy
T2JqZWN0UHJveHkod29ya2VyT2JqZWN0UHJveHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAppbmRleCAwNTlkODE3MTg2MTZjMTA5Y2I0YWMy
M2Q2NjM3NzM5MmZlZmU3NDdmLi43M2Q3NWNmZWNlOGI4MjNmOTRkZjE4NGYzMTg0NTBkM2U5N2Mw
M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xh
c3MgV29ya2VyT2JqZWN0UHJveHk7CiAKIGNsYXNzIERlZGljYXRlZFdvcmtlclRocmVhZCA6IHB1
YmxpYyBXb3JrZXJUaHJlYWQgewpAQCAtNTQsNyArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0
UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBK
U0M6OlJ1bnRpbWVGbGFncyk7CisgICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFdvcmtl
clBhcmFtZXRlcnMmLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRl
clByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxh
Z3MpOwogCiAgICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDMzMWM2YWM4M2ZiOWM0
ZjZhY2VjYzBiNmEzMzhhMmY1N2FjYjlmMDMuLjUyNDlkNjdhZDJjNzYyY2JmODA5MWQ5Njc4YTVm
NGZkM2I2ZmQxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAg
LTQxLDYgKzQxLDEyIEBAIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCks
IHV0ZjgubGVuZ3RoKCkpOwogfQogCitTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgp
Cit7CisgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsK
K30KKworCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2J1ZmZlcikKQEAgLTU3LDYgKzYzLDE0IEBAIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWlu
c1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCit2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcu
dXRmOCgpOworICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworfQorCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3Jp
cHRCdWZmZXImIGIpCiB7CiAgICAgaWYgKGEuYnVmZmVyKCkgPT0gYi5idWZmZXIoKSkKQEAgLTY2
LDQgKzgwLDkgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBiKQogICAgIHJldHVybiAqYS5idWZmZXIoKSA9PSAqYi5idWZmZXIoKTsK
IH0KIAorYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0
QnVmZmVyJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGNhYTUyYjRm
ODM3YjFhYTJjZjcyNDU2MDdjNWQyMWZjOTNjZGEzMDMuLmIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3
OTZiNzFhMDQzMTM0YzY2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApA
QCAtNDMsMjAgKzQzLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQg
U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBTY3JpcHRCdWZmZXIgZW1w
dHkoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIAogICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVm
ZmVyLT5zaXplKCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVG
aWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7Citib29sIG9wZXJhdG9yIT0o
Y29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAyYTQxYTNlZTRiMDU0
NGE4NjMxOWU4YTVlZDI5ZTA2ZWVmZDQ1M2M5Li5mOTdlOTUxOGM4NDZkMWZhNzdmYzg4YjQ1YzVj
ZGMyYmU2YzI0Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICAgICAgICAgIHJlc3BvbnNl
VVJMLnNldEZyYWdtZW50SWRlbnRpZmllcihtX3NjcmlwdExvYWRlci0+dXJsKCkuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkpOwogICAgIH0KICAgICBtX2NvbnRleHRQcm94eS5zdGFydFdvcmtlckdsb2Jh
bFNjb3BlKHJlc3BvbnNlVVJMLCBtX25hbWUsIGNvbnRleHQtPnVzZXJBZ2VudChyZXNwb25zZVVS
TCksIGlzT25saW5lLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycywgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIG1fd29ya2VyQ3JlYXRpb25UaW1lLCByZWZlcnJlclBvbGljeSwgbV90eXBlLCBt
X2NyZWRlbnRpYWxzLCBtX3J1bnRpbWVGbGFncyk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzY3JpcHRJbXBvcnRlZCgqY29udGV4dCwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIo
KSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNjcmlwdEltcG9ydGVkKCpjb250ZXh0LCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigp
LCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgV29ya2Vy
OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODdmYzU4YzFiNDEzOGMxNzZiOWIzYTZjMDE5MDdj
ZWMwZjk3YWU1OS4uYzcyM2NmNGM1YWZjZGJjNDMyYTMxNGVlNWRiMDcyMTE4N2ZjNjgwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMyOCwx
NCArMzI4LDIxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKQogICAgICAgICBpZiAoYXV0byBleGNl
cHRpb24gPSBzY3JpcHRMb2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHRoaXMsIHVybCwgRmV0Y2hP
cHRpb25zOjpNb2RlOjpOb0NvcnMsIGNhY2hlUG9saWN5LCBjc3BFbmZvcmNlbWVudCwgcmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpleGNl
cHRpb24pOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0
ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlw
dCgpKTsKLQotICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAg
ICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNj
cmlwdCgpLCBVUkwoc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlvbik7Ci0g
ICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRp
b24oZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRl
bnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkpOworCisgICAgICAg
IFdlYWtQdHI8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyOworICAg
ICAgICB7CisgICAgICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwor
ICAgICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+c2Ny
aXB0KCksIFVSTChzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpKTsKKyAgICAgICAgICAgIHNv
dXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKKyAgICAgICAgICAgIHNjcmlwdCgp
LT5ldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgIHNjcmlwdCgpLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9u
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIGlmIChzb3VyY2VQcm92aWRlcikKKyAgICAgICAgICAgIGFkZEltcG9ydGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIodXJsLCAqc291cmNlUHJvdmlkZXIpOwogICAgIH0KIAogICAgIHJl
dHVybiB7IH07CkBAIC01MjcsNiArNTM0LDEzIEBAIFdvcmtlclRocmVhZCYgV29ya2VyR2xvYmFs
U2NvcGU6OnRocmVhZCgpIGNvbnN0CiB9CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnJlbGVh
c2VNZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCit7CisgICAgQVNTRVJUKGlzQ29udGV4
dFRocmVhZCgpKTsKKyAgICBkZWxldGVKU0NvZGVBbmRHQyhzeW5jaHJvbm91cyk7CisgICAgY2xl
YXJEZWNvZGVkU2NyaXB0RGF0YSgpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxl
dGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKICAgICBBU1NFUlQoaXND
b250ZXh0VGhyZWFkKCkpOwogCkBAIC01NjMsNCArNTc3LDQ2IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OnJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAg
ICAgfQogfQogCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpzZXRNYWluU2NyaXB0U291cmNlUHJv
dmlkZXIoU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXImIHByb3ZpZGVyKQoreworICAgIEFTU0VS
VCghbV9tYWluU2NyaXB0U291cmNlUHJvdmlkZXIpOworICAgIG1fbWFpblNjcmlwdFNvdXJjZVBy
b3ZpZGVyID0gbWFrZVdlYWtQdHIocHJvdmlkZXIpOworfQorCit2b2lkIFdvcmtlckdsb2JhbFNj
b3BlOjphZGRJbXBvcnRlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYgdXJsLCBTY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlciYgcHJvdmlkZXIpCit7CisgICAgbV9pbXBvcnRlZFNjcmlw
dHNTb3VyY2VQcm92aWRlcnMuZW5zdXJlKHVybCwgW10geworICAgICAgICByZXR1cm4gV2Vha0hh
c2hTZXQ8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWUuYWRkKHByb3ZpZGVyKTsKK30KKwordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJE
ZWNvZGVkU2NyaXB0RGF0YSgpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKwor
ICAgIGlmIChtX21haW5TY3JpcHRTb3VyY2VQcm92aWRlcikKKyAgICAgICAgbV9tYWluU2NyaXB0
U291cmNlUHJvdmlkZXItPmNsZWFyRGVjb2RlZERhdGEoKTsKKworICAgIGZvciAoYXV0byYgc291
cmNlUHJvdmlkZXJzIDogbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMudmFsdWVzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VQcm92aWRlciA6IHNvdXJjZVByb3ZpZGVycykK
KyAgICAgICAgICAgIHNvdXJjZVByb3ZpZGVyLmNsZWFyRGVjb2RlZERhdGEoKTsKKyAgICB9Cit9
CisKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnVwZGF0ZVNvdXJjZVByb3ZpZGVyQnVmZmVycyhj
b25zdCBTY3JpcHRCdWZmZXImIG1haW5TY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRC
dWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgp
KTsKKworICAgIGlmIChtYWluU2NyaXB0ICYmIG1fbWFpblNjcmlwdFNvdXJjZVByb3ZpZGVyKQor
ICAgICAgICBtX21haW5TY3JpcHRTb3VyY2VQcm92aWRlci0+dHJ5UmVwbGFjZVNjcmlwdEJ1ZmZl
cihtYWluU2NyaXB0KTsKKworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykg
eworICAgICAgICBhdXRvIGl0ID0gbV9pbXBvcnRlZFNjcmlwdHNTb3VyY2VQcm92aWRlcnMuZmlu
ZChwYWlyLmtleSk7CisgICAgICAgIGlmIChpdCA9PSBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVBy
b3ZpZGVycy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGF1dG8m
IHNvdXJjZVByb3ZpZGVyIDogaXQtPnZhbHVlKQorICAgICAgICAgICAgc291cmNlUHJvdmlkZXIu
dHJ5UmVwbGFjZVNjcmlwdEJ1ZmZlcihwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAppbmRleCAzN2JkZjI5MTQ3ZTM2ZTQ3NjJiYmZiYTRlMzhlNjg3ZjJlODQyMjVlLi5lZjAzY2Mx
MmNhMjM3MDI5NDAxMGQ0ZDg3Njk1NGQ3MGNiMWQwYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yOSwxNyArMjksMjEgQEAKICNpbmNsdWRlICJC
YXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
dXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTEhhc2guaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsMTAgKzEzNCwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWxlYXNlTWVtb3J5KFN5bmNocm9ub3VzKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVt
b3J5SW5Xb3JrZXJzKFN5bmNocm9ub3VzKTsKIAorICAgIHZvaWQgc2V0TWFpblNjcmlwdFNvdXJj
ZVByb3ZpZGVyKFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyJik7CisgICAgdm9pZCBhZGRJbXBv
cnRlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVSTCYsIFNjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyJik7CisKIHByb3RlY3RlZDoKICAgICBXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJl
YWRUeXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBX
b3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAKICAgICB2b2lkIGFwcGx5
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYpOworICAgIHZvaWQgdXBkYXRlU291cmNlUHJvdmlkZXJC
dWZmZXJzKGNvbnN0IFNjcmlwdEJ1ZmZlciYgbWFpblNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkws
IFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cyk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBs
b2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRy
PEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5hbDsKQEAgLTE0NSw2ICsxNTMsOSBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1dvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdm9pZCBkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91
cyk7CisgICAgdm9pZCBjbGVhckRlY29kZWRTY3JpcHREYXRhKCk7CisKICAgICBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4ID0gRm9yY2VVVEY4OjpObykgY29uc3QgZmlu
YWw7CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKIApAQCAt
MTgxLDYgKzE5Miw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBlcmZvcm1hbmNlPiBtX3BlcmZv
cm1hbmNlOwogICAgIG11dGFibGUgUmVmUHRyPENyeXB0bz4gbV9jcnlwdG87CiAKKyAgICBXZWFr
UHRyPFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyPiBtX21haW5TY3JpcHRTb3VyY2VQcm92aWRl
cjsKKyAgICBIYXNoTWFwPFVSTCwgV2Vha0hhc2hTZXQ8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXI+PiBtX2ltcG9ydGVkU2NyaXB0c1NvdXJjZVByb3ZpZGVyczsKKwogICAgIFJlZlB0cjxXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMTJk
NWUxYzBmODE5N2FlMTY3Yzc0MmUxZjRlZGZiOWNmNGNlODhjMy4uNzY5ZDk1ZDlhYmM4ZWM3MGFk
MTQxNjRhMzAxZWJkZmI3ZGRmMDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGVQcm94eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkmIGNyZWF0ZShXb3JrZXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVP
cmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFs
cywgSlNDOjpSdW50aW1lRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBz
b3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBi
b29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3Rvbmlj
VGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRl
cm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVz
c2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9p
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggNzIwNjQzODA4NDc5ODg2NWZh
OTg4MTkwYTQ4NjU3YTUyMzIxMDhlMC4uYjFlNTBjNThmNWFjNDcxZWJhMzM4ZDMzMmNmY2JmNTBl
NDAwZjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgV29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJN
ZXNzYWdpbmdQcm94eSgpCiAgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSkpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGlj
eSByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFscyBjcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKQordm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Ym9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUgd29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3Jl
ZGVudGlhbHMsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBuZWVkIHRvIGJlIHJldmlzaXRlZCB3aGVuIHdlIHN1cHBvcnQgbmVzdGVkIHdvcmtl
ciBvbmUgZGF5CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYmU5ZjQ2MGYz
OGUyZDU1NjMzNWU3NmM5ZjVjYWMwOGZlODkyNjE4Mi4uYjZjNDM4MGE0YTQ0OWY4NTA5MzRhODE5
N2ZhNWY4MzY5ZDMwODkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgIC8vIChPbmx5
IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIHdvcmtlciBvYmplY3QgdGhyZWFkLikKLSAgICB2
b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0
IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CisgICAgdm9p
ZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBT
Y3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBl
LCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAg
IHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5h
bDsKICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggZTFjODEyMzVmYmE4YTQ1ODdkMmVhZDRm
NTQ4YWY5OTNmYzViZWEwYi4uN2RiZmNjYjQwYWFkMTczY2RkNDk2YWU3OGEwMTFkNWFkYmExZGYy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApA
QCAtNDQsNyArNDQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJTY3JpcHRM
b2FkZXI6OldvcmtlclNjcmlwdExvYWRlcigpID0gZGVmYXVsdDsKK1dvcmtlclNjcmlwdExvYWRl
cjo6V29ya2VyU2NyaXB0TG9hZGVyKCkKKyAgICA6IG1fc2NyaXB0KFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKSkKK3sKK30KIAogV29ya2VyU2NyaXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9hZGVyKCkg
PSBkZWZhdWx0OwogCkBAIC02MSw3ICs2NCw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAK
ICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKICAgICAgICAgaWYgKGF1dG8q
IHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3Jr
ZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgewotICAgICAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQudG9TdHJpbmcoKSk7CisgICAgICAgICAg
ICBtX3NjcmlwdCA9IHNjcmlwdFJlc291cmNlLT5zY3JpcHQ7CiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNw
b25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEwMiw3ICsxMDUsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+
IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2Ny
aXB0IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFNjcmlwdEJ1ZmZlciB7IHNjcmlw
dCgpIH0sIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2Ny
aXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9
CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMjExLDcgKzIxNCw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuKQogICAgIAogICAgIGlmIChsZW4gPT0gLTEpCiAgICAgICAgIGxlbiA9IHN0cmxlbihk
YXRhKTsKLSAgICAKKwogICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRh
LCBsZW4pKTsKIH0KIApAQCAtMjQzLDExICsyNDYsNiBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRl
cjo6bm90aWZ5RXJyb3IoKQogICAgIG5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKLVN0cmluZyBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OnNjcmlwdCgpCi17Ci0gICAgcmV0dXJuIG1fc2NyaXB0LnRvU3RyaW5n
KCk7Ci19Ci0KIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiB7CiAg
ICAgbV90aHJlYWRhYmxlTG9hZGVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGNmYTMxYTM1MzI1OWFlZWQxOThmOTM5MWZmYzE1
MTFiNDA1MGI4NWUuLmJkZDYwMTdkZjQ2Y2M5ZjQ2ZGUwZGFhZGE3ZDM1YzlmODZiMzRjYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2NyaXB0
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC02Miw3ICs2Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIAotICAgIFN0cmluZyBzY3JpcHQo
KTsKKyAgICBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0OyB9
CiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsg
fQogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQpAQCAtOTgsNyArOTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyPiBtX3RocmVhZGFibGVMb2FkZXI7CiAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsK
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIFN0cmluZ0J1
aWxkZXIgbV9zY3JpcHQ7CisgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0OwogICAgIFVSTCBtX3Vy
bDsKICAgICBVUkwgbV9yZXNwb25zZVVSTDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZp
Y2F0ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNzdm
Y2QyYTc0NDQ4NzQ4NzIxNzUxYTgwZDU2MGU0ZTA0MzVlNDhhMy4uNDQyZDJkZDJkOGFiNzc3MTY3
NjFhYTM5ZTJhMmIyYzA0MTk5NWQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtNjYsMTYgKzY2LDE2IEBAIFdvcmtlclBhcmFtZXRlcnMgV29ya2VyUGFyYW1l
dGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0
YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJUaHJlYWRTdGFydHVw
RGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKTsKIAogICAgIFdvcmtlclBh
cmFtZXRlcnMgcGFyYW1zOwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwotICAgIFN0
cmluZyBzb3VyY2VDb2RlOworICAgIFNjcmlwdEJ1ZmZlciBzb3VyY2VDb2RlOwogICAgIFdvcmtl
clRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGU7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0b3BP
cmlnaW47CiB9OwogCi1Xb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1
cERhdGEoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgb3RoZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbikKK1dvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFy
dHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBvdGhlciwgY29uc3QgU2NyaXB0QnVmZmVy
JiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luKQogICAgIDogcGFyYW1zKG90aGVyLmlzb2xhdGVkQ29weSgp
KQogICAgICwgb3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3RoZXIuc2NyaXB0VVJMKS0+
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBzb3VyY2VDb2RlKHNvdXJjZUNvZGUuaXNvbGF0ZWRDb3B5
KCkpCkBAIC04NCw3ICs4NCw3IEBAIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJl
YWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBvdGhlciwKIHsKIH0KIAotV29y
a2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSwgV29ya2VyUmVw
b3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1dvcmtlclRocmVhZDo6
V29ya2VyVGhyZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgY29uc3QgU2NyaXB0
QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHks
IFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlclJlcG9ydGlu
Z1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0
TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBXb3JrZXJPcldvcmts
ZXRUaHJlYWQocGFyYW1zLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dvcmtl
ckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAgICwgbV93b3JrZXJEZWJ1Z2dlclBy
b3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCkBAIC0xMjUsMTIgKzEyNSwxNiBAQCB2b2lkIFdvcmtl
clRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3Nh
Z2UpCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBob2xkaW5nIG9ubHkgdGhlIGluaXRpYWwgc2Ny
aXB0IGNvZGUuIElmIHRoZSBXb3JrZXJUeXBlIGlzIE1vZHVsZSwgd2Ugc2hvdWxkIGZldGNoIHRo
ZSBlbnRpcmUgZ3JhcGggYmVmb3JlIGV4ZWN1dGluZyB0aGUgcmVzdCBvZiB0aGlzLgogICAgIC8v
IFdlIGludm9rZSBtb2R1bGUgbG9hZGVyIGFzIGlmIHdlIGFyZSBleGVjdXRpbmcgaW5saW5lIG1v
ZHVsZSBzY3JpcHQgdGFnIGluIERvY3VtZW50LgogCisgICAgV2Vha1B0cjxTY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7CiAgICAgaWYgKG1fc3RhcnR1cERhdGEtPnBh
cmFtcy53b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OkNsYXNzaWMpIHsKLSAgICAgICAgZ2xvYmFs
U2NvcGUoKS0+c2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zdGFydHVwRGF0
YS0+c291cmNlQ29kZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpKSwgJmV4
Y2VwdGlvbk1lc3NhZ2UpOworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9z
dGFydHVwRGF0YS0+c291cmNlQ29kZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRV
UkwpKTsKKyAgICAgICAgc291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxT
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOworICAg
ICAgICBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+ZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4Y2Vw
dGlvbk1lc3NhZ2UpOwogICAgICAgICBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBhdXRvIHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVy
OjpjcmVhdGUoZ2xvYmFsU2NvcGUoKS0+Y3JlZGVudGlhbHMoKSwgZ2xvYmFsU2NvcGUoKS0+ZGVz
dGluYXRpb24oKSwgZ2xvYmFsU2NvcGUoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIFNj
cmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3VyY2VDb2RlLCBVUkwo
bV9zdGFydHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCksIHsgfSwgSlNDOjpTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0RmV0Y2hlci5jb3B5UmVmKCkpOworICAgICAgICBz
b3VyY2VQcm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFNjcmlwdEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7CiAgICAgICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmxvYWRNb2R1bGVT
eW5jaHJvbm91c2x5KHNjcmlwdEZldGNoZXIuZ2V0KCksIHNvdXJjZUNvZGUpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKICAgICAgICAgICAgIGlmIChP
cHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gc2NyaXB0RmV0Y2hlci0+ZXJy
b3IoKSkgewpAQCAtMTQ1LDYgKzE0OSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNj
cmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoc291cmNlUHJvdmlkZXIpCisgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CiAgICAgLy8gRnJlZSB0aGUgc3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFi
bGUgZGVyZWYncyBoYXBwZW4gb24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBh
bGwgcmVmL2RlcmVmcyBvZiB0aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVh
ZCBhdCB0aGlzIHBvaW50KS4gTm90ZSB0aGF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCA5MzVlOTcyZDUzOGZmOGVjMDY0NzM5ZWU1YWIyODBiOTI2Yzk2ZjdiLi4yNmQ0
NGQ0ZjE2YTNkMDIxNGZjNTBmMTk2NDEzODg1MWJlNGU2ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OworY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwpAQCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgSlNDOjpSdW50aW1lRmxhZ3Mg
cnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogcHJvdGVj
dGVkOgotICAgIFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkm
LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBT
b2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAgICBXb3JrZXJUaHJlYWQoY29u
c3QgV29ya2VyUGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJv
eHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6
OlJ1bnRpbWVGbGFncyk7CiAKICAgICAvLyBGYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBu
ZXcgd29ya2VyIGNvbnRleHQgZm9yIHRoZSB0aHJlYWQuCiAgICAgdmlydHVhbCBSZWY8V29ya2Vy
R2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBhNWM3MzY4OGEwYzA1MDUwOTI0YTNlNmQ4
MmZkN2E2YWY2Y2MzNDFiLi5mYzU5ZWIxMjIyNThhNTY2MmYwNTM0MjE4MDdlMTgxMmU4NDRkZWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YiwgRmV0Y2gKICAgICBqb2IuZmV0Y2hTY3JpcHRXaXRoQ29udGV4dCgqY29udGV4dCwgY2FjaGVQ
b2xpY3kpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9h
ZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBj
b25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXJQb2xpY3kpCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZp
bmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaAppbmRleCA0YzdkZGY0YTRjMTMxZTBkY2Q2YmEwOTUwOWFiMmQ5NzU3NWYz
MGMwLi5iNjg1NDUzYjUyZmIxZTk2MTM0NmUzY2ZlMTVjZGFlNWFiY2JiYjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgam9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZpbmFsOwogICAgIHZvaWQgam9i
UmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvYiYsIGJvb2wg
dW5yZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZv
ckpvYihTZXJ2aWNlV29ya2VySm9iJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgZmluYWw7Ci0gICAg
dm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSBm
aW5hbDsKKyAgICB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
clBvbGljeSkgZmluYWw7CiAgICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCmluZGV4IDI1YjYxOTJhOWVjNDcx
NjQ2NjJlZTQ0YmE0YjllOGM3MDkyZmFlMjAuLjNiZDA3YjNjZjYxNTBmM2I2MjI2ZWEzNDQ5NzZl
ZjBmZmI4N2QyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5
cGVzLmgiCiAKQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyIGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
cmVnaXN0cmF0aW9uS2V5OwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgU2NyaXB0QnVmZmVyIHNj
cmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAg
U3RyaW5nIHJlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxOGJkNGE5
ZTVjYjNiMThlNzQ1NmRlY2QxYjA0YzUzZWQwZjE1OTliLi4zMzAxNGEzZTczNjczNGY1ODhlMDBh
MWQwYmQyZGVhZGIwZjY3ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMTU4LDYgKzE1
OCw4IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNvdXJjZShj
b25zdCBVUkwmIHVybCwgU2VydmljZVdvcmtlckNvCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgc2NyaXB0LCBIYXNoTWFw
PFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykKIHsKICAgICAvLyBUaGVzZSBz
Y3JpcHRzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGhlIG9uZXMgd2UgaGF2ZS4gSG93ZXZlciwg
dGhlc2UgYXJlIG1tYXAnZCBzbyB1c2luZyB0aGVtIGhlbHBzIHJlZHVjZSBkaXJ0eSBtZW1vcnkg
dXNhZ2UuCisgICAgdXBkYXRlU291cmNlUHJvdmlkZXJCdWZmZXJzKHNjcmlwdCwgaW1wb3J0ZWRT
Y3JpcHRzKTsKKwogICAgIGlmIChzY3JpcHQpIHsKICAgICAgICAgQVNTRVJUKG1fY29udGV4dERh
dGEuc2NyaXB0ID09IHNjcmlwdCk7CiAgICAgICAgIG1fY29udGV4dERhdGEuc2NyaXB0ID0gV1RG
TW92ZShzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggMmU5MzcxNGZkOTFiZTk4ZWRjN2JiNzBh
ODNjMTMxN2MzYTUxZGYyMS4uN2ZiZjI5Y2FkZTIyN2ZmNTA4YTUzNTE2NDk2OWE3N2RkZWRkZjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkNsaWVudC5oCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNzIEV4Y2Vw
dGlvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBT
ZXJ2aWNlV29ya2VySm9iOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iQ2xpZW50IHsKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBq
b2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiwgYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlw
dEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXJQb2xpY3kpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZp
Y2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZh
aWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3Im
LCBFeGNlcHRpb24mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRl
eCBkMGNlMGE2MWRkMmQwMGNmZDE4YmQ2NDFhOWI4MjZhMzA2MzdjZWM0Li5mNDFiZjgzZmFjMzU0
MzE5M2EyYWI5Y2E2MTM3YzM4Zjc0OTI2Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1l
IGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0
aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclBy
b3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJp
bmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9s
aWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3Jp
cHQudG9TdHJpbmcoKSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgp
LCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKQorICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkws
IGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJz
RmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29y
a2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0s
IGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwg
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCks
IGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpj
cmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRhdGEu
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2pvYkRhdGFJZGVudGlmaWVyKGRhdGEu
am9iRGF0YUlkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAppbmRleCBiMGMyMDg3OWI2MjNiZDljZWE2NGM4ODk4ZjAzZDYxOGQ4NzVlMGY2Li45NWNkM2Ux
OGQ2ZWYwZjE3NDMzODYwZWRhYzNiYmFlOWY2NTllZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjM3LDkgKzYzNyw5
IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24o
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3Zl
Q2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5n
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK3Zv
aWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAg
ICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0
YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBTY3JpcHRCdWZmZXIgeyBzY3JpcHQgfSwgY2VydGlmaWNhdGVJbmZvLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCmluZGV4IGMxNjY4MDVkODFlODQwNmY1ZjkzYmFlNWYwYTQ0NzQxOGI4YjQwOWEuLjNi
NmQxZTc2NTEwMjk3MDQ2YmEwNzJlOGU4ODkzYjJmYWRlNmRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE1MSw3ICsxNTEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jiwg
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpOwogCi0g
ICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OworICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIHZv
aWQgZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNjI3YWEwOWIxY2RiYjdkNGMyNmZmOGEzMThhYzY1MTY2NDcxMzgyYi4uODAyYTQ4
MDExNTFhNzI4ZmJjNWEyYTY5MTI0ZGI5NjNjNzcyY2IwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWwKICAgICAvLyBJZiBu
ZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIG5ld2VzdFdvcmtlcidzIHNjcmlwdCB1cmwgZXF1YWxz
IGpvYidzIHNjcmlwdCB1cmwgd2l0aCB0aGUgZXhjbHVkZSBmcmFnbWVudHMKICAgICAvLyBmbGFn
IHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3
aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNvdXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQs
IHRoZW46Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2Vz
dFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3
ZXN0V29ya2VyLT5zY3JpcHQoKS50b1N0cmluZygpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsK
KyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
bmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2Vy
LT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3Jr
ZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5m
bywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5p
c2hlZCwgc2NyaXB0IGFuZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcgZm9yIHJlZ2lzdHJhdGlv
bklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgLy8gRklYTUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRzLCBjaGVjayB0aGUgc2Ny
aXB04oCZcyBtb2R1bGUgcmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1dLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCAzNGY0ZDlk
NmU3ZjY4M2Y4NzlhZjFiYjhiN2I0YmQzZTdhMjBkOWRjLi5hODJkNzM3MTc4MWM0OGM2NjMzMzRl
M2M1NTRlZDg1MjQ2M2QxZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTQogewogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgIG1fc2NyaXB0LmFwcGVuZCht
X2RlY29kZXItPmZsdXNoKCkpOwotICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2pvYkRhdGEu
aWRlbnRpZmllcigpLCBtX2pvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIG1fc2NyaXB0LnRvU3Ry
aW5nKCksIG1fY2VydGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZl
cnJlclBvbGljeSwgeyB9IH0pOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2pvYkRhdGEu
aWRlbnRpZmllcigpLCBtX2pvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFNjcmlwdEJ1ZmZlciB7
IG1fc2NyaXB0LnRvU3RyaW5nKCkgfSwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCB7IH0gfSk7CiAgICAgZGlkQ29tcGxldGUoKTsK
IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>