<?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>232896</bug_id>
          
          <creation_ts>2021-11-09 11:20:20 -0800</creation_ts>
          <short_desc>[macOS] Clean up CGDisplayStreamScreenCaptureSource</short_desc>
          <delta_ts>2021-11-09 16:05:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813238</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-11-09 11:20:20 -0800</bug_when>
    <thetext>Clean up CGDisplayStreamScreenCaptureSource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813239</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 11:20:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/85211852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813241</commentid>
    <comment_count>2</comment_count>
      <attachid>443710</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-11-09 11:25:16 -0800</bug_when>
    <thetext>Created attachment 443710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813287</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-09 13:27:08 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 443710 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813382</commentid>
    <comment_count>4</comment_count>
      <attachid>443742</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-11-09 16:05:02 -0800</bug_when>
    <thetext>Created attachment 443742
Rebased patch for landing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443710</attachid>
            <date>2021-11-09 11:25:16 -0800</date>
            <delta_ts>2021-11-09 16:05:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232896-20211109112515.patch</filename>
            <type>text/plain</type>
            <size>26852</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IxNDc5MTY4MGVmZTYz
NDc1N2ZlZmE4ZGVjZjM0OWNjMTUyODUyNy4uZWRiYWM3ZjI2M2I4OWU4ZWFkMDBjNzA1MDAxNjc0
ODM0ZGQ0MGM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTExLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQ2xl
YW4gdXAgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODk2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NTIxMTg1Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gaGF2ZSBDR0Rpc3BsYXlTdHJl
YW1DYXB0dXJlU291cmNlIGFuZCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlCisg
ICAgICAgIHNvIGNvbnNvbGlkYXRlIHRoZW0uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBm
dW5jdGlvbmFsIGNoYW5nZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpkaXNwbGF5U3RyZWFtIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6
OmludmFsaWRhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OkNHRGlzcGxheVN0cmVh
bVNjcmVlbkNhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxh
eVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6ZGlzcGxh
eVJlY29uZmlndXJhdGlvbkNhbGxCYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0
cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6Om5ld0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmxlSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpj
YXB0dXJlUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbSk6CisKIDIwMjEtMTEtMDkgIFppcmFuIFN1
biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIHVwZGF0ZSB0aGUgY29u
dGVudC1zaXplZCBncmlkIHdpZHRoIGJlZm9yZSBsYXlpbmcgb3V0IGEgZ3JpZCBpdGVtIHdpdGgg
YmxvY2sgY29uc3RyYWludHMgYW5kIGFzcGVjdC1yYXRpbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggNjEyNTgzYWY2ODhhOTUyNDIzYTIzYzNlMjk2MTNhN2I3NWNjNTc3OS4uZjY1ZDE1YWVm
ZTUxYWYyZTBlMDNlMTgzNDgxNzhmNzVhNzExOWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC01MzQsNyArNTM0LDYgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1No
YXJlZFVuaXQuY3BwCi1wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjU1N2RlMTBkMDFmYjVkMDljYTMxZWU0ZDQ5NmNm
Yzc0ZDdmZDM2Li5iY2Y2OTk1NDM3NzNmNDExZGQ0NzgzZDNhYzQ1YzE1OWIxNzUxMmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MzQ2LDggKzgzNDYsNiBAQAogCQk0MTZFREJGRjI2MDBFNzg3MDAwOTI2NzUgLyogUlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFREMwMTI2MDBFN0IwMDAwOTI2NzUgLyogUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNkVEQzAzMjYwMEU4MEYwMDA5MjY3NSAvKiBSVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDRGF0YUNoYW5u
ZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQxNkY4MDdBMjQ1MDlGMzIwMEI2OEYwMiAvKiBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZGODA3
QzI0NTA5RjMzMDBCNjhGMDIgLyogQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkZEMjVEMjQwRUUxQUUwMDY2NjFE
OCAvKiBOb3dQbGF5aW5nSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
b3dQbGF5aW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFE
OEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTgwOTUsOCArMTgwOTMsNiBAQAogCQkJCTA3MDM2M0RGMTgxQTFD
REMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSAqLywKIAkJCQk0MTc3RjUxQzIz
ODI1NDQwMDBDMDQ0ODYgLyogQmFzZUF1ZGlvU2hhcmVkVW5pdC5jcHAgKi8sCiAJCQkJNDE3N0Y1
MUUyMzgyNTQ1RTAwQzA0NDg2IC8qIEJhc2VBdWRpb1NoYXJlZFVuaXQuaCAqLywKLQkJCQk0MTZG
ODA3QTI0NTA5RjMyMDBCNjhGMDIgLyogQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAg
Ki8sCi0JCQkJNDE2RjgwN0MyNDUwOUYzMzAwQjY4RjAyIC8qIENHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2UuaCAqLywKIAkJCQkwNzE3NzY1RTI2QzMwM0I3MDBBNjMyOTkgLyogQ0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oICovLAogCQkJCTA3MTc3NjVGMjZDMzAzQjcwMEE2
MzI5OSAvKiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tICovLAogCQkJCTNG
ODAyMDMxMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAqLywK
QEAgLTE4OTA3LDExICsxODkwMywxMSBAQAogCQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyog
YnJpZGdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1
OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAotCQkJCTFBNTY5Q0UyMEQ3RTJCODIw
MDdDMzk4MyAvKiBvYmpjICovLAogCQkJCTU5OUU3NThGMTEwNTVBMUYwMEQ5MDRGQSAvKiBCcmlk
Z2UuaCAqLywKIAkJCQkxQTcxRDU3OTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5j
cHAgKi8sCiAJCQkJMUE3MUQ1N0EwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuaCAq
LywKKwkJCQk1OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAorCQkJCTFBNTY5Q0Uy
MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjICovLAogCQkJCTFBNTY5Q0VGMEQ3RTJCODIwMDdDMzk4
MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2OUNGMDBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0YxMEQ3RTJCODIwMDdDMzk4MyAvKiBy
dW50aW1lX21ldGhvZC5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVy
ZVNvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YWJlNTQ2NDk2NWVi
MDhlYzk0YmFlY2I3NWU5YjI0NWM2ZjJiNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCi0K
LSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgotI2ltcG9y
dCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0jaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgotI2lt
cG9ydCAiUGxhdGZvcm1MYXllci5oIgotI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKLSNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgotI2ltcG9ydCAiUmVhbHRpbWVWaWRl
b1V0aWxpdGllcy5oIgotCi0jaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6On5DR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlKCkKLXsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Ci19
Ci0KLWJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnQoKQotewotICAgIEFM
V0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwotCi0gICAgaWYgKG1faXNS
dW5uaW5nKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBzdGFydERpc3BsYXlT
dHJlYW0oKTsKLX0KLQotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpzdG9wKCkK
LXsKLSAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKLQotICAg
IGlmICghbV9pc1J1bm5pbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2Rpc3BsYXlT
dHJlYW0pCi0gICAgICAgIENHRGlzcGxheVN0cmVhbVN0b3AobV9kaXNwbGF5U3RyZWFtLmdldCgp
KTsKLQotICAgIG1faXNSdW5uaW5nID0gZmFsc2U7Ci19Ci0KLURpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Z2Vu
ZXJhdGVGcmFtZSgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudEZyYW1lOwotfQotCi1ib29sIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCi17Ci0gICAg
aWYgKCFjaGVja0Rpc3BsYXlTdHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gY3JlYXRl
RGlzcGxheVN0cmVhbSgpOwotICAgICAgICBpZiAoIW1fZGlzcGxheVN0cmVhbSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoIW1fb2JzZXJ2aW5nRGlzcGxheUNoYW5n
ZXMpIHsKLSAgICAgICAgICAgIENHRGlzcGxheVJlZ2lzdGVyUmVjb25maWd1cmF0aW9uQ2FsbGJh
Y2soZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIG1f
b2JzZXJ2aW5nRGlzcGxheUNoYW5nZXMgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
YXV0byBlcnIgPSBDR0Rpc3BsYXlTdHJlYW1TdGFydChtX2Rpc3BsYXlTdHJlYW0uZ2V0KCkpOwot
ICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSLCAiQ0dEaXNwbGF5U3RyZWFtU3RhcnQgZmFpbGVkIHdpdGggZXJyb3IgIiwgc3RhdGlj
X2Nhc3Q8aW50PihlcnIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1f
aXNSdW5uaW5nID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCi17Ci0gICAgaWYgKG1fd2lkdGggPT0gc2V0dGlu
Z3Mud2lkdGgoKSAmJiBtX2hlaWdodCA9PSBzZXR0aW5ncy5oZWlnaHQoKSAmJiBtX2ZyYW1lUmF0
ZSA9PSBzZXR0aW5ncy5mcmFtZVJhdGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93aWR0
aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgbV9oZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsK
LSAgICBtX2ZyYW1lUmF0ZSA9IHNldHRpbmdzLmZyYW1lUmF0ZSgpOwotCi0gICAgaWYgKG1fZGlz
cGxheVN0cmVhbSkgewotICAgICAgICBDR0Rpc3BsYXlTdHJlYW1TdG9wKG1fZGlzcGxheVN0cmVh
bS5nZXQoKSk7Ci0gICAgICAgIG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgaWYgKG1faXNSdW5uaW5nKQotICAgICAgICBzdGFydERpc3BsYXlTdHJlYW0oKTsKLX0KLQot
dm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpkaXNwbGF5V2FzUmVjb25maWd1cmVk
KENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpCi17Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCEKLX0KLQotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5SUQgZGlz
cGxheSwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzLCB2b2lkICp1c2VySW5mbykK
LXsKLSAgICBpZiAodXNlckluZm8pCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dEaXNwbGF5
U3RyZWFtQ2FwdHVyZVNvdXJjZSAqPih1c2VySW5mbyktPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQo
ZGlzcGxheSwgZmxhZ3MpOwotfQotCi12b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6
Om5ld0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzIHN0YXR1cywgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4mJiBuZXdGcmFtZSkKLXsKLSAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgIGNh
c2Uga0NHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzRnJhbWVDb21wbGV0ZToKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1lSWRsZToKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1l
Qmxhbms6Ci0gICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmxlOiBrQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXNGcmFt
ZUJsYW5rIik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBrQ0dEaXNwbGF5U3RyZWFtRnJh
bWVTdGF0dXNTdG9wcGVkOgotICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJsZToga0NHRGlzcGxheVN0cmVhbUZyYW1l
U3RhdHVzU3RvcHBlZCIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRG
cmFtZSA9IFdURk1vdmUobmV3RnJhbWUpOwotfQotCi1DR0Rpc3BsYXlTdHJlYW1GcmFtZUF2YWls
YWJsZUhhbmRsZXIgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJhbWVBdmFpbGFibGVI
YW5kbGVyKCkKLXsKLSAgICBpZiAobV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIpCi0gICAgICAgIHJl
dHVybiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlci5nZXQoKTsKLQotICAgIFdlYWtQdHIgd2Vha1Ro
aXMgeyAqdGhpcyB9OwotICAgIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyID0gXihDR0Rpc3BsYXlT
dHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIHVpbnQ2NF90IGRpc3BsYXlUaW1lLCBJT1N1cmZhY2VS
ZWYgZnJhbWVTdXJmYWNlLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYgdXBkYXRlUmVmKQotICAg
IHsKLSAgICAgICAgaWYgKCFmcmFtZVN1cmZhY2UgfHwgIWRpc3BsYXlUaW1lKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHNpemVfdCBjb3VudDsKLSAgICAgICAgYXV0byogcmVjdHMg
PSBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVHZXRSZWN0cyh1cGRhdGVSZWYsIGtDR0Rpc3BsYXlTdHJl
YW1VcGRhdGVEaXJ0eVJlY3RzLCAmY291bnQpOwotICAgICAgICBpZiAoIXJlY3RzIHx8ICFjb3Vu
dCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3dlYWtUaGlzLCBzdGF0dXMsIGZyYW1lID0gcmV0YWluUHRyKGZyYW1lU3VyZmFjZSldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5uZXdGcmFtZShzdGF0dXMsIFdURk1vdmUoZnJh
bWUpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHJldHVybiBtX2ZyYW1lQXZhaWxhYmxl
SGFuZGxlci5nZXQoKTsKLX0KLQotZGlzcGF0Y2hfcXVldWVfdCBDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlOjpjYXB0dXJlUXVldWUoKQotewotICAgIGlmICghbV9jYXB0dXJlUXVldWUpCi0g
ICAgICAgIG1fY2FwdHVyZVF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoIkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgQ2FwdHVyZSBRdWV1ZSIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCkpOwotCi0gICAgcmV0dXJuIG1fY2FwdHVyZVF1ZXVlLmdldCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiMmU3N2E4YzZiZjZiYTVlMDA2
M2M0YTZhM2I1YWM1YjJhNzk5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCi0KLSNp
bmNsdWRlICJEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHRGlzcGxheUNvbmZpZ3VyYXRpb24uaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dE
aXNwbGF5U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3Qg
X19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlIDogcHVibGljIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OkNhcHR1cmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZT4gewotcHVibGljOgotICAgIGV4cGxpY2l0IENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+Q0dEaXNwbGF5U3RyZWFt
Q2FwdHVyZVNvdXJjZSgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdXNpbmcgRnJhbWVBdmFpbGFibGVD
YWxsYmFjayA9IHZvaWQgKF4pKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRfdCwg
SU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpOwotICAgIHZpcnR1YWwgUmV0
YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVhbSgpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgY2hlY2tEaXNwbGF5U3RyZWFtKCkgeyByZXR1cm4gdHJ1ZTsgfQotCi0g
ICAgQ0dEaXNwbGF5U3RyZWFtUmVmIGRpc3BsYXlTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlTdHJlYW0uZ2V0KCk7IH0KLSAgICB2b2lkIGludmFsaWRhdGVEaXNwbGF5U3RyZWFtKCkg
eyBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOyB9Ci0KLSAgICBGcmFtZUF2YWlsYWJsZUNhbGxi
YWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlcigpOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgY2FwdHVy
ZVF1ZXVlKCk7Ci0KLSAgICB1aW50MzJfdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7
IH0KLSAgICB1aW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAg
IGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0KLXByaXZh
dGU6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNrKENHRGly
ZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MsIHZvaWQqKTsKLQotICAg
IC8vIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyCi0gICAgYm9vbCBzdGFydCgp
IGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwotICAgIHZvaWQg
Y29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBm
aW5hbDsKLQotICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJ
RCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKLSAgICBib29sIHN0YXJ0RGlzcGxheVN0
cmVhbSgpOwotCi0gICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywg
UmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJik7Ci0KLSAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVm
PiBtX2N1cnJlbnRGcmFtZTsKLSAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBtX2Rp
c3BsYXlTdHJlYW07Ci0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9jYXB0dXJl
UXVldWU7Ci0gICAgQmxvY2tQdHI8dm9pZChDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWlu
dDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRlUmVmKT4gbV9mcmFtZUF2
YWlsYWJsZUhhbmRsZXI7Ci0KLSAgICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9OwotICAgIHVpbnQz
Ml90IG1faGVpZ2h0IHsgMCB9OwotICAgIGZsb2F0IG1fZnJhbWVSYXRlIHsgMCB9OwotCi0gICAg
Ym9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX29ic2VydmluZ0Rpc3BsYXlD
aGFuZ2VzIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDgxYzliNzdiNTBk
MTA5NTczMzFhMmNmMmYxZjU1Mzg3YzZiOTAwNGUuLjU1NWFhZDM5Zjg4YzczYWEzMWMyOWY3MjAy
NGRkOWFlZTIzM2U4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlLmgiCisjaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIgogI2lu
Y2x1ZGUgIklPU3VyZmFjZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Rpc3BsYXlDb25m
aWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlzcGxheVN0cmVhbS5oPgot
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4
ZWxCdWZmZXJSZWY7CkBAIC0zOSw3ICszOSw5IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgeworY2xhc3MgQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZQorICAgIDogcHVibGljIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNh
cHR1cmVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBFeHBlY3RlZDxVbmlxdWVSZWY8
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+LCBTdHJpbmc+IGNyZWF0ZShjb25z
dCBTdHJpbmcmKTsKIApAQCAtNTAsMjIgKzUyLDQ0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mKTsKIAogcHJpdmF0
ZToKKyAgICBzdGF0aWMgdm9pZCBkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJl
Y3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwogCiAgICAg
Ly8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIKICAgICBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9y
OyB9CiAgICAgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7Ci0jaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgYm9vbCBzdGFydCgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgp
IGZpbmFsOworICAgIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUg
Z2VuZXJhdGVGcmFtZSgpIGZpbmFsOworICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbDsKKwogICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJDR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlIjsgfQotI2VuZGlmCiAKLSAgICAvLyBDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlCi0gICAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxh
eVN0cmVhbSgpIGZpbmFsOwotICAgIGJvb2wgY2hlY2tEaXNwbGF5U3RyZWFtKCkgZmluYWw7Cisg
ICAgdXNpbmcgRnJhbWVBdmFpbGFibGVDYWxsYmFjayA9IHZvaWQgKF4pKENHRGlzcGxheVN0cmVh
bUZyYW1lU3RhdHVzLCB1aW50NjRfdCwgSU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRh
dGVSZWYpOworICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlT
dHJlYW0oKTsKKyAgICBDR0Rpc3BsYXlTdHJlYW1SZWYgZGlzcGxheVN0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheVN0cmVhbS5nZXQoKTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZURpc3Bs
YXlTdHJlYW0oKSB7IG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGRpc3Bs
YXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1h
cnlGbGFncyk7CisgICAgYm9vbCBzdGFydERpc3BsYXlTdHJlYW0oKTsKKyAgICBib29sIGNoZWNr
RGlzcGxheVN0cmVhbSgpOworCisgICAgdm9pZCBuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFt
ZVN0YXR1cywgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4mJik7CiAKKyAgICBGcmFtZUF2YWlsYWJs
ZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlcigpOworICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
Y2FwdHVyZVF1ZXVlKCk7CisKKyAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX2N1cnJlbnRG
cmFtZTsKICAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBtX2Rpc3BsYXlTdHJlYW07
CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9jYXB0dXJlUXVldWU7CisgICAg
QmxvY2tQdHI8dm9pZChDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3Vy
ZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRlUmVmKT4gbV9mcmFtZUF2YWlsYWJsZUhhbmRs
ZXI7CiAKICAgICB1aW50MzJfdCBtX2Rpc3BsYXlJRCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX3dp
ZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OworICAgIGZsb2F0IG1fZnJh
bWVSYXRlIHsgMCB9OworCisgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX29ic2VydmluZ0Rpc3BsYXlDaGFuZ2VzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2UubW0KaW5kZXggYmY4OGIxYWE3Y2M4YzllYzEyMjFkNmJmY2ZkOTQyYzhjNjZlNzQ4
Zi4uMTI1MjlkZWUzNWZkYzljZTRmMWM2YWJiODdlOWRjZDc2YmZhMTJkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNj
cmVlbkNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KQEAgLTg5LDEx
ICs4OSwxNDkgQEAgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
OkNhcHR1cmVyPiwgU3RyaW5nPiBDR0Rpc3BsYXlTdHJlYW0KIH0KIAogQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSh1
aW50MzJfdCBkaXNwbGF5SUQpCi0gICAgOiBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlKCkK
KyAgICA6IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyKCkKICAgICAsIG1fZGlz
cGxheUlEKGRpc3BsYXlJRCkKIHsKIH0KIAorYm9vbCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0
dXJlU291cmNlOjpzdGFydCgpCit7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9H
SURFTlRJRklFUik7CisKKyAgICBpZiAobV9pc1J1bm5pbmcpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIHN0YXJ0RGlzcGxheVN0cmVhbSgpOworfQorCit2b2lkIENHRGlzcGxh
eVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnN0b3AoKQoreworICAgIEFMV0FZU19MT0dfSUYo
bG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOworCisgICAgaWYgKCFtX2lzUnVubmluZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGlzcGxheVN0cmVhbSkKKyAgICAgICAgQ0dEaXNw
bGF5U3RyZWFtU3RvcChtX2Rpc3BsYXlTdHJlYW0uZ2V0KCkpOworCisgICAgbV9pc1J1bm5pbmcg
PSBmYWxzZTsKK30KKworRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlw
ZSBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50RnJhbWU7Cit9CisKK2Jvb2wgQ0dEaXNwbGF5U3RyZWFtU2Ny
ZWVuQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKCkKK3sKKyAgICBpZiAoIWNoZWNr
RGlzcGxheVN0cmVhbSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fZGlz
cGxheVN0cmVhbSkgeworICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBjcmVhdGVEaXNwbGF5U3Ry
ZWFtKCk7CisgICAgICAgIGlmICghbV9kaXNwbGF5U3RyZWFtKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGlmICghbV9vYnNlcnZpbmdEaXNwbGF5Q2hhbmdlcykgeworICAg
ICAgICAgICAgQ0dEaXNwbGF5UmVnaXN0ZXJSZWNvbmZpZ3VyYXRpb25DYWxsYmFjayhkaXNwbGF5
UmVjb25maWd1cmF0aW9uQ2FsbEJhY2ssIHRoaXMpOworICAgICAgICAgICAgbV9vYnNlcnZpbmdE
aXNwbGF5Q2hhbmdlcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGVyciA9
IENHRGlzcGxheVN0cmVhbVN0YXJ0KG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7CisgICAgaWYgKGVy
cikgeworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJD
R0Rpc3BsYXlTdHJlYW1TdGFydCBmYWlsZWQgd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+
KGVycikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9pc1J1bm5pbmcg
PSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAobV93aWR0aCA9PSBzZXR0aW5ncy53
aWR0aCgpICYmIG1faGVpZ2h0ID09IHNldHRpbmdzLmhlaWdodCgpICYmIG1fZnJhbWVSYXRlID09
IHNldHRpbmdzLmZyYW1lUmF0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dpZHRoID0g
c2V0dGluZ3Mud2lkdGgoKTsKKyAgICBtX2hlaWdodCA9IHNldHRpbmdzLmhlaWdodCgpOworICAg
IG1fZnJhbWVSYXRlID0gc2V0dGluZ3MuZnJhbWVSYXRlKCk7CisKKyAgICBpZiAobV9kaXNwbGF5
U3RyZWFtKSB7CisgICAgICAgIENHRGlzcGxheVN0cmVhbVN0b3AobV9kaXNwbGF5U3RyZWFtLmdl
dCgpKTsKKyAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBp
ZiAobV9pc1J1bm5pbmcpCisgICAgICAgIHN0YXJ0RGlzcGxheVN0cmVhbSgpOworfQorCit2b2lk
IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmRpc3BsYXlXYXNSZWNvbmZpZ3Vy
ZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncykKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCit2b2lkIENHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2U6OmRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERpc3Bs
YXlJRCBkaXNwbGF5LCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MsIHZvaWQgKnVz
ZXJJbmZvKQoreworICAgIGlmICh1c2VySW5mbykKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxD
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlICo+KHVzZXJJbmZvKS0+ZGlzcGxheVdh
c1JlY29uZmlndXJlZChkaXNwbGF5LCBmbGFncyk7Cit9CisKK3ZvaWQgQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6bmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMg
c3RhdHVzLCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYmIG5ld0ZyYW1lKQoreworICAgIHN3aXRj
aCAoc3RhdHVzKSB7CisgICAgY2FzZSBrQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXNGcmFtZUNv
bXBsZXRlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2Uga0NHRGlzcGxheVN0cmVhbUZyYW1l
U3RhdHVzRnJhbWVJZGxlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2Uga0NHRGlzcGxheVN0
cmVhbUZyYW1lU3RhdHVzRnJhbWVCbGFuazoKKyAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAi
Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6ZnJhbWVBdmFpbGFibGU6IGtDR0Rp
c3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1lQmxhbmsiKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c1N0b3BwZWQ6CisgICAgICAgIFJFTEVB
U0VfTE9HKFdlYlJUQywgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmZyYW1l
QXZhaWxhYmxlOiBrQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXNTdG9wcGVkIik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIG1fY3VycmVudEZyYW1lID0gV1RGTW92ZShuZXdGcmFtZSk7
Cit9CisKK0NHRGlzcGxheVN0cmVhbUZyYW1lQXZhaWxhYmxlSGFuZGxlciBDR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKQoreworICAgIGlm
IChtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVBdmFpbGFi
bGVIYW5kbGVyLmdldCgpOworCisgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07CisgICAg
bV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIgPSBeKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzIHN0
YXR1cywgdWludDY0X3QgZGlzcGxheVRpbWUsIElPU3VyZmFjZVJlZiBmcmFtZVN1cmZhY2UsIENH
RGlzcGxheVN0cmVhbVVwZGF0ZVJlZiB1cGRhdGVSZWYpCisgICAgeworICAgICAgICBpZiAoIWZy
YW1lU3VyZmFjZSB8fCAhZGlzcGxheVRpbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgc2l6ZV90IGNvdW50OworICAgICAgICBhdXRvKiByZWN0cyA9IENHRGlzcGxheVN0cmVhbVVw
ZGF0ZUdldFJlY3RzKHVwZGF0ZVJlZiwga0NHRGlzcGxheVN0cmVhbVVwZGF0ZURpcnR5UmVjdHMs
ICZjb3VudCk7CisgICAgICAgIGlmICghcmVjdHMgfHwgIWNvdW50KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHN0YXR1
cywgZnJhbWUgPSByZXRhaW5QdHIoZnJhbWVTdXJmYWNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
d2Vha1RoaXMtPm5ld0ZyYW1lKHN0YXR1cywgV1RGTW92ZShmcmFtZSkpOworICAgICAgICB9KTsK
KyAgICB9OworCisgICAgcmV0dXJuIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyLmdldCgpOworfQor
CitkaXNwYXRjaF9xdWV1ZV90IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNh
cHR1cmVRdWV1ZSgpCit7CisgICAgaWYgKCFtX2NhcHR1cmVRdWV1ZSkKKyAgICAgICAgbV9jYXB0
dXJlUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiQ0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSBDYXB0dXJlIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVf
U0VSSUFMKSk7CisKKyAgICByZXR1cm4gbV9jYXB0dXJlUXVldWUuZ2V0KCk7Cit9CisKIGJvb2wg
Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y2hlY2tEaXNwbGF5U3RyZWFtKCkK
IHsKICAgICBhdXRvIGFjdHVhbERpc3BsYXlJRCA9IHVwZGF0ZURpc3BsYXlJRChtX2Rpc3BsYXlJ
RCk7CkBAIC0xMTgsOCArMjU2LDggQEAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVMKICAgICBBU1NF
UlQoIWRpc3BsYXlTdHJlYW0oKSk7CiAgICAgQVNTRVJUKG1fZGlzcGxheUlEID09IHVwZGF0ZURp
c3BsYXlJRChtX2Rpc3BsYXlJRCkpOwogCi0gICAgYXV0byB3aWR0aCA9IHRoaXMtPndpZHRoKCk7
Ci0gICAgYXV0byBoZWlnaHQgPSB0aGlzLT5oZWlnaHQoKTsKKyAgICBhdXRvIHdpZHRoID0gbV93
aWR0aDsKKyAgICBhdXRvIGhlaWdodCA9IG1faGVpZ2h0OwogICAgIGlmICghd2lkdGggfHwgIWhl
aWdodCkgewogICAgICAgICBhdXRvIGRpc3BsYXlNb2RlID0gYWRvcHRDRihDR0Rpc3BsYXlDb3B5
RGlzcGxheU1vZGUobV9kaXNwbGF5SUQpKTsKICAgICAgICAgd2lkdGggPSBDR0Rpc3BsYXlNb2Rl
R2V0UGl4ZWxzV2lkZShkaXNwbGF5TW9kZS5nZXQoKSk7CkBAIC0xMjksMTEgKzI2NywxNCBAQCBS
ZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlOjpjcmVhdGVEaXNwbGF5UwogICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCks
IExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZ2V0IHNjcmVlbiB3aWR0aC9oZWlnaHQiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChmcmFtZVJhdGUoKSk7Ci0g
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImZyYW1lIHJhdGUg
IiwgZnJhbWVSYXRlKCksICIsIHNpemUgIiwgd2lkdGgsICJ4IiwgaGVpZ2h0KTsKKyAgICBBU1NF
UlQobV9mcmFtZVJhdGUpOworICAgIGlmICghbV9mcmFtZVJhdGUpCisgICAgICAgIG1fZnJhbWVS
YXRlID0gMzA7CisKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVS
LCAiZnJhbWUgcmF0ZSAiLCBtX2ZyYW1lUmF0ZSwgIiwgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWln
aHQpOwogCiAgICAgTlNEaWN0aW9uYXJ5KiBzdHJlYW1PcHRpb25zID0gQHsKLSAgICAgICAgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRpbWUgOiBAKDEg
LyBmcmFtZVJhdGUoKSksCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlT
dHJlYW1NaW5pbXVtRnJhbWVUaW1lIDogQCgxIC8gbV9mcmFtZVJhdGUpLAogICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFtUXVldWVEZXB0aCA6IEAoc2NyZWVuUXVl
dWVNYXhpbXVtTGVuZ3RoKSwKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxh
eVN0cmVhbUNvbG9yU3BhY2UgOiAoX19icmlkZ2UgaWQpc1JHQkNvbG9yU3BhY2VSZWYoKSwKICAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbVNob3dDdXJzb3IgOiBA
WUVTLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443742</attachid>
            <date>2021-11-09 16:05:02 -0800</date>
            <delta_ts>2021-11-09 16:05:02 -0800</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>bug-232896-20211109160501.patch</filename>
            <type>text/plain</type>
            <size>26772</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MwYzA2NjM2MTc4MjI5
ZWM3NGQ1MWUyZGI1OGQ2NzY2MjljMTJmZS4uMWMxYzJkNWRiMDI2YjM3MmFhNDU5MzkyZGZjZDkz
OWNmODY1ODE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTExLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQ2xl
YW4gdXAgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODk2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NTIxMTg1Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisgICAg
ICAgIAorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGhhdmUgQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZSBhbmQgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZQorICAgICAg
ICBzbyBjb25zb2xpZGF0ZSB0aGVtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rp
b25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dE
aXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheVN0cmVhbSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnZh
bGlkYXRlRGlzcGxheVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3Jl
OjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpDR0Rpc3BsYXlTdHJlYW1TY3Jl
ZW5DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVh
bVNjcmVlbkNhcHR1cmVTb3VyY2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpzdGFydERpc3BsYXlTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZTo6Y29tbWl0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmRpc3BsYXlSZWNv
bmZpZ3VyYXRpb25DYWxsQmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlOjpuZXdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y2FwdHVy
ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVT
b3VyY2U6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorCiAyMDIxLTExLTA5ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI4NTI0Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYxMjU4M2FmNjg4YTk1MjQy
M2EyM2MzZTI5NjEzYTdiNzVjYzU3NzkuLmY2NWQxNWFlZmU1MWFmMmUwZTAzZTE4MzQ4MTc4Zjc1
YTcxMTljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNTM0LDcgKzUzNCw2IEBAIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmNwcAotcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5tbQog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNWVjZDUxNjVjNjU3ZDlmMGM0NzRjMTZiYmM2MTdiMjA5OTUzMDhkNy4uNTM0ZWM1ODc4Njg1
ODQzMGMxYTdiMTc2OWViYTE2OTkzNzhlNzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODM0NCw4ICs4MzQ0LDYgQEAKIAkJ
NDE2RURCRkYyNjAwRTc4NzAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RURDMDEyNjAwRTdCMDAwMDkyNjc1
IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFREMwMzI2MDBFODBGMDAwOTI2
NzUgLyogUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZGODA3QTI0NTA5RjMyMDBCNjhG
MDIgLyogQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE2RjgwN0MyNDUwOUYzMzAwQjY4RjAyIC8qIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTZGRDI1RDI0MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm93UGxheWluZ0luZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9N
V3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdy
YXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJD
MDAzNjBGMkEgLyogTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDk1
LDggKzE4MDkzLDYgQEAKIAkJCQkwNzAzNjNERjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0gKi8sCiAJCQkJNDE3N0Y1MUMyMzgyNTQ0MDAwQzA0NDg2IC8qIEJhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwICovLAogCQkJCTQxNzdGNTFFMjM4MjU0NUUwMEMwNDQ4NiAvKiBC
YXNlQXVkaW9TaGFyZWRVbml0LmggKi8sCi0JCQkJNDE2RjgwN0EyNDUwOUYzMjAwQjY4RjAyIC8q
IENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwICovLAotCQkJCTQxNkY4MDdDMjQ1MDlG
MzMwMEI2OEYwMiAvKiBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmggKi8sCiAJCQkJMDcx
Nzc2NUUyNkMzMDNCNzAwQTYzMjk5IC8qIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UuaCAqLywKIAkJCQkwNzE3NzY1RjI2QzMwM0I3MDBBNjMyOTkgLyogQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSAqLywKIAkJCQkzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQg
LyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgKi8sCkBAIC0xODkwNywxMSArMTg5MDMsMTEg
QEAKIAkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8qIGJyaWRnZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTlCNTk3NzExMTA4NjU1NjAwNzE1OUU4
IC8qIGpzYyAqLywKKwkJCQkxQTU2OUNFMjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqYyAqLywKIAkJ
CQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8sCiAJCQkJMUE3MUQ1Nzkw
RjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3BwICovLAogCQkJCTFBNzFENTdBMEYz
MzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmggKi8sCi0JCQkJNTlCNTk3NzExMTA4NjU1
NjAwNzE1OUU4IC8qIGpzYyAqLywKLQkJCQkxQTU2OUNFMjBEN0UyQjgyMDA3QzM5ODMgLyogb2Jq
YyAqLywKIAkJCQkxQTU2OUNFRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAg
Ki8sCiAJCQkJMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywK
IAkJCQkxQTU2OUNGMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlz
cGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NmFiZTU0NjQ5NjVlYjA4ZWM5NGJhZWNiNzVlOWIyNDVjNmYy
YjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oIgotCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgotI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNp
bXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKLSNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgotI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIK
LSNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaCIKLSNpbXBvcnQgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIKLQotI2ltcG9y
dCAiQ29yZVZpZGVvU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DR0Rpc3Bs
YXlTdHJlYW1DYXB0dXJlU291cmNlOjp+Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgpCi17
Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwotfQotCi1ib29sIENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2U6OnN0YXJ0KCkKLXsKLSAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigp
LCBMT0dJREVOVElGSUVSKTsKLQotICAgIGlmIChtX2lzUnVubmluZykKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXR1cm4gc3RhcnREaXNwbGF5U3RyZWFtKCk7Ci19Ci0KLXZvaWQgQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RvcCgpCi17Ci0gICAgQUxXQVlTX0xPR19JRihs
b2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIW1faXNSdW5uaW5nKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kaXNwbGF5U3RyZWFtKQotICAgICAgICBDR0Rpc3Bs
YXlTdHJlYW1TdG9wKG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7Ci0KLSAgICBtX2lzUnVubmluZyA9
IGZhbHNlOwotfQotCi1EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBl
IENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQotewotICAgIHJl
dHVybiBtX2N1cnJlbnRGcmFtZTsKLX0KLQotYm9vbCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlOjpzdGFydERpc3BsYXlTdHJlYW0oKQotewotICAgIGlmICghY2hlY2tEaXNwbGF5U3RyZWFt
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbV9kaXNwbGF5U3RyZWFtKSB7
Ci0gICAgICAgIG1fZGlzcGxheVN0cmVhbSA9IGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKLSAgICAg
ICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgaWYgKCFtX29ic2VydmluZ0Rpc3BsYXlDaGFuZ2VzKSB7Ci0gICAgICAgICAgICBDR0Rp
c3BsYXlSZWdpc3RlclJlY29uZmlndXJhdGlvbkNhbGxiYWNrKGRpc3BsYXlSZWNvbmZpZ3VyYXRp
b25DYWxsQmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBtX29ic2VydmluZ0Rpc3BsYXlDaGFuZ2Vz
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gZXJyID0gQ0dEaXNwbGF5U3Ry
ZWFtU3RhcnQobV9kaXNwbGF5U3RyZWFtLmdldCgpKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkNHRGlzcGxheVN0cmVh
bVN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4oZXJyKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2lzUnVubmluZyA9IHRydWU7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Y29t
bWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKQotewotICAgIGlmIChtX3dpZHRoID09IHNldHRpbmdzLndpZHRoKCkgJiYgbV9oZWlnaHQg
PT0gc2V0dGluZ3MuaGVpZ2h0KCkgJiYgbV9mcmFtZVJhdGUgPT0gc2V0dGluZ3MuZnJhbWVSYXRl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOwot
ICAgIG1faGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Ci0gICAgbV9mcmFtZVJhdGUgPSBzZXR0
aW5ncy5mcmFtZVJhdGUoKTsKLQotICAgIGlmIChtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAg
Q0dEaXNwbGF5U3RyZWFtU3RvcChtX2Rpc3BsYXlTdHJlYW0uZ2V0KCkpOwotICAgICAgICBtX2Rp
c3BsYXlTdHJlYW0gPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmIChtX2lzUnVubmluZykKLSAg
ICAgICAgc3RhcnREaXNwbGF5U3RyZWFtKCk7Ci19Ci0KLXZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZTo6ZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dE
aXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQhCi19
Ci0KLXZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheVJlY29uZmlndXJh
dGlvbkNhbGxCYWNrKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXksIENHRGlzcGxheUNoYW5nZVN1
bW1hcnlGbGFncyBmbGFncywgdm9pZCAqdXNlckluZm8pCi17Ci0gICAgaWYgKHVzZXJJbmZvKQot
ICAgICAgICByZWludGVycHJldF9jYXN0PENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgKj4o
dXNlckluZm8pLT5kaXNwbGF5V2FzUmVjb25maWd1cmVkKGRpc3BsYXksIGZsYWdzKTsKLX0KLQot
dm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpuZXdGcmFtZShDR0Rpc3BsYXlTdHJl
YW1GcmFtZVN0YXR1cyBzdGF0dXMsIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiYgbmV3RnJhbWUp
Ci17Ci0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFt
ZVN0YXR1c0ZyYW1lQ29tcGxldGU6Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBrQ0dEaXNw
bGF5U3RyZWFtRnJhbWVTdGF0dXNGcmFtZUlkbGU6Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBrQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXNGcmFtZUJsYW5rOgotICAgICAgICBSRUxFQVNF
X0xPRyhXZWJSVEMsICJDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJs
ZToga0NHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzRnJhbWVCbGFuayIpOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2Uga0NHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzU3RvcHBlZDoKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZnJh
bWVBdmFpbGFibGU6IGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c1N0b3BwZWQiKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbV9jdXJyZW50RnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1l
KTsKLX0KLQotQ0dEaXNwbGF5U3RyZWFtRnJhbWVBdmFpbGFibGVIYW5kbGVyIENHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmxlSGFuZGxlcigpCi17Ci0gICAgaWYgKG1f
ZnJhbWVBdmFpbGFibGVIYW5kbGVyKQotICAgICAgICByZXR1cm4gbV9mcmFtZUF2YWlsYWJsZUhh
bmRsZXIuZ2V0KCk7Ci0KLSAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKLSAgICBtX2Zy
YW1lQXZhaWxhYmxlSGFuZGxlciA9IF4oQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMgc3RhdHVz
LCB1aW50NjRfdCBkaXNwbGF5VGltZSwgSU9TdXJmYWNlUmVmIGZyYW1lU3VyZmFjZSwgQ0dEaXNw
bGF5U3RyZWFtVXBkYXRlUmVmIHVwZGF0ZVJlZikKLSAgICB7Ci0gICAgICAgIGlmICghZnJhbWVT
dXJmYWNlIHx8ICFkaXNwbGF5VGltZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBz
aXplX3QgY291bnQ7Ci0gICAgICAgIGF1dG8qIHJlY3RzID0gQ0dEaXNwbGF5U3RyZWFtVXBkYXRl
R2V0UmVjdHModXBkYXRlUmVmLCBrQ0dEaXNwbGF5U3RyZWFtVXBkYXRlRGlydHlSZWN0cywgJmNv
dW50KTsKLSAgICAgICAgaWYgKCFyZWN0cyB8fCAhY291bnQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc3RhdHVzLCBm
cmFtZSA9IHJldGFpblB0cihmcmFtZVN1cmZhY2UpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFr
VGhpcy0+bmV3RnJhbWUoc3RhdHVzLCBXVEZNb3ZlKGZyYW1lKSk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICByZXR1cm4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIuZ2V0KCk7Ci19Ci0KLWRp
c3BhdGNoX3F1ZXVlX3QgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVF1ZXVl
KCkKLXsKLSAgICBpZiAoIW1fY2FwdHVyZVF1ZXVlKQotICAgICAgICBtX2NhcHR1cmVRdWV1ZSA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJDR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlIENhcHR1cmUgUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKLQotICAg
IHJldHVybiBtX2NhcHR1cmVRdWV1ZS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZjYjJlNzdhOGM2YmY2YmE1ZTAwNjNjNGE2YTNiNWFjNWIyYTc5OWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oIgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Rpc3BsYXlDb25maWd1cmF0
aW9uLmg+Ci0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlzcGxheVN0cmVhbS5oPgotI2luY2x1
ZGUgPHd0Zi9CbG9ja1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3Rm
L09TT2JqZWN0UHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZm
ZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZSA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U+IHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlKCkgPSBkZWZh
dWx0OwotICAgIHZpcnR1YWwgfkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKTsKLQotcHJv
dGVjdGVkOgotICAgIHVzaW5nIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgPSB2b2lkICheKShDR0Rp
c3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5
U3RyZWFtVXBkYXRlUmVmKTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1S
ZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNoZWNrRGlz
cGxheVN0cmVhbSgpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIENHRGlzcGxheVN0cmVhbVJlZiBk
aXNwbGF5U3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3RyZWFtLmdldCgpOyB9Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlRGlzcGxheVN0cmVhbSgpIHsgbV9kaXNwbGF5U3RyZWFtID0gbnVs
bHB0cjsgfQotCi0gICAgRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRs
ZXIoKTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IGNhcHR1cmVRdWV1ZSgpOwotCi0gICAgdWludDMy
X3Qgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgdWludDMyX3QgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGRp
c3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxsQmFjayhDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5
Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lkKik7Ci0KLSAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjpDYXB0dXJlcgotICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKLSAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBl
IGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7Ci0KLSAgICB2b2lkIGRpc3Bs
YXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1h
cnlGbGFncyk7Ci0gICAgYm9vbCBzdGFydERpc3BsYXlTdHJlYW0oKTsKLQotICAgIHZvaWQgbmV3
RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMsIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
JiYpOwotCi0gICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gbV9jdXJyZW50RnJhbWU7Ci0gICAg
UmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gbV9kaXNwbGF5U3RyZWFtOwotICAgIE9TT2Jq
ZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY2FwdHVyZVF1ZXVlOwotICAgIEJsb2NrUHRyPHZv
aWQoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENH
RGlzcGxheVN0cmVhbVVwZGF0ZVJlZik+IG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyOwotCi0gICAg
dWludDMyX3QgbV93aWR0aCB7IDAgfTsKLSAgICB1aW50MzJfdCBtX2hlaWdodCB7IDAgfTsKLSAg
ICBmbG9hdCBtX2ZyYW1lUmF0ZSB7IDAgfTsKLQotICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9vYnNlcnZpbmdEaXNwbGF5Q2hhbmdlcyB7IGZhbHNlIH07Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UuaAppbmRleCA4MWM5Yjc3YjUwZDEwOTU3MzMxYTJjZjJmMWY1NTM4N2M2
YjkwMDRlLi41NTVhYWQzOWY4OGM3M2FhMzFjMjlmNzIwMjRkZDlhZWUyMzNlOGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKQEAgLTI3
LDExICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFD
KQogCi0jaW5jbHVkZSAiQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1ZGUg
IkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0Rpc3BsYXlTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgog
CiB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwpAQCAtMzksNyAr
MzksOSBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0dEaXNwbGF5U3RyZWFtU2Ny
ZWVuQ2FwdHVyZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlIHsKK2NsYXNzIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UKKyAgICA6IHB1
YmxpYyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKQEAgLTUwLDIy
ICs1Miw0NCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2NyZWVuQ2FwdHVyZURldmljZXMo
VmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGlz
cGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNrKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlD
aGFuZ2VTdW1tYXJ5RmxhZ3MsIHZvaWQqKTsKIAogICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OkNhcHR1cmVyCiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
OyB9CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUg
c3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvcjsgfQogICAgIEludFNpemUgaW50cmlu
c2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGJv
b2wgc3RhcnQoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsK
KyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgZmluYWw7CisKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSI7IH0KLSNl
bmRpZgogCi0gICAgLy8gQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZQotICAgIFJldGFpblB0
cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oKSBmaW5hbDsKLSAgICBi
b29sIGNoZWNrRGlzcGxheVN0cmVhbSgpIGZpbmFsOworICAgIHVzaW5nIEZyYW1lQXZhaWxhYmxl
Q2FsbGJhY2sgPSB2b2lkICheKShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3Qs
IElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5U3RyZWFtVXBkYXRlUmVmKTsKKyAgICBSZXRhaW5QdHI8
Q0dEaXNwbGF5U3RyZWFtUmVmPiBjcmVhdGVEaXNwbGF5U3RyZWFtKCk7CisgICAgQ0dEaXNwbGF5
U3RyZWFtUmVmIGRpc3BsYXlTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdHJlYW0u
Z2V0KCk7IH0KKyAgICB2b2lkIGludmFsaWRhdGVEaXNwbGF5U3RyZWFtKCkgeyBtX2Rpc3BsYXlT
dHJlYW0gPSBudWxscHRyOyB9CisgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGly
ZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpOworICAgIGJvb2wgc3Rh
cnREaXNwbGF5U3RyZWFtKCk7CisgICAgYm9vbCBjaGVja0Rpc3BsYXlTdHJlYW0oKTsKKworICAg
IHZvaWQgbmV3RnJhbWUoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXMsIFJldGFpblB0cjxJT1N1
cmZhY2VSZWY+JiYpOwogCisgICAgRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJs
ZUhhbmRsZXIoKTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGNhcHR1cmVRdWV1ZSgpOworCisgICAg
UmV0YWluUHRyPElPU3VyZmFjZVJlZj4gbV9jdXJyZW50RnJhbWU7CiAgICAgUmV0YWluUHRyPENH
RGlzcGxheVN0cmVhbVJlZj4gbV9kaXNwbGF5U3RyZWFtOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fY2FwdHVyZVF1ZXVlOworICAgIEJsb2NrUHRyPHZvaWQoQ0dEaXNwbGF5
U3RyZWFtRnJhbWVTdGF0dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENHRGlzcGxheVN0cmVh
bVVwZGF0ZVJlZik+IG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyOwogCiAgICAgdWludDMyX3QgbV9k
aXNwbGF5SUQgeyAwIH07CisgICAgdWludDMyX3QgbV93aWR0aCB7IDAgfTsKKyAgICB1aW50MzJf
dCBtX2hlaWdodCB7IDAgfTsKKyAgICBmbG9hdCBtX2ZyYW1lUmF0ZSB7IDAgfTsKKworICAgIGJv
b2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9vYnNlcnZpbmdEaXNwbGF5Q2hh
bmdlcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCmluZGV4IGJmODhi
MWFhN2NjOGM5ZWMxMjIxZDZiZmNmZDk0MmM4YzY2ZTc0OGYuLjEyNTI5ZGVlMzVmZGM5Y2U0ZjFj
NmFiYjg3ZTlkY2Q3NmJmYTEyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCkBAIC04OSwxMSArODksMTQ5IEBAIEV4cGVjdGVkPFVu
aXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dE
aXNwbGF5U3RyZWFtCiB9CiAKIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UodWludDMyX3QgZGlzcGxheUlEKQotICAg
IDogQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgpCisgICAgOiBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjpDYXB0dXJlcigpCiAgICAgLCBtX2Rpc3BsYXlJRChkaXNwbGF5SUQpCiB7CiB9
CiAKK2Jvb2wgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6c3RhcnQoKQorewor
ICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOworCisgICAgaWYg
KG1faXNSdW5uaW5nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBzdGFydERp
c3BsYXlTdHJlYW0oKTsKK30KKwordm9pZCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291
cmNlOjpzdG9wKCkKK3sKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSKTsKKworICAgIGlmICghbV9pc1J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2Rpc3BsYXlTdHJlYW0pCisgICAgICAgIENHRGlzcGxheVN0cmVhbVN0b3AobV9kaXNwbGF5
U3RyZWFtLmdldCgpKTsKKworICAgIG1faXNSdW5uaW5nID0gZmFsc2U7Cit9CisKK0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgQ0dEaXNwbGF5U3RyZWFtU2NyZWVu
Q2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVGcmFtZSgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudEZy
YW1lOworfQorCitib29sIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnN0YXJ0
RGlzcGxheVN0cmVhbSgpCit7CisgICAgaWYgKCFjaGVja0Rpc3BsYXlTdHJlYW0oKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKKyAgICAgICAg
bV9kaXNwbGF5U3RyZWFtID0gY3JlYXRlRGlzcGxheVN0cmVhbSgpOworICAgICAgICBpZiAoIW1f
ZGlzcGxheVN0cmVhbSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
IW1fb2JzZXJ2aW5nRGlzcGxheUNoYW5nZXMpIHsKKyAgICAgICAgICAgIENHRGlzcGxheVJlZ2lz
dGVyUmVjb25maWd1cmF0aW9uQ2FsbGJhY2soZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNr
LCB0aGlzKTsKKyAgICAgICAgICAgIG1fb2JzZXJ2aW5nRGlzcGxheUNoYW5nZXMgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBlcnIgPSBDR0Rpc3BsYXlTdHJlYW1TdGFydCht
X2Rpc3BsYXlTdHJlYW0uZ2V0KCkpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9H
X0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiQ0dEaXNwbGF5U3RyZWFtU3RhcnQgZmFp
bGVkIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIG1faXNSdW5uaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjb21taXRD
b25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mp
Cit7CisgICAgaWYgKG1fd2lkdGggPT0gc2V0dGluZ3Mud2lkdGgoKSAmJiBtX2hlaWdodCA9PSBz
ZXR0aW5ncy5oZWlnaHQoKSAmJiBtX2ZyYW1lUmF0ZSA9PSBzZXR0aW5ncy5mcmFtZVJhdGUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV93aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7CisgICAg
bV9oZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKKyAgICBtX2ZyYW1lUmF0ZSA9IHNldHRpbmdz
LmZyYW1lUmF0ZSgpOworCisgICAgaWYgKG1fZGlzcGxheVN0cmVhbSkgeworICAgICAgICBDR0Rp
c3BsYXlTdHJlYW1TdG9wKG1fZGlzcGxheVN0cmVhbS5nZXQoKSk7CisgICAgICAgIG1fZGlzcGxh
eVN0cmVhbSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG1faXNSdW5uaW5nKQorICAgICAg
ICBzdGFydERpc3BsYXlTdHJlYW0oKTsKK30KKwordm9pZCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5D
YXB0dXJlU291cmNlOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBD
R0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCEK
K30KKwordm9pZCBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpkaXNwbGF5UmVj
b25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwgQ0dEaXNwbGF5
Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzLCB2b2lkICp1c2VySW5mbykKK3sKKyAgICBpZiAodXNl
ckluZm8pCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2Fw
dHVyZVNvdXJjZSAqPih1c2VySW5mbyktPmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoZGlzcGxheSwg
ZmxhZ3MpOworfQorCit2b2lkIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6Om5l
d0ZyYW1lKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzIHN0YXR1cywgUmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4mJiBuZXdGcmFtZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2Ug
a0NHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzRnJhbWVDb21wbGV0ZToKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1lSWRsZToKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIGtDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1c0ZyYW1lQmxh
bms6CisgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmxlOiBrQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0dXNG
cmFtZUJsYW5rIik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrQ0dEaXNwbGF5U3RyZWFt
RnJhbWVTdGF0dXNTdG9wcGVkOgorICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJsZToga0NHRGlzcGxheVN0
cmVhbUZyYW1lU3RhdHVzU3RvcHBlZCIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBt
X2N1cnJlbnRGcmFtZSA9IFdURk1vdmUobmV3RnJhbWUpOworfQorCitDR0Rpc3BsYXlTdHJlYW1G
cmFtZUF2YWlsYWJsZUhhbmRsZXIgQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6
ZnJhbWVBdmFpbGFibGVIYW5kbGVyKCkKK3sKKyAgICBpZiAobV9mcmFtZUF2YWlsYWJsZUhhbmRs
ZXIpCisgICAgICAgIHJldHVybiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlci5nZXQoKTsKKworICAg
IFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9OworICAgIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVy
ID0gXihDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIHVpbnQ2NF90IGRpc3BsYXlU
aW1lLCBJT1N1cmZhY2VSZWYgZnJhbWVTdXJmYWNlLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYg
dXBkYXRlUmVmKQorICAgIHsKKyAgICAgICAgaWYgKCFmcmFtZVN1cmZhY2UgfHwgIWRpc3BsYXlU
aW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAg
ICAgYXV0byogcmVjdHMgPSBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVHZXRSZWN0cyh1cGRhdGVSZWYs
IGtDR0Rpc3BsYXlTdHJlYW1VcGRhdGVEaXJ0eVJlY3RzLCAmY291bnQpOworICAgICAgICBpZiAo
IXJlY3RzIHx8ICFjb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzdGF0dXMsIGZyYW1lID0gcmV0YWluUHRyKGZy
YW1lU3VyZmFjZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5uZXdGcmFtZShzdGF0
dXMsIFdURk1vdmUoZnJhbWUpKTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHJldHVybiBt
X2ZyYW1lQXZhaWxhYmxlSGFuZGxlci5nZXQoKTsKK30KKworZGlzcGF0Y2hfcXVldWVfdCBDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpjYXB0dXJlUXVldWUoKQoreworICAgIGlm
ICghbV9jYXB0dXJlUXVldWUpCisgICAgICAgIG1fY2FwdHVyZVF1ZXVlID0gYWRvcHRPU09iamVj
dChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UgQ2FwdHVyZSBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOworCisgICAgcmV0dXJu
IG1fY2FwdHVyZVF1ZXVlLmdldCgpOworfQorCiBib29sIENHRGlzcGxheVN0cmVhbVNjcmVlbkNh
cHR1cmVTb3VyY2U6OmNoZWNrRGlzcGxheVN0cmVhbSgpCiB7CiAgICAgYXV0byBhY3R1YWxEaXNw
bGF5SUQgPSB1cGRhdGVEaXNwbGF5SUQobV9kaXNwbGF5SUQpOwpAQCAtMTE4LDggKzI1Niw4IEBA
IFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNyZWF0ZURpc3BsYXlTCiAgICAgQVNTRVJUKCFkaXNwbGF5U3RyZWFtKCkpOwog
ICAgIEFTU0VSVChtX2Rpc3BsYXlJRCA9PSB1cGRhdGVEaXNwbGF5SUQobV9kaXNwbGF5SUQpKTsK
IAotICAgIGF1dG8gd2lkdGggPSB0aGlzLT53aWR0aCgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdGhp
cy0+aGVpZ2h0KCk7CisgICAgYXV0byB3aWR0aCA9IG1fd2lkdGg7CisgICAgYXV0byBoZWlnaHQg
PSBtX2hlaWdodDsKICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHsKICAgICAgICAgYXV0byBk
aXNwbGF5TW9kZSA9IGFkb3B0Q0YoQ0dEaXNwbGF5Q29weURpc3BsYXlNb2RlKG1fZGlzcGxheUlE
KSk7CiAgICAgICAgIHdpZHRoID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc1dpZGUoZGlzcGxheU1v
ZGUuZ2V0KCkpOwpAQCAtMTI5LDExICsyNjcsMTQgQEAgUmV0YWluUHRyPENHRGlzcGxheVN0cmVh
bVJlZj4gQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVMK
ICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAidW5hYmxl
IHRvIGdldCBzY3JlZW4gd2lkdGgvaGVpZ2h0Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICBBU1NFUlQoZnJhbWVSYXRlKCkpOwotICAgIEFMV0FZU19MT0dfSUYobG9nZ2Vy
UHRyKCksIExPR0lERU5USUZJRVIsICJmcmFtZSByYXRlICIsIGZyYW1lUmF0ZSgpLCAiLCBzaXpl
ICIsIHdpZHRoLCAieCIsIGhlaWdodCk7CisgICAgQVNTRVJUKG1fZnJhbWVSYXRlKTsKKyAgICBp
ZiAoIW1fZnJhbWVSYXRlKQorICAgICAgICBtX2ZyYW1lUmF0ZSA9IDMwOworCisgICAgQUxXQVlT
X0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImZyYW1lIHJhdGUgIiwgbV9mcmFt
ZVJhdGUsICIsIHNpemUgIiwgd2lkdGgsICJ4IiwgaGVpZ2h0KTsKIAogICAgIE5TRGljdGlvbmFy
eSogc3RyZWFtT3B0aW9ucyA9IEB7Ci0gICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rp
c3BsYXlTdHJlYW1NaW5pbXVtRnJhbWVUaW1lIDogQCgxIC8gZnJhbWVSYXRlKCkpLAorICAgICAg
ICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFtTWluaW11bUZyYW1lVGltZSA6
IEAoMSAvIG1fZnJhbWVSYXRlKSwKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlz
cGxheVN0cmVhbVF1ZXVlRGVwdGggOiBAKHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCksCiAgICAg
ICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1Db2xvclNwYWNlIDogKF9f
YnJpZGdlIGlkKXNSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDR0Rpc3BsYXlTdHJlYW1TaG93Q3Vyc29yIDogQFlFUywK
</data>

          </attachment>
      

    </bug>

</bugzilla>