<?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>157812</bug_id>
          
          <creation_ts>2016-05-17 14:46:56 -0700</creation_ts>
          <short_desc>Rollout r200426 since it causes PLT regressions.</short_desc>
          <delta_ts>2016-06-06 23:48:30 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193990</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-05-17 14:46:56 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193996</commentid>
    <comment_count>1</comment_count>
      <attachid>279168</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-05-17 14:49:15 -0700</bug_when>
    <thetext>Created attachment 279168
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194004</commentid>
    <comment_count>2</comment_count>
      <attachid>279168</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 15:19:04 -0700</bug_when>
    <thetext>Comment on attachment 279168
Patch for landing

Clearing flags on attachment: 279168

Committed r201049: &lt;http://trac.webkit.org/changeset/201049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194005</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 15:19:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194283</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 09:06:38 -0700</bug_when>
    <thetext>The roll out also looks like a ~3% progression on JSBench / iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199956</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-06 23:48:30 -0700</bug_when>
    <thetext>Yup, both Mac and iOS bots have confirmed 3% progressions on JSBench across the board.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279168</attachid>
            <date>2016-05-17 14:49:15 -0700</date>
            <delta_ts>2016-05-17 15:19:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157812-20160517145012.patch</filename>
            <type>text/plain</type>
            <size>89546</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MjUzMDAxOGY4Njg5ZDI0OTkyOGRkNThjOWE0N2Q2NmU1NDM4YTdkLi41ZGQyMjEwZWMzMDI0MmVi
OTJlODkxOTdiZTk1OWU1ZmVmNzU0MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMiBAQAogMjAxNi0wNS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KIAorICAgICAgICBSb2xsb3V0IHIyMDA0MjYgc2luY2UgaXQgY2F1c2VzIFBMVCByZWdy
ZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NzgxMgorCisgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMjAwNDI2IHNpbmNlIHRo
ZSBib3RzIHNlZSBhIH4uNiUgUExUIHJlZ3Jlc3Npb24gZnJvbSB0aGUgcGF0Y2guCisKKzIwMTYt
MDUtMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKICAgICAgICAg
QWRkIHRlc3QyNjIgaGFybmVzcyBzdXBwb3J0IGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc5NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY4NGNkZWQ1NjM3NWEyOGMxZjRmODNlOWY3YzBmNDhhZGY3ZWM1ODEuLmIxY2Jh
YmE4NGQxNTBmZDRiYTNjN2MyNWFkODM2NDE3ZmMwMTY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTgwLDcgKzExODAsNiBAQAogCQk1MzcwQjRGNTFCRjI2MjAyMDA1QzQw
RkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGMzFCRjI1
RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHAgKi87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9OwogCQk1MzkxN0U3
QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
OTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUZ1bmN0aW9ucy5oICovOyB9OwotCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJh
eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovOyB9OwogCQk1
M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ1
RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIg
LyogbGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRl
c3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsK
QEAgLTMzMjcsNyArMzMyNiw2IEBACiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJE
MzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBlZEFycmF5UHJvdG90
eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gVHlwZWRBcnJh
eVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8q
IEpTQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJy
YXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjI1NkUxMUI4N0Uy
ODAwMEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyog
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1OTNENDNDQ0EwQkJFMDZEODlDNTk3MDcgLyogTWFwRGF0
YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwRGF0YUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MDYsNyArNTcwNCw2IEBACiAJ
CQkJNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJ
CQkJOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpTQXJyYXkuY3BwICovLAogCQkJCTkzODc3
MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0FycmF5LmggKi8sCi0JCQkJNTM5RkI4QjkxQzk5REE3
QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCiAJCQkJMEYyQjY2QjQxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwICovLAogCQkJCTBGMkI2NkI1MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0FycmF5QnVmZmVyLmggKi8sCiAJCQkJMEYyQjY2QjYxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC03NTU4LDcgKzc1NTUsNiBA
QAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEE3NTIzMUI5NEJGQTkwMDExMDY2MCAvKiBJbmZlcnJlZFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkM5MjEyMUI5NEQ0REYwMDcxREQ2NiAvKiBJbmZlcnJlZFR5
cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM5RkI4QkExQzk5REE3QzAwOTQwRkExIC8q
IEpTQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY4QkRFQjFBRDRDRjcxMDBE
RkU4ODQgLyogSW5mZXJyZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2
RjVDRDAwQjM0NDYwIC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MTNFNUI4MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUu
anMKaW5kZXggMWNmY2U1MjIwYzNlMGU2MGEwYjg5ZjRiOWNlMDdhMDg1NGEwNDMyZi4uM2NmNGIz
NTkxNjY1NmE5YzMxMWEwNTRlOGQyMWZkZjZkZTUzZmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtNjkxLDk0ICs2OTEsNiBA
QCBmdW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1mdW5j
dGlvbiBjb25jYXRTbG93UGF0aCgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgdmFyIGFy
Z0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICB2YXIgcmVzdWx0ID0gbmV3IHRoaXMuc3Bl
Y2llcygwKTsKLSAgICB2YXIgcmVzdWx0SXNBcnJheSA9IEBpc0pTQXJyYXkocmVzdWx0KTsKLQot
ICAgIHZhciBjdXJyZW50RWxlbWVudCA9IHRoaXMuYXJyYXk7Ci0gICAgdmFyIHJlc3VsdEluZGV4
ID0gMDsKLSAgICB2YXIgYXJnSW5kZXggPSAwOwotCi0gICAgZG8gewotICAgICAgICB2YXIgc3By
ZWFkYWJsZSA9IEBpc09iamVjdChjdXJyZW50RWxlbWVudCkgJiYgY3VycmVudEVsZW1lbnRbQHN5
bWJvbElzQ29uY2F0U3ByZWFkYWJsZV07Ci0gICAgICAgIGlmICgoc3ByZWFkYWJsZSA9PSBAdW5k
ZWZpbmVkICYmIEBpc0FycmF5KGN1cnJlbnRFbGVtZW50KSkgfHwgc3ByZWFkYWJsZSkgewotICAg
ICAgICAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChjdXJyZW50RWxlbWVudC5sZW5ndGgpOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdElzQXJyYXkgJiYgQGlzSlNBcnJheShjdXJyZW50RWxlbWVu
dCkKLSAgICAgICAgICAgICAgICAmJiBAYXBwZW5kTWVtY3B5KHJlc3VsdCwgY3VycmVudEVsZW1l
bnQpKSB7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJbmRleCArPSBsZW5ndGg7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChsZW5ndGggKyByZXN1bHRJbmRleCA+
IEBNQVhfU0FGRV9JTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBAVHlwZUVycm9y
KCJsZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gc2FmZSBpbnRlZ2VyIik7Ci0gICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaSBpbiBjdXJyZW50RWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIHJlc3VsdEluZGV4LCBjdXJyZW50RWxlbWVudFtpXSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4Kys7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHJlc3VsdEluZGV4
ID49IEBNQVhfU0FGRV9JTlRFR0VSKQotICAgICAgICAgICAgICAgIHRocm93IEBUeXBlRXJyb3Io
Imxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBzYWZlIGludGVnZXIiKTsKLSAgICAgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIHJlc3VsdEluZGV4KyssIGN1cnJlbnRFbGVtZW50KTsK
LSAgICAgICAgfQotICAgICAgICBjdXJyZW50RWxlbWVudCA9IGFyZ3VtZW50c1thcmdJbmRleF07
Ci0gICAgfSB3aGlsZSAoYXJnSW5kZXgrKyA8IGFyZ0NvdW50KTsKLQotICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRJbmRleDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBjb25j
YXQoZmlyc3QpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKHRoaXMgPT0gbnVsbCkg
ewotICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkKLSAgICAgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUuY29uY2F0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIik7Ci0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
Y29uY2F0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKLSAgICB9Ci0K
LSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOwotCi0gICAgdmFyIGNvbnN0cnVjdG9yOwot
ICAgIGlmIChAaXNBcnJheShhcnJheSkpIHsKLSAgICAgICAgY29uc3RydWN0b3IgPSBhcnJheS5j
b25zdHJ1Y3RvcjsKLSAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGNoZWNrIHNvIHRoYXQgaWYgc29t
ZSBhcnJheSBmcm9tIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QKLSAgICAgICAgLy8gY2FsbHMg
dGhpcyBtYXAgdGhleSBkb24ndCBnZXQgYW4gYXJyYXkgd2l0aCB0aGUgQXJyYXkucHJvdG90eXBl
IG9mIHRoZQotICAgICAgICAvLyBvdGhlciBnbG9iYWwgb2JqZWN0LgotICAgICAgICBpZiAoQGlz
QXJyYXlDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikgJiYgQEFycmF5ICE9PSBjb25zdHJ1Y3RvcikK
LSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQHVuZGVmaW5lZDsKLSAgICAgICAgaWYgKEBpc09i
amVjdChjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0
b3JbQHN5bWJvbFNwZWNpZXNdOwotICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBudWxs
KQotICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQEFycmF5OwotICAgICAgICB9Ci0gICAg
fQotICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgY29uc3RydWN0
b3IgPSBAQXJyYXk7Ci0KLSAgICB2YXIgcmVzdWx0OwotICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAxCi0gICAgICAgICYmIGNvbnN0cnVjdG9yID09PSBAQXJyYXkKLSAgICAgICAgJiYgQGlz
SlNBcnJheShhcnJheSkKLSAgICAgICAgJiYgQGlzSlNBcnJheShmaXJzdCkKLSAgICAgICAgLy8g
RklYTUU6IHRoZXNlIGdldF9ieV9pZHMgc2hvdWxkIGJlICJpbiJzIGJ1dCB1c2luZyAiaW4iIGhl
cmUgaXMgYSAxMCUgcmVncmVzc2lvbi4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTU5MAotICAgICAgICAmJiBhcnJheVtAc3ltYm9sSXNDb25j
YXRTcHJlYWRhYmxlXSA9PSBAdW5kZWZpbmVkCi0gICAgICAgICYmIGZpcnN0W0BzeW1ib2xJc0Nv
bmNhdFNwcmVhZGFibGVdID09IEB1bmRlZmluZWQpIHsKLQotICAgICAgICByZXN1bHQgPSBAY29u
Y2F0TWVtY3B5KGFycmF5LCBmaXJzdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHJldHVybiBAY29uY2F0U2xv
d1BhdGguQGFwcGx5KHsgYXJyYXk6IGFycmF5LCBzcGVjaWVzOiBjb25zdHJ1Y3RvciB9LCBhcmd1
bWVudHMpOwotfQotCiBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCwgc3RhcnQgLyosIGVuZCAq
LykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggMjM5
YWM5OGUwZjk4NjkxN2NiM2U0YTU4NDU3YjZiNWY5ZDljYWEyZi4uMjZiMGRiN2ZmODQ0OGMzMDBh
OGU5ZTU3YWQ4Y2YzOWQxY2JkZTMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNTEs
MTEgKzUxLDkgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeShWTSYgdm0pCiAgICAgbV9hcnJheUl0ZXJhdGlvbktpbmRWYWx1ZS5zZXQobV92bSwg
anNOdW1iZXIoQXJyYXlJdGVyYXRlVmFsdWUpKTsKICAgICBtX2FycmF5SXRlcmF0aW9uS2luZEtl
eVZhbHVlLnNldChtX3ZtLCBqc051bWJlcihBcnJheUl0ZXJhdGVLZXlWYWx1ZSkpOwogICAgIG1f
TUFYX1NUUklOR19MRU5HVEguc2V0KG1fdm0sIGpzTnVtYmVyKEpTU3RyaW5nOjpNYXhMZW5ndGgp
KTsKLSAgICBtX01BWF9TQUZFX0lOVEVHRVIuc2V0KG1fdm0sIGpzRG91YmxlTnVtYmVyKDkwMDcx
OTkyNTQ3NDA5OTEuMCkpOyAvLyAyIF4gNTMgLSAxCiAgICAgbV9wcm9taXNlU3RhdGVQZW5kaW5n
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0
dXM6OlBlbmRpbmcpKSk7CiAgICAgbV9wcm9taXNlU3RhdGVGdWxmaWxsZWQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVk
KSkpOwogICAgIG1fcHJvbWlzZVN0YXRlUmVqZWN0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSk7Ci0gICAgbV9z
eW1ib2xJc0NvbmNhdFNwcmVhZGFibGUuc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0
YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5pc0NvbmNhdFNwcmVh
ZGFibGVTeW1ib2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sSXRlcmF0b3Iuc2V0KG1fdm0sIFN5
bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbC5pbXBsKCkpKSk7CiAgICAgbV9zeW1ib2xNYXRjaC5zZXQo
bV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3Zt
LnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbFJlcGxh
Y2Uuc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwm
PigqbV92bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sLmltcGwoKSkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCmluZGV4IGJlZDk4OTNlODU5MGIxMjVhZjBjNzg5YjU3MWNiNzhjZTlmZDVjN2Mu
LmJiZTlhOTFiMWUzNmVlNzU2YTYxMGE5YTE0YzhiZTJjYzBmMGFlMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaApAQCAtNTMsMTEgKzUzLDkgQEAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBtYWNybyhh
cnJheUl0ZXJhdGlvbktpbmRWYWx1ZSkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZEtl
eVZhbHVlKSBcCiAgICAgbWFjcm8oTUFYX1NUUklOR19MRU5HVEgpIFwKLSAgICBtYWNybyhNQVhf
U0FGRV9JTlRFR0VSKSBcCiAgICAgbWFjcm8ocHJvbWlzZVN0YXRlUGVuZGluZykgXAogICAgIG1h
Y3JvKHByb21pc2VTdGF0ZUZ1bGZpbGxlZCkgXAogICAgIG1hY3JvKHByb21pc2VTdGF0ZVJlamVj
dGVkKSBcCi0gICAgbWFjcm8oc3ltYm9sSXNDb25jYXRTcHJlYWRhYmxlKSBcCiAgICAgbWFjcm8o
c3ltYm9sSXRlcmF0b3IpIFwKICAgICBtYWNybyhzeW1ib2xNYXRjaCkgXAogICAgIG1hY3JvKHN5
bWJvbFJlcGxhY2UpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwOTA5MWVjZjNjYjFmNTRkYTFi
OTMxZDcxZTQxYWYzMzFkMzZkMjVhLi4wOWI0ZjJlM2M3N2E2MWY5ZjUwNmI4NzY2YjM3MWM5Mzhj
NjViZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJE
RkdBYnN0cmFjdEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgpAQCAtMTAyNyw5ICsxMDI2LDYgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICB9CiAKICAgICBjYXNlIElzRW1wdHk6Ci0gICAgY2FzZSBJc0FycmF5
T2JqZWN0OgotICAgIGNhc2UgSXNKU0FycmF5OgotICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9y
OgogICAgIGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJ
c051bWJlcjoKQEAgLTEwNDIsMjggKzEwMzgsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBpZiAoY2hpbGQudmFsdWUoKSkgewogICAgICAgICAgICAgYm9vbCBjb25zdGFudFdh
c1NldCA9IHRydWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgSXNBcnJheU9iamVjdDoKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGQudmFsdWUo
KS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC52YWx1ZSgpLmdl
dE9iamVjdCgpLT50eXBlKCkgPT0gQXJyYXlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQudmFsdWUoKS5nZXRPYmplY3QoKS0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlw
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBubyB3YXkgb2Yga25vd2lu
ZyB3aGF0IHR5cGUgd2UgYXJlIHByb3hpbmcgeWV0LgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3RhbnRXYXNTZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIElzSlNBcnJheToKLSAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc09iamVjdCgpICYmIGNoaWxk
LnZhbHVlKCkuZ2V0T2JqZWN0KCktPnR5cGUoKSA9PSBBcnJheVR5cGUpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgotICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzT2Jq
ZWN0KCkgJiYgY2hpbGQudmFsdWUoKS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlD
b25zdHJ1Y3Rvcjo6aW5mbygpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIElzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbigKICAgICAgICAgICAgICAgICAgICAgY2hpbGQudmFsdWUoKS5pc0NlbGwoKQpAQCAt
MTEzMiwyMiArMTEwNiw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIAogICAg
ICAgICBib29sIGNvbnN0YW50V2FzU2V0ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICBjYXNlIElzSlNBcnJheToKLSAgICAgICAgY2FzZSBJc0FycmF5T2Jq
ZWN0OgotICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIFNwZWN1bGF0ZWRUeXBlIGZvciBQ
cm94aWVzIHlldCBzbyB3ZSBjYW4ndCBkbyBiZXR0ZXIgYXQgcHJvdmluZyBmYWxzZS4KLSAgICAg
ICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjQXJyYXkpKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgICAgICAgICBj
b25zdGFudFdhc1NldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNPYmplY3QpKSB7Ci0g
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7Ci0gICAg
ICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJc0Vt
cHR5OiB7CiAgICAgICAgICAgICBpZiAoY2hpbGQubV90eXBlICYmICEoY2hpbGQubV90eXBlICYg
U3BlY0VtcHR5KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVh
bihmYWxzZSkpOwpAQCAtMTk0NiwyMSArMTkwNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjogewotICAgICAgICBBYnN0cmFjdFZhbHVlJiBz
b3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
ZGVzdGluYXRpb24gPSBmb3JOb2RlKG5vZGUpOwotCi0gICAgICAgIGlmICghKHNvdXJjZS5tX3R5
cGUgJiB+U3BlY09iamVjdCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFu
dHModHJ1ZSk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNPYmplY3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICAgICAgCiAgICAg
Y2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAg
IGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkNjkxM2MxYTVhYTZjZTAyYTUy
YTUwMTQ4ZTc1ZjMxNzI0MjE3NDhiLi4yZjQ5ZmE1MjI5NDJkNmE2YWYwODQ0MGM5M2Y2ZDc4ODJk
ZjE1MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1l
bnQuaCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlByZWNpc2VK
dW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRTdGF0dXMuaCIKQEAgLTIxNzQsMzQgKzIxNzMsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJp
bgogICAgICAgICB9CiAgICAgfQogCi0gICAgY2FzZSBJc0FycmF5SW50cmluc2ljOiB7Ci0gICAg
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBOb2RlKiBpc0Fy
cmF5ID0gYWRkVG9HcmFwaChJc0FycmF5T2JqZWN0LCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKLSAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgaXNBcnJheSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIGNhc2UgSXNKU0FycmF5SW50cmluc2ljOiB7Ci0gICAg
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKLQotICAgICAgICBp
bnNlcnRDaGVja3MoKTsKLSAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNKU0Fy
cmF5LCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgaXNBcnJheSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGNh
c2UgSXNBcnJheUNvbnN0cnVjdG9ySW50cmluc2ljOiB7Ci0gICAgICAgIEFTU0VSVChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKLQotICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAg
ICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNBcnJheUNvbnN0cnVjdG9yLCBPcElu
Zm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
aXNBcnJheSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIGNhc2UgQ2hhckNv
ZGVBdEludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
IT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2ODEsMTYgKzI2NTIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUg
Y29uc3RydWN0aW9uIGFzIHdlbGwuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTU1OTEKLSAgICBpZiAoZnVuY3Rpb24tPmNsYXNzSW5mbygpID09IE9iamVjdENvbnN0
cnVjdG9yOjppbmZvKCkgJiYga2luZCA9PSBDb2RlRm9yQ2FsbCkgewotICAgICAgICBpbnNlcnRD
aGVja3MoKTsKLQotICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RD
b25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zm
c2V0KSkpOwotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1
bHQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KKyAgICAKICAgICBmb3IgKHVuc2ln
bmVkIHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBF
UzsgKyt0eXBlSW5kZXgpIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCiAgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBmYTc2OTQwMzFjNTJkYWM0YjYyMjM2MzFkZDAx
NzdmMzFkYWNjYjY4Li43MjY0MzlkM2U4MDUyY2I0NzA2Y2EyODJkODE5MmQ3M2JhZTQzMDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTY0LDggKzE2
NCw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6
CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgot
ICAgIGNhc2UgSXNKU0FycmF5OgotICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgogICAgIGNh
c2UgSXNFbXB0eToKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2UgSXNCb29sZWFuOgpA
QCAtMjA3LDggKzIwNSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJlYWQo
TWF0aERvdFJhbmRvbVN0YXRlKTsKICAgICAgICAgd3JpdGUoTWF0aERvdFJhbmRvbVN0YXRlKTsK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBJc0FycmF5T2JqZWN0OgorICAgICAgICAKICAg
ICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5
OgogICAgIGNhc2UgR2V0RW51bWVyYWJsZUxlbmd0aDoKQEAgLTQyNSw3ICs0MjIsNiBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYg
cmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNl
IFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNmNmMGQwYjg3M2M1
MmQxY2FjYzMwZTM3NDdjZjkzY2MxY2IxZjA2Zi4uYWYxMWUxODc3YjE3YzVhMzZlMjcxZTM3Y2Vl
OGVmNDVmZWViNTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMTU3LDkgKzE1Nyw2IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAg
ICBjYXNlIEluc3RhbmNlT2ZDdXN0b206Ci0gICAgY2FzZSBJc0FycmF5T2JqZWN0OgotICAgIGNh
c2UgSXNKU0FycmF5OgotICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgogICAgIGNhc2UgSXNF
bXB0eToKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2UgSXNCb29sZWFuOgpAQCAtMjU4
LDcgKzI1NSw2IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50
czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENhbGxPYmplY3RD
b25zdHJ1Y3RvcjoKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDBlMzM2ZWU1MTgwNTY3NWYzMDM0Zjk2ZjM4NjNlZWYx
MjJhNjU4ZjkuLmNlNTI1MjdiZjJhOTczMTFiZTA1ZTBmZmIyNDc3MDQ5ZGZiMDY1ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTA1NiwxOCAr
MTA1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCi0gICAgICAgIGNhc2Ug
Q2FsbE9iamVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxPYmpl
Y3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhpczog
ewogICAgICAgICAgICAgZml4dXBUb1RoaXMobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTE1NDgsOSArMTUzNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHJvZmlsZURpZENhbGw6
CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKLSAg
ICAgICAgY2FzZSBJc0FycmF5T2JqZWN0OgotICAgICAgICBjYXNlIElzSlNBcnJheToKLSAgICAg
ICAgY2FzZSBJc0FycmF5Q29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTgxYzc5MGExZDI0MjA0NzhlNDRmMDg2
ODUxMDlkOGFkOGMzY2U3Zi4uMzQxMTM0ZjlmMTcwOGMyZGZiNTA1MDhmZWNhYTU3NmRmNzRkYThh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzA4LDExICsz
MDgsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikgXAog
ICAgIG1hY3JvKEluc3RhbmNlT2YsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSW5z
dGFuY2VPZkN1c3RvbSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCi0g
ICAgXAotICAgIC8qIEknZCBsaWtlIHRvIGNhbGwgdGhpcyBJc0FycmF5IGJ1dCB0aGVuIHdlIGdl
dCBuYW1lc3BhY2UgcHJvYmxlbXMgd2l0aCB0aGUgaW5kZXhpbmcgdHlwZSBuYW1lLiBBbHNvLCBp
dCBpcyBtYXJrZWQgbXVzdCBnZW5lcmF0ZSBiZWNhdXNlIGl0IGNhbiB0aHJvdy4gKi8gXAotICAg
IG1hY3JvKElzQXJyYXlPYmplY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVh
bikgXAotICAgIG1hY3JvKElzSlNBcnJheSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKLSAgICBtYWNy
byhJc0FycmF5Q29uc3RydWN0b3IsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNF
bXB0eSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc1VuZGVmaW5lZCwgTm9kZVJl
c3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1bHRCb29sZWFuKSBc
CkBAIC0zMjYsNyArMzIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKExvZ2ljYWxOb3QsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVG9Qcmlt
aXRpdmUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb1N0
cmluZywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENhbGxP
YmplY3RDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
TmV3U3RyaW5nT2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhNYWtlUm9wZSwgTm9k
ZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCAwMTk4MDY2YjcyY2U5YWFjZDQ5N2Q2NjE5ZjhmNjNiYTQyZGQ4MzBkLi5hNWQwZDA0
MTRkZDlhZDc5MTAyMGIzZDA1NmYzMmM5YzczNzliMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAKLSNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNs
b25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTg3LDE5ICsxODYs
NiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcgogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKLXsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLQotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7Ci0gICAgQVNTRVJU
KCF2YWx1ZS5pc09iamVjdCgpKTsKLQotICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSk7Ci0gICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRBbmQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpA
QCAtNjk3LDIyICs2ODMsNiBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBh
c1JlZ0V4cE9iamVjdChiYXNlKS0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0K
IAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKLXsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKLQotICAgIHJldHVybiBpc0FycmF5Q29uc3RydWN0b3IoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRUYXJnZXQpKTsKLX0KLQotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNBcnJheU9i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCi17Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7Ci0KLSAgICByZXR1cm4gaXNBcnJheShleGVjLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFRhcmdldCkpOwotfQotCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggZmNhZTc1
ZThhOGIwM2JhMGMzNTY2NGE4NTExOGRjYmFkNzQwZGI1Yi4uNWE5YmMyNWEwOGVlMjdmNjg1Nzdl
OWQ3NjVmMWY4NzI2MzdkMTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKQEAgLTQxLDcgKzQxLDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KSAgV1RGX0lOVEUKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBl
ZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgIFdURl9JTlRFUk5BTDsKIAogLy8gVGhlc2Ug
cm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25z
IG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0
cnVjdG9yLCBpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxKSBXVEZfSU5URVJOQUw7CkBAIC0xMTQsOCArMTEzLDYgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJl
Z0V4cE9iamUKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmlj
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Jc0FycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNBcnJheU9iamVj
dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Nj
b3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IGludDMyX3QgbGVuZ3RoLCBpbnQzMl90IG1pbkNhcGFjaXR5KTsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSos
IElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAxNjYxZTk0YmZiZTc4MTM3MzgwMjViYjcxZDIxZWFh
NGNjN2Q0ZGEwLi44NzAwNzc1NmY4ZjhhMDk2OWI0OWFkMzI1MWVlYzUyZDgxNWMzZWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNzgzLDkgKzc4Myw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAg
ICAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgotICAgICAgICBjYXNlIElzQXJyYXlPYmplY3Q6
Ci0gICAgICAgIGNhc2UgSXNKU0FycmF5OgotICAgICAgICBjYXNlIElzQXJyYXlDb25zdHJ1Y3Rv
cjoKICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAg
ICAgICBjYXNlIElzQm9vbGVhbjoKQEAgLTgxMSwxMCArODA4LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3Ry
dWN0b3I6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAg
Y2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09i
amVjdE90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggZjliZGViOWNkMmQxOGI2MjE0M2IzNTZlNTEyODkxNmI4ZTljYzU0ZC4uNjEzNTcz
NmFmM2RhZWFjNjc3ZDkxNDFjMDlmMWI2YzRlYjk5Mzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI1OCw5ICsyNTgsNiBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIEluc3RhbmNl
T2Y6CiAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgotICAgIGNhc2UgSXNBcnJheU9iamVjdDoK
LSAgICBjYXNlIElzSlNBcnJheToKLSAgICBjYXNlIElzQXJyYXlDb25zdHJ1Y3RvcjoKICAgICBj
YXNlIElzRW1wdHk6CiAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICBjYXNlIElzQm9vbGVhbjoK
QEAgLTI3Miw3ICsyNjksNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1JlZ0V4cE9iamVj
dDoKICAgICBjYXNlIFR5cGVPZjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6Ci0gICAgY2FzZSBDYWxs
T2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKICAgICBjYXNlIFRvU3Ry
aW5nOgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAxYjQ5MmU4ZGEyNDU2MDg0MTAzMDI5
NDNiYTVlODk5MTA3ODlmNGFlLi4wNTgxYWNkMjM4MDE5MmI0ZGE2ZDg2MDU2OGFkNzFjZjVlNDZk
MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcApAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1
cnJlbnRCbG9jaygpCiAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxpbmcoKSAmJiAobWF5
RXhpdChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlKSAhPSBEb2VzTm90RXhpdCB8fCBtX2N1
cnJlbnROb2RlLT5pc1Rlcm1pbmFsKCkpKQorICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVE
RkdFeGNlcHRpb25IYW5kbGluZygpICYmIG1heUV4aXQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50
Tm9kZSkgIT0gRG9lc05vdEV4aXQpCiAgICAgICAgICAgICBtX2ppdC5qaXRSZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKIAogICAgICAgICBtX2ppdC5wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIo
KS5hcHBlbmRJdGVtKG1faml0LmxhYmVsKCksIG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTM0MDEs
NzYgKzM0MDEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkN1c3Rv
bShOb2RlKiBub2RlKQogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzSlNBcnJheShOb2RlKiBub2Rl
KQotewotICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5i
cmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKLQotICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBp
bGVyOjpFcXVhbCwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxv
YWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgIFRydXN0ZWRJ
bW0zMihBcnJheVR5cGUpLAotICAgICAgICByZXN1bHRHUFIpOwotICAgIGJsZXNzQm9vbGVhbihy
ZXN1bHRHUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0K
LSAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwotICAgIG1vdmVGYWxzZVRvKHJlc3VsdEdQUik7
Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNBcnJheU9i
amVjdChOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
ZG9uZTsKLQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbCh2YWx1ZVJlZ3MpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SlNBcnJheSA9
IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwKLSAgICAgICAgVHJ1c3RlZEltbTMyKEFycmF5VHlwZSkpOwotICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHRHUFIpOwotICAgIGRvbmUuYXBwZW5kKG1faml0
Lmp1bXAoKSk7Ci0KLSAgICBub3RKU0FycmF5LmxpbmsoJm1faml0KTsKLSAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSXNB
cnJheU9iamVjdCwgcmVzdWx0R1BSLCB2YWx1ZVJlZ3MpOwotICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGRvbmUu
YXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwotICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGZhbHNlKSwgcmVzdWx0R1BSKTsKLQotICAgIGRvbmUu
bGluaygmbV9qaXQpOwotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKLX0KLQotLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1c3QgZ2V0IHRoZSBDbGFz
c0luZm8gYW5kIGNoZWNrIGlmIGl0J3MgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjY3Ci12b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSXNBcnJheUNvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLQotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZh
bHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0Fy
cmF5Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgdmFsdWVSZWdzKTsKLSAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJc1JlZ0V4cE9iamVjdChOb2RlKiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTM0OTUsMjggKzM0MjUsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSXNSZWdFeHBPYmplY3QoTm9kZSogbm9kZSkKICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCi17Ci0gICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKLSNl
bHNlCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUsIFBheWxvYWRX
b3JkKTsKLSNlbmRpZgotCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBtX2pp
dC5tb3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHJlc3VsdEdQUik7Ci0KLSAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25PYmpl
Y3RDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgdmFsdWVSZWdzKSk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBZGQoTm9kZSogbm9k
ZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDAwZmMyMDhmMDllNjZl
NjkyOTQ3YTgxNzdmM2NmYzMwZGE0ZDdjODEuLjQzMWRiNWE5ZDMxYmYwN2RmZThhZDg2ZmFjMDMz
MzEyNmY0NzQ1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTc1MiwxMSArNzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2YoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSop
OwogCi0gICAgdm9pZCBjb21waWxlSXNKU0FycmF5KE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVJ
c0FycmF5Q29uc3RydWN0b3IoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUlzQXJyYXlPYmplY3Qo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUlzUmVnRXhwT2JqZWN0KE5vZGUqKTsKLSAgICAKKwog
ICAgIHZvaWQgZW1pdENhbGwoTm9kZSopOwogICAgIAogICAgIC8vIENhbGxlZCBvbmNlIGEgbm9k
ZSBoYXMgY29tcGxldGVkIGNvZGUgZ2VuZXJhdGlvbiBidXQgcHJpb3IgdG8gc2V0dGluZwpAQCAt
MTQ2MSwxNyArMTQ1OCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCi0gICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwotICAgIH0KLQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBnbG9iYWxPYmplY3QsIGFy
ZzEuZ3ByKCkpOwotICAgIH0KLQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsK
QEAgLTE1MTIsMTggKzE0OTgsMTAgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
VmFsdWVSZWdzIGFyZzEpCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIHJlc3VsdCwgYXJnMS5ncHIoKSk7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEpCiAgICAgewogICAgICAgICByZXR1cm4gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIGFyZzEucGF5bG9hZEdQUigpKTsK
ICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEpCi0gICAgewot
ICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdCwgYXJnMS5wYXls
b2FkR1BSKCkpOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CkBA
IC0xOTI1LDE3ICsxOTAzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVn
IGFyZzFQYXlsb2FkKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMVBheWxvYWQsIGFyZzFUYWcp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
Ci0gICAgfQotCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJh
dGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlUmVncyBhcmcxKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uLCByZXN1bHQsIGdsb2JhbE9iamVjdCwgYXJnMS50YWdHUFIoKSwgYXJn
MS5wYXlsb2FkR1BSKCkpOwotICAgIH0KLQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnKTsKQEAgLTE5NjAsMTEgKzE5MjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxLnRhZ0dQUigpLCBhcmcxLnBheWxv
YWRHUFIoKSk7Ci0gICAgfQotCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwpAQCAtMjU1NSw3
ICsyNTE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKLSAgICB2b2lkIGNvbXBp
bGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVJlc29sdmVT
Y29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcihOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxZjhlZTBkNmM4
MzE2Y2M0NmIzMDRlMDRlMTZjM2I1NzY0NTBmNTAyLi5kNzIzYTcwYjg0ZWE1NGMyYjQ5MWM4ZDUz
OGUzMGVlM2EwZGUxNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM5MjQsMTEgKzM5MjQsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGNh
c2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGNvbXBpbGVDYWxsT2JqZWN0Q29u
c3RydWN0b3Iobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKQEAgLTQ2NDYsMjEgKzQ2NDEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgSXNK
U0FycmF5OiB7Ci0gICAgICAgIGNvbXBpbGVJc0pTQXJyYXkobm9kZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgSXNBcnJheU9iamVjdDogewotICAgICAgICBjb21waWxlSXNB
cnJheU9iamVjdChub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBJc0Fy
cmF5Q29uc3RydWN0b3I6IHsKLSAgICAgICAgY29tcGlsZUlzQXJyYXlDb25zdHJ1Y3Rvcihub2Rl
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBJc09iamVjdDogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlLCBUYWdXb3JkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDY1
MGY5ODVlMDQyOGI5MTBhNzdmOGZiZDE2MmYxOWIyMTMwZDZiNDUuLmI5YTQwMGNkNjMwMDc1YTY0
NGU3OGQ2ZGRiYjhlM2EwNTNiMTM4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzkwOSwxMiArMzkwOSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBjYXNlIENh
bGxPYmplY3RDb25zdHJ1Y3RvcjogewotICAgICAgICBjb21waWxlQ2FsbE9iamVjdENvbnN0cnVj
dG9yKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KKyAgICAgICAgCiAgICAgY2FzZSBU
b1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTQ2MTEsMjEgKzQ2MDYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgSXNKU0Fy
cmF5OiB7Ci0gICAgICAgIGNvbXBpbGVJc0pTQXJyYXkobm9kZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGNhc2UgSXNBcnJheU9iamVjdDogewotICAgICAgICBjb21waWxlSXNBcnJh
eU9iamVjdChub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBJc0FycmF5
Q29uc3RydWN0b3I6IHsKLSAgICAgICAgY29tcGlsZUlzQXJyYXlDb25zdHJ1Y3Rvcihub2RlKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBJc09iamVjdDogewogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBiNTEwMmZhYTgzNDJlYTZmMWM4NjY4
MTQ3ZjJmYTMyNTkwZjE2ZTI5Li4yMWFlZTA1ZDNlYmUzZWMxM2U5MzQzMTFmZjAyMDgzNjAxMjM3
ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0xNjEsNyArMTYxLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIEdldENhbGxlZToKICAgICBj
YXNlIEdldEFyZ3VtZW50Q291bnQ6Ci0gICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAg
ICAgY2FzZSBUb1N0cmluZzoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICBj
YXNlIE1ha2VSb3BlOgpAQCAtMTc3LDkgKzE3Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBUaHJvd1Jl
ZmVyZW5jZUVycm9yOgogICAgIGNhc2UgVW5yZWFjaGFibGU6Ci0gICAgY2FzZSBJc0FycmF5T2Jq
ZWN0OgotICAgIGNhc2UgSXNKU0FycmF5OgotICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgog
ICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2UgSXNCb29s
ZWFuOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDMzMDdhMTc5M2UyMTQ1YjljYjYyNzBmNGQ3YzllYjRiMDhjZGU4MjIuLjk3YWJiODY0OGE0
NGNlODE3NTZiNjg5ODJiZWU5OGQ1YjVkZTk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ3OSw5ICs0NzksNiBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIERGRzo6Q2hlY2s6CiAgICAgICAgICAgICBjb21waWxlTm9PcCgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgotICAg
ICAgICAgICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3RvcigpOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAgICAgY29tcGlsZVRvVGhpcygpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC04NjYsMTUgKzg2Myw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSXNTdHJpbmc6CiAgICAgICAgICAgICBjb21waWxlSXNTdHJpbmcoKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIElzQXJyYXlPYmplY3Q6Ci0gICAgICAgICAgICBjb21w
aWxlSXNBcnJheU9iamVjdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSXNK
U0FycmF5OgotICAgICAgICAgICAgY29tcGlsZUlzSlNBcnJheSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgotICAgICAgICAgICAgY29tcGls
ZUlzQXJyYXlDb25zdHJ1Y3RvcigpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
SXNPYmplY3Q6CiAgICAgICAgICAgICBjb21waWxlSXNPYmplY3QoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTQ1MywyOSArMTQ0MSw2IEBAIHByaXZhdGU6CiAgICAgICAgIERGR19OT0RFX0RP
X1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAgICB9CiAKLSAgICB2
b2lkIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OwotCi0gICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzQ2VsbENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKLQot
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2Us
IHNsb3dDYXNlKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVjdCh2YWx1ZSksIHVzdWFs
bHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJ
bnRQdHIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKLSAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGNvbXBpbGVUb1RoaXMoKQogICAg
IHsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsK
QEAgLTU5MjUsNTUgKzU4OTAsNiBAQCBwcml2YXRlOgogICAgICAgICBzZXRCb29sZWFuKG1fb3V0
LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAgICAgfQog
Ci0gICAgdm9pZCBjb21waWxlSXNBcnJheU9iamVjdCgpCi0gICAgewotICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgIExCYXNpY0Js
b2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgbm90
QXJyYXlDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RD
ZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7Ci0gICAgICAgIG1f
b3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
bnN1cmUoY2VsbENhc2UpLCB1bnN1cmUoY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwgbm90QXJyYXlDYXNlKTsK
LSAgICAgICAgVmFsdWVGcm9tQmxvY2sgYXJyYXlSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQu
Ym9vbGVhblRydWUpOwotICAgICAgICBtX291dC5icmFuY2goaXNBcnJheSh2YWx1ZSwgcHJvdmVu
VHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90
QXJyYXlDYXNlKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QXJyYXlDYXNlLCBjb250
aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RBcnJheVJlc3VsdCA9IG1fb3V0
LmFuY2hvcih2bUNhbGwobV9vdXQuYm9vbGVhbiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbklz
QXJyYXlPYmplY3QpLCBtX2NhbGxGcmFtZSwgdmFsdWUpKTsKLSAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RD
ZWxsUmVzdWx0LCBhcnJheVJlc3VsdCwgbm90QXJyYXlSZXN1bHQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGNvbXBpbGVJc0pTQXJyYXkoKQotICAgIHsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7Ci0gICAgICAgIG1fb3V0LmJy
YW5jaCgKLSAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MSgpKSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwotCi0gICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihpc0FycmF5KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7Ci0gICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9v
dXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOwotICAgIH0KLQotICAgIHZv
aWQgY29tcGlsZUlzQXJyYXlDb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgIHNldEJvb2xlYW4o
dm1DYWxsKG1fb3V0LmJvb2xlYW4sIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Jc0FycmF5Q29u
c3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgdmFsdWUpKTsKLSAgICB9Ci0KICAgICB2b2lkIGNvbXBp
bGVJc09iamVjdCgpCiAgICAgewogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTAwOTgsMTUgKzEwMDE0LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIGpzVmFsdWVUb1N0cmljdEludDUyKGVkZ2UsIGxvd0pTVmFsdWUoZWRnZSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CiAgICAgfQotCi0gICAgTFZhbHVlIGlzQXJyYXko
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKLSAgICB7Ci0g
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGws
IFNwZWNBcnJheSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4g
bV9vdXQuZXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihB
cnJheVR5cGUpKTsKLSAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzT2JqZWN0KExWYWx1ZSBjZWxs
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAyMTI5NzAzMjAzMGQ0MjIxMDIyNGQ3
ZWIzMGYyZTdiNjNiZDA0NzU2Li4xYmE0MTgxZDRkOTk1NmUyN2Y3MTM5MzJjNzFlZDRiNjQwNGQz
ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTY3
LDcgKzE2Nyw2IEBAIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRp
b25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90CiB0eXBlZGVmIEpTQ2VsbCogSklU
X09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VDWkMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGlu
dDMyX3QsIEpTQ2VsbCopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9w
ZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FR0MpKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKik7Ci10eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNf
SklUT3BlcmF0aW9uX0VHSikoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSk7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VJ
Y2YpKEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FSnNjKShF
eGVjU3RhdGUqLCBKU1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDdlZWY2YjNlNWE4
ZTQ2MTdmYThiODk0OTU5YTQ4ZjQyYTQ1OWMwZWEuLjQzODIyYmU4MGNiZmExNTk2NjkwZTg3OWYx
NmY2YzIzYTA3OTkzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC01NjksNyArNTY5LDYgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRIaWRkZW5WYWx1
ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0SGlkZGVuVmFsdWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGF0YUxvZ1ZhbHVlKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RGVzY3JpYmVBcnJheShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKik7CkBAIC03NDYsOCArNzQ1LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotCi0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZGF0YUxvZ1ZhbHVlIiwgZnVuY3Rpb25E
YXRhTG9nVmFsdWUsIDEpOworICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkZWJ1
ZyIsIGZ1bmN0aW9uRGVidWcsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRlc2NyaWJl
IiwgZnVuY3Rpb25EZXNjcmliZSwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZGVzY3Jp
YmVBcnJheSIsIGZ1bmN0aW9uRGVzY3JpYmVBcnJheSwgMSk7CkBAIC04NTEsNyArODQ5LDYgQEAg
cHJvdGVjdGVkOgogICAgICAgICB9CiAKICAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGdsb2JhbEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJpbnRQcml2YXRlTmFtZSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcmludFBy
aXZhdGVOYW1lLnN0cmluZygpLCBmdW5jdGlvblByaW50KSk7CiAgICAgfQogCiAgICAgdm9pZCBh
ZGRGdW5jdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCkBAIC0xMTYwLDEyICsxMTU3LDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGF0YUxvZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBkYXRhTG9nKCJ2YWx1ZSBpczogIiwgZXhlYy0+YXJndW1lbnQoMCksICJcbiIpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDYxMTVjMWExNTkxNWFh
ODcyYWI0OWQ0N2Y1YTUxZjg2ZjM0ZGQ5ZjQuLmNhMjhiY2M0OWE2ZmZhZDEwNzliYTY5OTVhODFl
ZjU4MjFkYWMwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBB
cnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUp
OwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNw
ZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIEFjY2Vzc29yIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5LCBEb250
RW51bSwgMSwgSXNBcnJheUludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3Rv
cklzQXJyYXksIERvbnRFbnVtLCAxKTsKIH0KIAogYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC0xMzUsNyArMTM1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShF
eGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25z
dHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0FycmF5Q29uc3RydWN0b3Io
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oanNEeW5hbWljQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCmluZGV4IGJjM2FjY2M2
Njk0ZTNmNTI4OGI0YTJlNjFmNjliOWNkNzRkOTZiNTIuLjY2NDcwM2FjMzZiYTdkMTRiZTM5OTdk
NDI4ZmEyMjYxNDRiYzA0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmgKQEAgLTkxLDE0ICs5MSw2IEBAIGlubGluZSBib29sIGlzQXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLWlubGluZSBib29sIGlzQXJyYXlDb25zdHJ1Y3RvcihKU1ZhbHVl
IGFyZ3VtZW50VmFsdWUpCi17Ci0gICAgaWYgKCFhcmd1bWVudFZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1
bWVudFZhbHVlKS0+Y2xhc3NJbmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEFycmF5Q29uc3RydWN0b3JfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4
IDU3YTc3YWU2ZGMzZDRiNGNkZGEyMzdhNzFlZTM0NDIxMDA2ZjRlNjcuLmMwODUwY2ZjMmI1NzU2
YTJhNWU4YWRmYjU0Zjc4MWUxMWM0ZGIzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCi0j
aW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTUx
LDYgKzUwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0ZSopOwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0
ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhl
Y1N0YXRlKik7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZywgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgRG9udEVudW0sIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnRvTG9j
YWxlU3RyaW5nLCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nLCBEb250RW51bSwgMCk7Ci0g
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjb25jYXQiLCBhcnJh
eVByb3RvdHlwZUNvbmNhdENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiY29uY2F0IiwgYXJyYXlQcm90b0Z1bmNDb25j
YXQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oImZpbGwiLCBhcnJheVByb3RvdHlwZUZpbGxDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+am9pbiwgYXJyYXlQcm90b0Z1bmNKb2luLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwb3AiLCBhcnJheVBy
b3RvRnVuY1BvcCwgRG9udEVudW0sIDAsIEFycmF5UG9wSW50cmluc2ljKTsKQEAgLTU4OCw2ICs1
ODgsODcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4o
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoam9pbigqZXhlYywg
dGhpc09iamVjdCwgc2VwYXJhdG9yLT52aWV3KGV4ZWMpLmdldCgpKSk7CiB9CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpOworICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOworICAgIEpTVmFsdWUgY3VyQXJnID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIGlmICghY3VyQXJnKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CisgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGZpbmFsQXJyYXlTaXpl
ID0gMDsKKworICAgIC8vIFdlIG5lZWQgdG8gZG8gc3BlY2llcyBjb25zdHJ1Y3Rpb24gYmVmb3Jl
IGdldGluZyB0aGUgcmVzdCBvZiB0aGUgZWxlbWVudHMuCisgICAgc3RkOjpwYWlyPFNwZWNpZXND
b25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1
Y3RBcnJheShleGVjLCBjdXJBcmcuZ2V0T2JqZWN0KCksIDApOworICAgIGlmIChzcGVjaWVzUmVz
dWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQXJyYXkqIGN1
cnJlbnRBcnJheSA9IG51bGxwdHI7CisgICAgSlNBcnJheSogcHJldmlvdXNBcnJheSA9IG51bGxw
dHI7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgOyArK2kpIHsKKyAgICAgICAgcHJldmlvdXNB
cnJheSA9IGN1cnJlbnRBcnJheTsKKyAgICAgICAgY3VycmVudEFycmF5ID0ganNEeW5hbWljQ2Fz
dDxKU0FycmF5Kj4oY3VyQXJnKTsKKyAgICAgICAgaWYgKGN1cnJlbnRBcnJheSkgeworICAgICAg
ICAgICAgLy8gQ2FuJ3QgdXNlIEpTQXJyYXk6Omxlbmd0aCBoZXJlIGJlY2F1c2UgdGhpcyBtaWdo
dCBiZSBhIFJ1bnRpbWVBcnJheSEKKyAgICAgICAgICAgIGZpbmFsQXJyYXlTaXplICs9IGdldExl
bmd0aChleGVjLCBjdXJyZW50QXJyYXkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgKytmaW5hbEFycmF5U2l6ZTsKKyAg
ICAgICAgaWYgKGkgPT0gYXJnQ291bnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY3Vy
QXJnID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSk7CisgICAgfQorCisgICAgaWYgKGZpbmFs
QXJyYXlTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgaWYgKHNwZWNpZXNSZXN1bHQu
Zmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgYXJnQ291bnQgPT0g
MSAmJiBwcmV2aW91c0FycmF5ICYmIGN1cnJlbnRBcnJheSAmJiBmaW5hbEFycmF5U2l6ZS51bnNh
ZmVHZXQoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgSW5kZXhpbmdUeXBl
IHR5cGUgPSBKU0FycmF5OjpmYXN0Q29uY2F0VHlwZShleGVjLT52bSgpLCAqcHJldmlvdXNBcnJh
eSwgKmN1cnJlbnRBcnJheSk7CisgICAgICAgIGlmICh0eXBlICE9IE5vbkFycmF5KQorICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzQXJyYXktPmZhc3RDb25jYXRXaXRoKCpleGVjLCAqY3VycmVu
dEFycmF5KTsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BlY2llc1Jlc3VsdC5maXJzdCAhPSBTcGVj
aWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pOworCisgICAgSlNPYmplY3QqIHJlc3VsdDsK
KyAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpD
cmVhdGVkT2JqZWN0KQorICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsKKyAg
ICBlbHNlIHsKKyAgICAgICAgLy8gV2UgYWRkIHRoZSBuZXdUYXJnZXQgYmVjYXVzZSB0aGUgY29t
cGlsZXIgZ2V0cyBjb25mdXNlZCBiZXR3ZWVuIDAgYmVpbmcgYSBudW1iZXIgYW5kIGEgcG9pbnRl
ci4KKyAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCAw
LCBKU1ZhbHVlKCkpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAg
IGN1ckFyZyA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKKyAgICB1bnNpZ25lZCBuID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyA7ICsraSkgeworICAgICAgICBpZiAoSlNBcnJheSogY3VycmVudEFycmF5ID0ganNEeW5h
bWljQ2FzdDxKU0FycmF5Kj4oY3VyQXJnKSkgeworICAgICAgICAgICAgLy8gQ2FuJ3QgdXNlIEpT
QXJyYXk6Omxlbmd0aCBoZXJlIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBhIFJ1bnRpbWVBcnJheSEK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdldExlbmd0aChleGVjLCBjdXJyZW50QXJy
YXkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKKyAgICAgICAgICAgICAgICBK
U1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCBjdXJyZW50QXJyYXksIGspOworICAgICAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
dikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBuLCB2
KTsKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG4sIGN1ckFyZyk7Cisg
ICAgICAgICAgICBuKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPT0gYXJnQ291bnQpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY3VyQXJnID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoaSk7CisgICAgfQorICAgIHNldExlbmd0aChleGVjLCByZXN1bHQsIG4pOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CkBA
IC05ODgsOTIgKzEwNjksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoLTEpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUHJpdmF0ZUZ1bmNJc0pTQXJyYXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpT
VmFsdWUgdmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBpZiAodmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odmFs
dWUuZ2V0T2JqZWN0KCktPnR5cGUoKSA9PSBBcnJheVR5cGUpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotfQotCi1pbmxpbmUgYm9vbCBtb3ZlRWxlbWVu
dHMoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIHRhcmdldCwgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0LCBKU0FycmF5KiBzb3VyY2UsIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCkKLXsKLSAg
ICBBU1NFUlQoIWhhc0FueUFycmF5U3RvcmFnZShzb3VyY2UtPmluZGV4aW5nVHlwZSgpKSk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRQcm9wZXJ0eShleGVjLCBzb3VyY2UsIGkpOwotICAgICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
ICh2YWx1ZSkgewotICAgICAgICAgICAgdGFyZ2V0LT5wdXREaXJlY3RJbmRleChleGVjLCB0YXJn
ZXRPZmZzZXQgKyBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2
YXRlRnVuY0NvbmNhdE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQVNTRVJUKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotCi0gICAg
SlNBcnJheSogZmlyc3RBcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwotICAgIEpTQXJyYXkqIHNlY29uZEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0KLSAgICBpZiAoIWZpcnN0QXJyYXktPmNhbkZh
c3RDb3B5KHZtLCBzZWNvbmRBcnJheSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwotCi0gICAgQnV0dGVyZmx5KiBmaXJzdEJ1dHRlcmZseSA9IGZpcnN0QXJyYXkt
PmJ1dHRlcmZseSgpOwotICAgIEJ1dHRlcmZseSogc2Vjb25kQnV0dGVyZmx5ID0gc2Vjb25kQXJy
YXktPmJ1dHRlcmZseSgpOwotCi0gICAgdW5zaWduZWQgZmlyc3RBcnJheVNpemUgPSBmaXJzdEJ1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgc2Vjb25kQXJyYXlTaXplID0g
c2Vjb25kQnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLQotICAgIEluZGV4aW5nVHlwZSB0eXBl
ID0gZmlyc3RBcnJheS0+bWVtQ29weVdpdGhJbmRleGluZ1R5cGUoc2Vjb25kQXJyYXktPmluZGV4
aW5nVHlwZSgpKTsKLSAgICBpZiAodHlwZSA9PSBOb25BcnJheSB8fCBmaXJzdEFycmF5U2l6ZSAr
IHNlY29uZEFycmF5U2l6ZSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZmlyc3RB
cnJheVNpemUgKyBzZWNvbmRBcnJheVNpemUpOwotICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0KLSAgICAg
ICAgaWYgKCFtb3ZlRWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3RBcnJheSwgZmly
c3RBcnJheVNpemUpCi0gICAgICAgICAgICB8fCAhbW92ZUVsZW1lbnRzKGV4ZWMsIHZtLCByZXN1
bHQsIGZpcnN0QXJyYXlTaXplLCBzZWNvbmRBcnJheSwgc2Vjb25kQXJyYXlTaXplKSkgewotICAg
ICAgICAgICAgQVNTRVJUKHZtLmV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVj
dHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwotICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0cnVjdHVyZSwgZmlyc3RB
cnJheVNpemUgKyBzZWNvbmRBcnJheVNpemUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7Ci0KLSAg
ICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKLSAgICAgICAgZG91YmxlKiBidWZmZXIg
PSByZXN1bHQtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpOwotICAgICAg
ICBtZW1jcHkoYnVmZmVyLCBmaXJzdEJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEo
KSwgc2l6ZW9mKEpTVmFsdWUpICogZmlyc3RBcnJheVNpemUpOwotICAgICAgICBtZW1jcHkoYnVm
ZmVyICsgZmlyc3RBcnJheVNpemUsIHNlY29uZEJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
LmRhdGEoKSwgc2l6ZW9mKEpTVmFsdWUpICogc2Vjb25kQXJyYXlTaXplKTsKLSAgICB9IGVsc2Ug
aWYgKHR5cGUgIT0gQXJyYXlXaXRoVW5kZWNpZGVkKSB7Ci0gICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogYnVmZmVyID0gcmVzdWx0LT5idXR0ZXJmbHkoKS0+Y29udGlndW91cygpLmRhdGEo
KTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgZmlyc3RCdXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5k
YXRhKCksIHNpemVvZihKU1ZhbHVlKSAqIGZpcnN0QXJyYXlTaXplKTsKLSAgICAgICAgbWVtY3B5
KGJ1ZmZlciArIGZpcnN0QXJyYXlTaXplLCBzZWNvbmRCdXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5k
YXRhKCksIHNpemVvZihKU1ZhbHVlKSAqIHNlY29uZEFycmF5U2l6ZSk7Ci0gICAgfQotCi0gICAg
cmVzdWx0LT5idXR0ZXJmbHkoKS0+c2V0UHVibGljTGVuZ3RoKGZpcnN0QXJyYXlTaXplICsgc2Vj
b25kQXJyYXlTaXplKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0K
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5k
TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID09IDIpOwotCi0gICAgSlNBcnJheSogcmVzdWx0QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+
KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICBKU0FycmF5KiBvdGhlckFycmF5ID0g
anNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHRBcnJheS0+YXBwZW5kTWVtY3B5KGV4
ZWMsIGV4ZWMtPnZtKCksIG90aGVyQXJyYXkpKSk7Ci19Ci0KLQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXJyYXlQcm90b3R5cGUuY29uc3RydWN0b3IgV2F0Y2hwb2ludCAtLS0tLS0tLS0tLS0t
LS0tLS0KIAogY2xhc3MgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRj
aHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgK
aW5kZXggMTc2ZmMwNGM5NGVmMThkYWU3MjM4N2MxYzQ5YWI5YjQyZTE4MmJhMC4uNjRkMjE2M2Q0
ZTVhZGRmZTE3NGNmODc4M2JiYjYxMGIyYTJhNTViOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCkBAIC02NSw5ICs2NSw2IEBAIHByaXZhdGU6
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNW
YWx1ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9Qcml2YXRlRnVuY0lzSlNBcnJheShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRN
ZW1jcHkoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA5Yzg5YzVk
NzFiZGY1MjQ3MWJkOWZlODg1YWY2NTkwNWM5MjRiMzc3Li4xZDMyNTM5YTU0YTZmN2FhMmFmMWQ0
Y2E3NWViMTY4YjI0NTk5MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMxNCwxMSArMzE0LDExIEBACiAgICAgbWFjcm8o
eWllbGQpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VM
TF9LTk9XTl9TWU1CT0xfTk9UX0lNUExFTUVOVEVEX1lFVChtYWNybylcCisgICAgbWFjcm8oaXND
b25jYXRTcHJlYWRhYmxlKSBcCiAgICAgbWFjcm8ocmVwbGFjZSkgXAogCiAjZGVmaW5lIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBc
CiAgICAgbWFjcm8oaGFzSW5zdGFuY2UpIFwKLSAgICBtYWNybyhpc0NvbmNhdFNwcmVhZGFibGUp
IFwKICAgICBtYWNybyhpdGVyYXRvcikgXAogICAgIG1hY3JvKG1hdGNoKSBcCiAgICAgbWFjcm8o
cmVwbGFjZSkgXApAQCAtNDIxLDEyICs0MjEsOSBAQAogICAgIG1hY3JvKGhhc0luc3RhbmNlQm91
bmRGdW5jdGlvbikgXAogICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKICAgICBtYWNybyhpc0FycmF5
KSBcCi0gICAgbWFjcm8oaXNKU0FycmF5KSBcCiAgICAgbWFjcm8oaXNBcnJheUNvbnN0cnVjdG9y
KSBcCiAgICAgbWFjcm8oaXNDb25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0
KSBcCi0gICAgbWFjcm8oY29uY2F0TWVtY3B5KSBcCi0gICAgbWFjcm8oYXBwZW5kTWVtY3B5KSBc
CiAgICAgbWFjcm8ocHJlZGljdEZpbmFsTGVuZ3RoRnJvbUFyZ3VtdW50cykgXAogICAgIG1hY3Jv
KHByaW50KSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmgKaW5kZXggZDZmZGMxMTA2YzllZjNhNjM5MmUxNWI1MDdmOGY3OWNjNGY1
YzZhYy4uZGZkODMwMTMzMTk4ZjdjYzJjMDc5ZTgxZjdhOGFkNDJmYzJlMWYzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTU5LDkgKzU5LDYgQEAgZW51
bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIFJhbmRvbUludHJpbnNpYywKICAg
ICBGUm91bmRJbnRyaW5zaWMsCiAgICAgVHJ1bmNJbnRyaW5zaWMsCi0gICAgSXNBcnJheUludHJp
bnNpYywKLSAgICBJc0FycmF5Q29uc3RydWN0b3JJbnRyaW5zaWMsCi0gICAgSXNKU0FycmF5SW50
cmluc2ljLAogICAgIElzUmVnRXhwT2JqZWN0SW50cmluc2ljLAogICAgIEJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA0ZDI0NTBlOWRjMmJiODMzZTA5MmY3MTI5MjAzMzdkZjExMDBmZGE0
Li5hZmEwNjJmOTAzYjYwNmU1YjdiNThiYTNjYmUwZjUzYTQ2Y2RiMGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzkyLDM3ICszOTIsNiBAQCBib29s
IEpTQXJyYXk6OnNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBuZXdMZW5ndGgsIGJvbwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQXJyYXk6
OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNDOjpKU0FycmF5KiBvdGhl
ckFycmF5KQotewotICAgIGlmICghY2FuRmFzdENvcHkodm0sIG90aGVyQXJyYXkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbmRleGluZ1R5cGUgdHlwZSA9IGluZGV4aW5nVHlwZSgp
OwotICAgIGlmICh0eXBlICE9IG1lbUNvcHlXaXRoSW5kZXhpbmdUeXBlKG90aGVyQXJyYXktPmlu
ZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgb2xk
TGVuZ3RoID0gbGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgb3RoZXJMZW5ndGggPSBvdGhlckFycmF5
LT5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBvbGRMZW5ndGggKyBvdGhlckxl
bmd0aDsKLSAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBuZXdMZW5ndGgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKHR5cGUgPT0gaW5kZXhpbmdUeXBl
KCkpOwotICAgIGlmIChsZW5ndGgoKSAhPSBuZXdMZW5ndGgpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHR5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQotICAgICAgICBtZW1jcHkoYnV0dGVyZmx5KCkt
PmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCkgKyBvbGRMZW5ndGgsIG90aGVyQXJyYXktPmJ1dHRl
cmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBvdGhl
ckxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtZW1jcHkoYnV0dGVyZmx5KCktPmNvbnRpZ3Vv
dXMoKS5kYXRhKCkgKyBvbGRMZW5ndGgsIG90aGVyQXJyYXktPmJ1dHRlcmZseSgpLT5jb250aWd1
b3VzKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBvdGhlckxlbmd0aCk7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKQEAgLTc1MCw2ICs3MTksMzggQEAgSlNB
cnJheSogSlNBcnJheTo6ZmFzdFNsaWNlKEV4ZWNTdGF0ZSYgZXhlYywgdW5zaWduZWQgc3RhcnRJ
bmRleCwgdW5zaWduZWQgY291bnQKICAgICB9CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQXJyYXk6
OmZhc3RDb25jYXRXaXRoKEV4ZWNTdGF0ZSYgZXhlYywgSlNBcnJheSYgb3RoZXJBcnJheSkKK3sK
KyAgICBhdXRvIG5ld0FycmF5VHlwZSA9IGluZGV4aW5nVHlwZSgpOworCisgICAgVk0mIHZtID0g
ZXhlYy52bSgpOworICAgIEFTU0VSVChuZXdBcnJheVR5cGUgPT0gZmFzdENvbmNhdFR5cGUodm0s
ICp0aGlzLCBvdGhlckFycmF5KSk7CisKKyAgICB1bnNpZ25lZCB0aGlzQXJyYXlTaXplID0gbV9i
dXR0ZXJmbHkuZ2V0KCktPnB1YmxpY0xlbmd0aCgpOworICAgIHVuc2lnbmVkIG90aGVyQXJyYXlT
aXplID0gb3RoZXJBcnJheS5tX2J1dHRlcmZseS5nZXQoKS0+cHVibGljTGVuZ3RoKCk7CisgICAg
QVNTRVJUKHRoaXNBcnJheVNpemUgKyBvdGhlckFycmF5U2l6ZSA8IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVgpOworCisgICAgU3RydWN0dXJlKiByZXN1bHRTdHJ1Y3R1cmUgPSBleGVjLmxleGljYWxH
bG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5ld0FycmF5VHlwZSk7CisgICAgSlNBcnJheSogcmVzdWx0QXJyYXkgPSBKU0FycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCByZXN1bHRTdHJ1Y3R1cmUsIHRoaXNBcnJheVNpemUg
KyBvdGhlckFycmF5U2l6ZSk7CisgICAgaWYgKCFyZXN1bHRBcnJheSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoJmV4ZWMpKTsKKworICAgIGF1
dG8mIHJlc3VsdEJ1dHRlcmZseSA9ICpyZXN1bHRBcnJheS0+YnV0dGVyZmx5KCk7CisgICAgYXV0
byYgb3RoZXJCdXR0ZXJmbHkgPSAqb3RoZXJBcnJheS5idXR0ZXJmbHkoKTsKKyAgICBpZiAobmV3
QXJyYXlUeXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IHJl
c3VsdEJ1dHRlcmZseS5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpOworICAgICAgICBtZW1jcHko
YnVmZmVyLCBtX2J1dHRlcmZseS5nZXQoKS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKSwgc2l6
ZW9mKEpTVmFsdWUpICogdGhpc0FycmF5U2l6ZSk7CisgICAgICAgIG1lbWNweShidWZmZXIgKyB0
aGlzQXJyYXlTaXplLCBvdGhlckJ1dHRlcmZseS5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBz
aXplb2YoSlNWYWx1ZSkgKiBvdGhlckFycmF5U2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
YXV0byBidWZmZXIgPSByZXN1bHRCdXR0ZXJmbHkuY29udGlndW91cygpLmRhdGEoKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlciwgbV9idXR0ZXJmbHkuZ2V0KCktPmNvbnRpZ3VvdXMoKS5kYXRhKCks
IHNpemVvZihKU1ZhbHVlKSAqIHRoaXNBcnJheVNpemUpOworICAgICAgICBtZW1jcHkoYnVmZmVy
ICsgdGhpc0FycmF5U2l6ZSwgb3RoZXJCdXR0ZXJmbHkuY29udGlndW91cygpLmRhdGEoKSwgc2l6
ZW9mKEpTVmFsdWUpICogb3RoZXJBcnJheVNpemUpOworICAgIH0KKworICAgIHJlc3VsdEJ1dHRl
cmZseS5zZXRQdWJsaWNMZW5ndGgodGhpc0FycmF5U2l6ZSArIG90aGVyQXJyYXlTaXplKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKK30KKwogYm9vbCBKU0FycmF5
OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgs
IHVuc2lnbmVkIGNvdW50LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgdW5zaWduZWQg
b2xkTGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgKaW5kZXggNDk0YzdiNWZmMWE1MGIwMTRlMjU4ZmVmMTBjNWU4OTgwYmYxM2Jh
Ny4uYmNjNmU2NzAwMzY1NWQ4YmE5Y2I2ZTJiYTViMTkyYzY0Nzk3NDk5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVk
ZSAiQXJyYXlDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKLSNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC03OSwxMCArNzgsMTkgQEAgcHVibGljOgogCiAgICAgSlNBcnJheSogZmFz
dFNsaWNlKEV4ZWNTdGF0ZSYsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KTsK
IAotICAgIGJvb2wgY2FuRmFzdENvcHkoVk0mLCBKU0FycmF5KiBvdGhlckFycmF5KTsKLSAgICAv
LyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgTm9uQXJyYXkgaWYgdGhlIGluZGV4aW5nIHR5cGVzIGFy
ZSBub3QgY29tcGF0YWJsZSBmb3IgbWVtY3B5aW5nLgotICAgIEluZGV4aW5nVHlwZSBtZW1Db3B5
V2l0aEluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgb3RoZXIpOwotICAgIGJvb2wgYXBwZW5kTWVt
Y3B5KEV4ZWNTdGF0ZSosIFZNJiwgSlNBcnJheSogb3RoZXJBcnJheSk7CisgICAgc3RhdGljIElu
ZGV4aW5nVHlwZSBmYXN0Q29uY2F0VHlwZShWTSYgdm0sIEpTQXJyYXkmIGZpcnN0QXJyYXksIEpT
QXJyYXkmIHNlY29uZEFycmF5KQorICAgIHsKKyAgICAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBm
aXJzdEFycmF5LmluZGV4aW5nVHlwZSgpOworICAgICAgICBpZiAodHlwZSAhPSBzZWNvbmRBcnJh
eS5pbmRleGluZ1R5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25BcnJheTsKKyAgICAgICAg
aWYgKHR5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIHR5cGUgIT0gQXJyYXlXaXRoSW50MzIgJiYg
dHlwZSAhPSBBcnJheVdpdGhDb250aWd1b3VzKQorICAgICAgICAgICAgcmV0dXJuIE5vbkFycmF5
OworICAgICAgICBpZiAoZmlyc3RBcnJheS5zdHJ1Y3R1cmUodm0pLT5ob2xlc011c3RGb3J3YXJk
VG9Qcm90b3R5cGUodm0pCisgICAgICAgICAgICB8fCBzZWNvbmRBcnJheS5zdHJ1Y3R1cmUodm0p
LT5ob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUodm0pKQorICAgICAgICAgICAgcmV0dXJuIE5v
bkFycmF5OworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisgICAgRW5jb2RlZEpTVmFsdWUg
ZmFzdENvbmNhdFdpdGgoRXhlY1N0YXRlJiwgSlNBcnJheSYpOwogCiAgICAgZW51bSBTaGlmdENv
dW50TW9kZSB7CiAgICAgICAgIC8vIFRoaXMgZm9ybSBvZiBzaGlmdCBoaW50cyB0aGF0IHdlJ3Jl
IGRvaW5nIHF1ZXVlaW5nLiBXaXRoIHRoaXMgYXNzdW1wdGlvbiBpbiBoYW5kLApAQCAtMTQ0LDcg
KzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQXJyYXlU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgaW5kZXhpbmdUeXBlKTsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIGluZGV4aW5nVHlwZSk7CiAg
ICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKQEAgLTI4OSw4ICsyOTcsNyBAQCBpbmxpbmUgSlNB
cnJheSogYXNBcnJheShKU1ZhbHVlIHZhbHVlKQogCiBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlND
ZWxsKiBjZWxsKQogewotICAgIEFTU0VSVCgoY2VsbC0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6
aW5mbygpKSA9PSAoY2VsbC0+dHlwZSgpID09IEFycmF5VHlwZSkpOwotICAgIHJldHVybiBjZWxs
LT50eXBlKCkgPT0gQXJyYXlUeXBlOworICAgIHJldHVybiBjZWxsLT5jbGFzc0luZm8oKSA9PSBK
U0FycmF5OjppbmZvKCk7CiB9CiAKIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNWM4NTMxNTY5OTRiNzRiZjljYjk0Yjk4Y2IxNDRjMGU1YzY2ZWUxNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpZm5k
ZWYgSlNBcnJheUlubGluZXNfaAotI2RlZmluZSBKU0FycmF5SW5saW5lc19oCi0KLSNpbmNsdWRl
ICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSW5kZXhpbmdUeXBlIEpTQXJyYXk6Om1lbUNv
cHlXaXRoSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBvdGhlcikKLXsKLSAgICBJbmRleGluZ1R5
cGUgdHlwZSA9IGluZGV4aW5nVHlwZSgpOwotICAgIGlmICghKHR5cGUgJiBJc0FycmF5ICYmIG90
aGVyICYgSXNBcnJheSkpCi0gICAgICAgIHJldHVybiBOb25BcnJheTsKLQotICAgIGlmIChoYXNB
bnlBcnJheVN0b3JhZ2UodHlwZSkgfHwgaGFzQW55QXJyYXlTdG9yYWdlKG90aGVyKSkKLSAgICAg
ICAgcmV0dXJuIE5vbkFycmF5OwotCi0gICAgaWYgKHR5cGUgPT0gQXJyYXlXaXRoVW5kZWNpZGVk
KQotICAgICAgICByZXR1cm4gb3RoZXI7Ci0KLSAgICBpZiAob3RoZXIgPT0gQXJyYXlXaXRoVW5k
ZWNpZGVkKQotICAgICAgICByZXR1cm4gdHlwZTsKLQotICAgIC8vIFdlIGNhbiBtZW1jcHkgYW4g
SW50MzIgYW5kIGEgQ29udGlndW91cyBpbnRvIGEgQ29udGlndW91cyBhcnJheSBzaW5jZQotICAg
IC8vIGJvdGggc2hhcmUgdGhlIHNhbWUgbWVtb3J5IGxheW91dCBmb3IgSW50MzIgbnVtYmVycy4K
LSAgICBpZiAoKHR5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgdHlwZSA9PSBBcnJheVdpdGhDb250
aWd1b3VzKQotICAgICAgICAmJiAob3RoZXIgPT0gQXJyYXlXaXRoSW50MzIgfHwgb3RoZXIgPT0g
QXJyYXlXaXRoQ29udGlndW91cykpIHsKLSAgICAgICAgaWYgKG90aGVyID09IEFycmF5V2l0aENv
bnRpZ3VvdXMpCi0gICAgICAgICAgICByZXR1cm4gb3RoZXI7Ci0gICAgICAgIHJldHVybiB0eXBl
OwotICAgIH0KLQotICAgIGlmICh0eXBlICE9IG90aGVyKQotICAgICAgICByZXR1cm4gTm9uQXJy
YXk7Ci0KLSAgICByZXR1cm4gdHlwZTsKLX0KLQotYm9vbCBKU0FycmF5OjpjYW5GYXN0Q29weShW
TSYgdm0sIEpTQXJyYXkqIG90aGVyQXJyYXkpCi17Ci0gICAgaWYgKGhhc0FueUFycmF5U3RvcmFn
ZSh0aGlzLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQW55QXJyYXlTdG9yYWdlKG90aGVyQXJyYXkt
PmluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHdhdGNocG9pbnQgZm9yIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJh
eS5wcm90b3R5cGUgYW5kIE9iamVjdC5wcm90b3R5cGUKLSAgICAvLyBpbnN0ZWFkIG9mIHdhbGtp
bmcgdGhlIHByb3RvdHlwZSBjaGFpbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTU5MgotICAgIGlmIChvdGhlckFycmF5LT5zdHJ1Y3R1cmUodm0pLT5ob2xlc011
c3RGb3J3YXJkVG9Qcm90b3R5cGUodm0pCi0gICAgICAgIHx8IG90aGVyQXJyYXktPnN0cnVjdHVy
ZSh2bSktPmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZSh2bSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvKiBKU0FycmF5SW5saW5lc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZGU2MTg1MGE3MTMyM2EyODk5Y2ExMGEwZDY2
MWVhMjAwZTg5NzczYi4uMWM5MmEyMDNhYjNmOGJjY2YzODBhMTcxMTk4ZGQ4NjViZDQ1YjE4YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtNjgxLDExICs2ODEsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIEpTRnVu
Y3Rpb24qIHByaXZhdGVGdW5jSW5zdGFuY2VPZiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik7CiAgICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUpOwogICAgIEpTRnVuY3Rpb24q
IHByaXZhdGVGdW5jVGhpc051bWJlclZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZik7Ci0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3Ry
dWN0b3IsIElzQXJyYXlDb25zdHJ1Y3RvckludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJp
dmF0ZUZ1bmNJc0pTQXJyYXkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNJc0pTQXJyYXksIElzSlNBcnJheUludHJpbnNpYyk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRN
ZW1jcHkpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5ID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5j
QXBwZW5kTWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0NvbmNhdFNsb3dQYXRo
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBhcnJheVByb3RvdHlwZUNv
bmNhdFNsb3dQYXRoQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworICAgIEpTRnVuY3Rpb24qIHBy
aXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVj
dG9yKTsKIAogICAgIEpTT2JqZWN0KiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0NyZWF0ZUFycmF5SXRlcmF0b3IgPSBKU0Z1bmN0aW9u
OjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGFycmF5UHJvdG90eXBlQ3JlYXRlQXJyYXlJdGVy
YXRvckNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwpAQCAtNzEyLDYgKzcwOCw3
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPklu
ZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3Ry
dWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPm93bkVudW1lcmFibGVQcm9wZXJ0eUtleXNQ
cml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb3du
RW51bWVyYWJsZVByb3BlcnR5S2V5cyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmdldFRlbXBs
YXRlT2JqZWN0UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jR2V0VGVtcGxhdGVPYmplY3QsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmVucXVldWVKb2JQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZW5xdWV1ZUpvYiksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTcyNSw2ICs3MjIsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0
cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSGFzSW5zdGFuY2VCb3Vu
ZEZ1bmN0aW9uLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pbnN0YW5jZU9mUHJpdmF0ZU5hbWUs
IHByaXZhdGVGdW5jSW5zdGFuY2VPZiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+QnVpbHRpbkxv
Z1ByaXZhdGVOYW1lLCBidWlsdGluTG9nLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheVBy
aXZhdGVOYW1lLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OdW1i
ZXJQcml2YXRlTmFtZSwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PlJlZ0V4cFByaXZhdGVOYW1lLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5TdHJpbmdQcml2YXRlTmFtZSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTc0NywxMCArNzQ1LDYgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmlzTWFwUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
U3RyaW5nKCksIHByaXZhdGVGdW5jSXNNYXApLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc0Fy
cmF5UHJpdmF0ZU5hbWUsIGFycmF5Q29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aXNBcnJheSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXlDb25zdHJ1
Y3RvclByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+aXNKU0FycmF5UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSXNKU0FycmF5
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5jb25jYXRNZW1jcHlQcml2YXRlTmFtZSwgcHJpdmF0
ZUZ1bmNDb25jYXRNZW1jcHksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZE1lbWNweVBy
aXZhdGVOYW1lLCBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuY29uY2F0U2xvd1BhdGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y0NvbmNhdFNsb3dQYXRoLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBJdGVyYXRvclByaXZh
dGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBwcml2YXRl
RnVuY01hcEl0ZXJhdG9yKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+bWFwSXRlcmF0b3JOZXh0
UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHBy
aXZhdGVGdW5jTWFwSXRlcmF0b3JOZXh0KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuYXJyYXlJdGVyYXRvclZhbHVlTmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
QXJyYXlJdGVyYXRvclZhbHVlTmV4dCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA3NmE2YjlhOWExZDE3
MzVmYzE1NWEyMjMyYTUwMTJmNzQ0ZTIzMDAyLi4yMTkzNGJjNmIzZmU4YzM2MjFhNmRhMDJlNjMx
MTVjYmE1Y2E5NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAt
NjAsNyArNjAsNiBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFB1cmVGb3J3YXJkaW5n
UHJveHlUeXBlLAogICAgIEltcHVyZVByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVUeXBlLAotICAg
IEFycmF5VHlwZSwKICAgICBEaXJlY3RBcmd1bWVudHNUeXBlLAogICAgIFNjb3BlZEFyZ3VtZW50
c1R5cGUsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oCmluZGV4IDRkYjk4NmVjMWRiMzc5ZDQ1MjM3N2UzNDM0MzNmNTFkMGY2N2Q0NzEu
LmQxNDhhYjBmZGRhMThiMWY4NjkxNGNjNDJmNWM0N2MxYjRmMjMyODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtOTEsMTMg
KzkxLDYgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSk7
CiB9CiAKLWlubGluZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmcpCi17Ci0gICAgaWYgKGFy
Zy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7Ci0gICAgcmV0dXJuIGFy
Zy50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOwotfQotCiAvLyBTZWN0aW9uIDYuMi40LjQg
b2YgdGhlIEVTNiBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtZnJvbXByb3BlcnR5ZGVzY3JpcHRvcgogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCmluZGV4IGE0Yzg2YTcxZTYyMjcxOTMxYTEzOGRmYmFlY2ZmYjNlMmI0MzkwMDcuLjNmNDZm
ZGZhNGNiNjViZmU5N2Y5Mjg1ODYzY2I5YTY3ODA2YTkxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwKQEAgLTk1NSw3ICs5NTUsNyBAQAogLSBwYXRoOiBlczYvUHJveHlfaW50
ZXJuYWxfZ2V0X2NhbGxzX0FycmF5LmZyb20uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX0FycmF5LnByb3RvdHlwZS5jb25jYXQu
anMKLSAgY21kOiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX0FycmF5LnByb3RvdHlwZS5wb3AuanMKICAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX0Fy
cmF5LnByb3RvdHlwZS5yZXZlcnNlLmpzCkBAIC0xMTk1LDcgKzExOTUsNyBAQAogLSBwYXRoOiBl
czYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5oYXNJbnN0YW5jZS5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLmlzQ29uY2F0
U3ByZWFkYWJsZS5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWls
CiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoLmpzCiAgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wucmVw
bGFjZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJheS1jb25jYXQtc3ByZWFkLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyYXktY29uY2F0LXNwcmVhZC1vYmplY3QuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEzYjU1MWViYTkyYWExNDA5YjdiNDhlYTE0NGVkM2ZlNWFkN2E2MmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJheS1jb25jYXQtc3ByZWFkLW9iamVjdC5qcworKysg
L2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB0ZXN0cyBpcyBjb25jYXQg
c3ByZWFkYWJsZS4KLQotZnVuY3Rpb24gYXJyYXlFcShhLCBiKSB7Ci0gICAgaWYgKGEubGVuZ3Ro
ICE9PSBiLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYS5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotewot
ICAgIGxldCBvID0gezA6MSwgMToyLCAyOjMsIGxlbmd0aDozfTsKLQotICAgIC8vIFRlc3QgaXQg
d29ya3Mgd2l0aCBwcm94aWVzIGJ5IGRlZmF1bHQKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDsgaSsrKSB7Ci0gICAgICAgIGlmICghYXJyYXlFcShBcnJheS5wcm90b3R5cGUuY29uY2F0
LmNhbGwobyxvKSwgW28sb10pKQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCBub3JtYWxseSB3
aXRoIGFuIG9iamVjdCIKLSAgICB9Ci0KLSAgICAvLyBUZXN0IGl0IHdvcmtzIHdpdGggc3ByZWFk
YWJsZSB0cnVlCi0gICAgb1tTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXSA9IHRydWU7Ci0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgICAgICBsZXQgcmVzdWx0ID0g
QXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKG8sbykKLSAgICAgICAgaWYgKCFhcnJheUVxKHJl
c3VsdCwgWzEsMiwzLDEsMiwzXSkpCi0gICAgICAgICAgICB0aHJvdyAiZmFpbGVkIHdpdGggc3By
ZWFkIGdvdDogIiArIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBUZXN0IGl0IHdvcmtzIHdpdGgg
bWFueSB0aGluZ3MKLSAgICBvW1N5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVdID0gdHJ1ZTsKLSAg
ICBsZXQgb3RoZXIgPSB7fQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChvLG8sdHJ1
ZSxbMSwyXSxvdGhlcikKLSAgICAgICAgaWYgKCFhcnJheUVxKHJlc3VsdCwgWzEsMiwzLDEsMiwz
LHRydWUsMSwyLG90aGVyXSkpCi0gICAgICAgICAgICB0aHJvdyAiZmFpbGVkIHdpdGggc3ByZWFk
IGdvdDogIiArIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBUZXN0IGl0IHdvcmtzIHdpdGggc3Ry
aW5ncwotICAgIFN0cmluZy5wcm90b3R5cGVbU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZV0gPSB0
cnVlOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0
IHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbCgiaGkiLCJoaSIpCi0gICAgICAg
IC8vIFRoaXMgaXMgd2hhdCB0aGUgc3BlYyBzYXlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4uLiBE
OgotICAgICAgICBpZiAoIWFycmF5RXEocmVzdWx0LCBbImgiLCAiaSIsICJoaSJdKSkKLSAgICAg
ICAgICAgIHRocm93ICJmYWlsZWQgd2l0aCBzdHJpbmcgZ290OiAiICsgcmVzdWx0ICsgIiBvbiBp
dGVyYXRpb24gIiArIGk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJheS1jb25jYXQtc3ByZWFkLXByb3h5LWV4Y2VwdGlvbi1jaGVj
ay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXktY29uY2F0LXNw
cmVhZC1wcm94eS1leGNlcHRpb24tY2hlY2suanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgxYjA2Y2NiZDFiNmUzOTdmNWRhNmQ0NGIxMzk5YjE5ZDM5NGRhMjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJheS1jb25jYXQtc3ByZWFkLXByb3h5LWV4Y2VwdGlvbi1jaGVjay5q
cworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLWZ1bmN0aW9uIGFycmF5RXEoYSwgYikg
ewotICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGFb
aV0gIT09IGJbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi17Ci0gICAgbGV0IGNvbmNhdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQ7
Ci0gICAgbm9JbmxpbmUoY29uY2F0KTsKLSAgICBsZXQgYXJyYXkgPSBbMSwgMiwgM107Ci0gICAg
bGV0IHtwcm94eTpwLCByZXZva2V9ID0gUHJveHkucmV2b2NhYmxlKGFycmF5LCB7IGdldCA6IGZ1
bmN0aW9uKG8sIGspIHsgcmV0dXJuIG9ba107IH0gfSk7Ci0KLSAgICBjb25jYXQuY2FsbChwLHAp
OwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgICAgICBpZiAo
IWFycmF5RXEoY29uY2F0LmNhbGwocCxwKSwgWzEsMiwzLDEsMiwzXSkpCi0gICAgICAgICAgICB0
aHJvdyAiYmFkIjsKLSAgICB9Ci0gICAgcmV2b2tlKCk7Ci0gICAgZmFpbGVkID0gdHJ1ZTsKLSAg
ICB0cnkgewotICAgICAgICBjb25jYXQuY2FsbChwLHApOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgZmFpbGVkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGZhaWxlZCkKLSAgICAgICAg
dGhyb3cgImJhZCIKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJheS1jb25jYXQtc3ByZWFkLXByb3h5LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJheS1jb25jYXQtc3ByZWFkLXByb3h5LmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMmNiZDQ4ZWMyOTYzNTUwZTFiMTE4ZGMzNmQ0NTJkODc3YTJk
M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXktY29uY2F0LXNwcmVhZC1wcm94eS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB0ZXN0cyBpcyBj
b25jYXQgc3ByZWFkYWJsZS4KLQotZnVuY3Rpb24gYXJyYXlFcShhLCBiKSB7Ci0gICAgaWYgKGEu
bGVuZ3RoICE9PSBiLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LQotewotICAgIGxldCBhcnJheSA9IFsxLDIsM107Ci0gICAgbGV0IHtwcm94eTpwLCByZXZva2V9
ID0gUHJveHkucmV2b2NhYmxlKGFycmF5LCB7IGdldCA6IGZ1bmN0aW9uKG8sIGspIHsgcmV0dXJu
IG9ba107IH0gfSk7Ci0KLSAgICAvLyBUZXN0IGl0IHdvcmtzIHdpdGggcHJveGllcyBieSBkZWZh
dWx0Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgICAgICBpZiAo
IWFycmF5RXEoQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKHAscCksIFsxLDIsMywxLDIsM10p
KQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCBub3JtYWxseSB3aXRoIGEgcHJveHkiCi0gICAg
fQotCi0gICAgLy8gVGVzdCBpdCB3b3JrcyB3aXRoIHNwcmVhZGFibGUgZmFsc2UuCi0gICAgcFtT
eW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXSA9IGZhbHNlOwotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgaWYgKCFhcnJheUVxKEFycmF5LnByb3RvdHlwZS5j
b25jYXQuY2FsbChwLHApLCBbcCxwXSkpCi0gICAgICAgICAgICB0aHJvdyAiZmFpbGVkIHdpdGgg
bm8gc3ByZWFkIgotICAgIH0KLQotICAgIHBbU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZV0gPSB1
bmRlZmluZWQ7Ci0gICAgcmV2b2tlKCk7Ci0gICAgcGFzc2VkID0gdHJ1ZTsKLSAgICB0cnkgewot
ICAgICAgICBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwocCxbXSk7Ci0gICAgICAgIHBhc3Nl
ZCA9IGZhbHNlOwotICAgIH0gY2F0Y2ggKGUpIHsgfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWNvbmNhdC13aXRoLXNsb3ctaW5kZXhp
bmd0eXBlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXktY29u
Y2F0LXdpdGgtc2xvdy1pbmRleGluZ3R5cGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0OTJlZmIxZmYzYThjMjc0MTdhNTIzOGE2OWM4YjZlZGU0Yjk2MWE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyYXktY29uY2F0LXdpdGgtc2xvdy1pbmRleGluZ3R5cGVzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotZnVuY3Rpb24gYXJyYXlFcShhLCBiKSB7Ci0g
ICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYVtpXSAh
PT0gYltpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLQotewotCi0gICAgYXJyYXkgPSBbMSwyXTsKLSAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoYXJyYXksIDIsIHsgZ2V0OiAoKSA9PiB7IHJldHVybiAxOyB9IH0pOwotCi0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgICAgICBpZiAoIWFycmF5RXEoQXJy
YXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKGFycmF5LGFycmF5KSwgWzEsMiwxLDEsMiwxXSkpCi0g
ICAgICAgICAgICB0aHJvdyAiZmFpbGVkIG5vcm1hbGx5IHdpdGggYSBnZXR0ZXIiCi0gICAgICAg
IGlmICghYXJyYXlFcShBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoW10sYXJyYXkpLCBbMSwy
LDFdKSkKLSAgICAgICAgICAgIHRocm93ICJmYWlsZWQgd2l0aCB1bmRlY2lkZWQgYW5kIGEgZ2V0
dGVyIgotICAgIH0KLQotICAgIC8vIFRlc3Qgd2l0aCBpbmRleGVkIHR5cGVzIG9uIHByb3RvdHlw
ZS4KLSAgICBhcnJheSA9IFsxLDJdOwotICAgIGFycmF5Lmxlbmd0aCA9IDM7Ci0gICAgQXJyYXku
cHJvdG90eXBlWzJdID0gMTsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKysp
IHsKLSAgICAgICAgaWYgKCFhcnJheUVxKEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChhcnJh
eSxhcnJheSksIFsxLDIsMSwxLDIsMV0pKQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCBub3Jt
YWxseSB3aXRoIGFuIGluZGV4ZWQgcHJvdG90eXBlIgotICAgICAgICBpZiAoIWFycmF5RXEoQXJy
YXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKFtdLGFycmF5KSwgWzEsMiwxXSkpCi0gICAgICAgICAg
ICB0aHJvdyAiZmFpbGVkIHdpdGggdW5kZWNpZGVkIGFuZCBhbiBpbmRleGVkIHByb3RvdHlwZSIK
LSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2FycmF5LXNwZWNpZXMtY29uZmlnLWFycmF5LWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJheS1zcGVjaWVzLWNvbmZpZy1hcnJheS1jb25zdHJ1
Y3Rvci5qcwppbmRleCA4NDc3ZDViMjkzZWVhYjI2NDQ2OGE5NjM4MjQyNWM1MTY5NmIwMDg3Li5j
ZDBlZjIxYzFkYTZkMTczMzc1NDNlOGU4Yjk2NGE2MzE3MTNjODliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LXNwZWNpZXMtY29uZmlnLWFycmF5
LWNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyYXktc3BlY2llcy1jb25maWctYXJyYXktY29uc3RydWN0b3IuanMKQEAgLTE2LDkgKzE2LDYg
QEAgaWYgKCEocmVzdWx0IGluc3RhbmNlb2YgQSkpCiAKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShB
cnJheSwgU3ltYm9sLnNwZWNpZXMsIHsgdmFsdWU6IEludDMyQXJyYXksIGNvbmZpZ3VyYWJsZTog
dHJ1ZSB9KTsKIAotLy8gV2UgY2FuJ3Qgd3JpdGUgdG8gdGhlIGxlbmd0aCBwcm9wZXJ0eSBvbiBh
IHR5cGVkIGFycmF5IGJ5IGRlZmF1bHQuCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoSW50MzJBcnJh
eS5wcm90b3R5cGUsICJsZW5ndGgiLCB7IHZhbHVlOiAwLCB3cml0YWJsZTogdHJ1ZSB9KTsKLQog
cmVzdWx0ID0gZm9vLmNvbmNhdChbMV0pOwogaWYgKCEocmVzdWx0IGluc3RhbmNlb2YgSW50MzJB
cnJheSkpCiAgICAgdGhyb3cgImNvbmNhdCBmYWlsZWQiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFlN2ZmOWIxZTQwZGQ4
ZDNhMGMwZDJhNDAwZmU1NGJlNDA0YzY0OWQuLjNiYzU5ODY2Mzc1ZThlNTU5OWUwZDA2ZjI1YTkw
M2U0MmUwZTY4NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxNi0wNS0xNyAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSb2xsb3V0IHIyMDA0MjYg
c2luY2UgaXQgY2F1c2VzIFBMVCByZWdyZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzgxMgorCisgICAgICAgIFVucmV2aWV3ZWQgcm9s
bG91dCBvZiByMjAwNDI2IHNpbmNlIHRoZSBib3RzIHNlZSBhIH4uNiUgUExUIHJlZ3Jlc3Npb24g
ZnJvbSB0aGUgcGF0Y2guCisKIDIwMTYtMDUtMTcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBjb25zb2xlIG5hbWVzcGFjZSBicmVha3MgcHV0dGluZyBw
cm9wZXJ0aWVzIG9uIGNvbnNvbGUuX19wcm90b19fCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggYzhhYmRmMTUz
MzQ0MjM2YjQwZDFmMTNmNWFkMWM1MGEwNjE5YjNhYy4uMTNlNjVhYjYzN2M2MWQwM2FiMmU2NzJh
ZGU2ZDEzZTVhYjY4NWI5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93
blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNjEsNyArNjEsNyBAQCBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IpIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJv
dG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUp
IGlzIFsnY29uc3RydWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9H
MTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcs
J2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHoz
MicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdp
bXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5k
b20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVu
YyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoSlNPTikgaXMgWydwYXJzZScsICdz
dHJpbmdpZnknXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgaXMgWydm
b3InLCAnaGFzSW5zdGFuY2UnLCAnaXNDb25jYXRTcHJlYWRhYmxlJywgJ2l0ZXJhdG9yJywgJ2tl
eUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAncmVwbGFjZScs
ICdzZWFyY2gnLCAnc3BlY2llcycsICdzcGxpdCcsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1Rh
ZycsICd1bnNjb3BhYmxlcyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9s
KSBpcyBbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3Ro
JywgJ21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3JlcGxhY2UnLCAnc2VhcmNoJywgJ3Nw
ZWNpZXMnLCAnc3BsaXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJs
ZXMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbC5wcm90b3R5cGUpIGlz
IFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoTWFwKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSkgaXMgWydjbGVhcics
ICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdo
YXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
aW5kZXggNTIyOGViNmU5MGRjZDM2ZjcwYzZhMTY1OGU3MThjZDNmNjk3NDhlZi4uYzRlOWFmY2M0
Njk3ZWYyYzFiMzEzNGEzNzAwYjg2ZGYzYjFlZjgzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBA
IC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnRvTG9jYWxl
U3RyaW5nLmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnRvTG9jYWxl
U3RyaW5nLmNhbGwodW5kZWZpbmVkKScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNh
bGwodW5kZWZpbmVkLCBbXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmNvbmNhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgorUEFTUyBB
cnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwodW5kZWZpbmVkLCBbXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5
LnByb3RvdHlwZS5jb25jYXQuY2FsbCh1bmRlZmluZWQsIFtdKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUuam9pbi5jYWxsKHVuZGVmaW5lZCwgW10pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
am9pbi5jYWxsKHVuZGVmaW5lZCwgW10pJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5wb3AuY2Fs
bCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUucG9wLmNhbGwodW5kZWZpbmVk
KScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHVuZGVmaW5lZCwge30pJykuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMuanMKaW5kZXggYmExYThlY2ZiZDQwMWY1YzUyMjI0MTU2ZDk3NzYzMWUwYzkyYTBkMi4u
MWZmY2JiNDFlMjQxZWEyYWRlZTliODRmYWMxNjgwZmM0YWQ1MDZiYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisr
KyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1l
cy5qcwpAQCAtNzAsNyArNzAsNyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewog
ICAgICJFcnJvci5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUn
LCAndG9TdHJpbmcnXSIsCiAgICAgIk1hdGgiOiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScs
J0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2lu
JywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdj
b3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcs
J2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywn
cm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIs
CiAgICAgIkpTT04iOiAiWydwYXJzZScsICdzdHJpbmdpZnknXSIsCi0gICAgIlN5bWJvbCI6ICJb
J2ZvcicsICdoYXNJbnN0YW5jZScsICdpc0NvbmNhdFNwcmVhZGFibGUnLCAnaXRlcmF0b3InLCAn
a2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdyZXBsYWNl
JywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5n
VGFnJywgJ3Vuc2NvcGFibGVzJ10iLAorICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFu
Y2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3By
b3RvdHlwZScsICdyZXBsYWNlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3RvUHJp
bWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10iLAogICAgICJTeW1ib2wucHJv
dG90eXBlIjogIlsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAi
TWFwIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAgICJNYXAucHJvdG90
eXBlIjogIlsnY2xlYXInLCAnY29uc3RydWN0b3InLCAnZGVsZXRlJywgJ2VudHJpZXMnLCAnZm9y
RWFjaCcsICdnZXQnLCAnaGFzJywgJ2tleXMnLCAnc2V0JywgJ3NpemUnLCAndmFsdWVzJ10iLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>