<?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>184195</bug_id>
          
          <creation_ts>2018-03-30 14:18:31 -0700</creation_ts>
          <short_desc>GC shouldn&apos;t do object distancing</short_desc>
          <delta_ts>2018-04-03 16:53:22 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410735</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-03-30 14:18:31 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411569</commentid>
    <comment_count>1</comment_count>
      <attachid>337118</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-03 15:00:53 -0700</bug_when>
    <thetext>Created attachment 337118
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411575</commentid>
    <comment_count>2</comment_count>
      <attachid>337120</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-03 15:25:33 -0700</bug_when>
    <thetext>Created attachment 337120
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411597</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-03 16:52:28 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/230226/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411598</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-03 16:53:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39159661&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337118</attachid>
            <date>2018-04-03 15:00:53 -0700</date>
            <delta_ts>2018-04-03 15:25:33 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52195</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMDIyMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTQ2LDggKzU0Niw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBoZWFwL011dGF0b3JTdGF0ZS5oCiAgICAgaGVhcC9SZWdpc3RlclN0YXRlLmgKICAg
ICBoZWFwL1J1bm5pbmdTY29wZS5oCi0gICAgaGVhcC9TZWN1cml0eUtpbmQuaAotICAgIGhlYXAv
U2VjdXJpdHlPcmlnaW5Ub2tlbi5oCiAgICAgaGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5o
CiAgICAgaGVhcC9TbG90VmlzaXRvci5oCiAgICAgaGVhcC9TbG90VmlzaXRvcklubGluZXMuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwMjIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MTQsOCAr
NTE0LDYgQEAgaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKIGhlYXAvTWFya2luZ0NvbnN0
cmFpbnRTb2x2ZXIuY3BwCiBoZWFwL011dGF0b3JTY2hlZHVsZXIuY3BwCiBoZWFwL011dGF0b3JT
dGF0ZS5jcHAKLWhlYXAvU2VjdXJpdHlLaW5kLmNwcAotaGVhcC9TZWN1cml0eU9yaWdpblRva2Vu
LmNwcAogaGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5jcHAKIGhlYXAvU2xvdFZpc2l0b3Iu
Y3BwCiBoZWFwL1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI5Niw3ICsyOTYsNiBAQAogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFs
dWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0OTE0NjBDQkI3
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJl
Z2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4
RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEY0MkIzQzMyMDFFQzlGRjAwMzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9r
ZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDJC
M0MyMjAxRUM5RkQwMDM1NzAzMSAvKiBTZWN1cml0eU9yaWdpblRva2VuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MzE3MzgxNDZCQUM2OTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFu
ZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNDU3MDM5MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwMzcxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTBGNDU3MDNEMUJF
NDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzAzQjFCRTQ1RjBBMDA2MkE2Mjkg
LyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovOyB9OwpAQCAtMzM2LDcgKzMzNSw2IEBACiAJ
CTBGNUE2Mjg0MTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVBNjI4MjE4OEM5OEQ0MDA3MkM5
REYgLyogRlRMVmFsdWVSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNUFFMkM0MURGNEYyODAwMDY2RUZFMSAvKiBWTUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTBCQjNBMUI3
Q0Y2NEUwMDZCM0YwMyAvKiBWTUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVCNEEzMzFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1Bh
dGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjVCNEEzMjFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY1QjZFRDMy
MDM2Nzk2QjAwN0FBQkYzIC8qIFNlY3VyaXR5S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QjZFRDEyMDM2Nzk2ODAwN0FBQkYzIC8qIFNlY3Vy
aXR5S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNUJGMTY0MUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYx
NjIxRjIzMTcxMjAwMjlEOTFEIC8qIEIzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmggKi87IH07
CiAJCTBGNUJGMTY3MUYyM0EwOTgwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNjYxRjIzQTA5ODAw
MjlEOTFEIC8qIEIzQmFja3dhcmRzQ0ZHLmggKi87IH07CiAJCTBGNUJGMTY5MUYyM0EwQUEwMDI5
RDkxRCAvKiBCM05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1QkYxNjgxRjIzQTBBQTAwMjlEOTFEIC8qIEIzTmF0dXJhbExvb3Bz
LmggKi87IH07CkBAIC0yMjcwLDcgKzIyNjgsNiBAQAogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFG
OEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDJCM0MwMjAxRUI1MDkwMDM1NzAzMSAvKiBBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEY0MkIzQzIyMDFFQzlGRDAwMzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9rZW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5Ub2tlbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAg
LyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExp
c3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzAzNjFC
RTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0g
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmg7
IHBhdGggPSBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIzMzgsOSArMjMzNSw2IEBACiAJCTBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlE
RiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEZUTFZhbHVlUmFuZ2UuY3BwOyBwYXRoID0gZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRM
VmFsdWVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZVJh
bmdlLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVCNEEzMjFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3dQYXRoUmV0dXJuVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjVCNkVEMTIwMzY3OTY4MDA3QUFCRjMgLyog
U2VjdXJpdHlLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyaXR5
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjVCNkVEMjIwMzY3OTY4MDA3
QUFCRjMgLyogU2VjdXJpdHlLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlY3VyaXR5S2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
NUI2RUQ0MjAzNjc5OUEwMDdBQUJGMyAvKiBTZWN1cml0eU9yaWdpblRva2VuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyaXR5T3JpZ2luVG9rZW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2MTFGMjMxNzEyMDAyOUQ5MUQgLyog
QjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNIb2lz
dExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwOyBwYXRoID0gYjMvQjNIb2lzdExvb3BJbnZhcmlhbnRW
YWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE2MjFGMjMxNzEy
MDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaDsgcGF0aCA9IGIzL0IzSG9pc3RMb29wSW52YXJp
YW50VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTY2MUYyM0Ew
OTgwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhY2t3YXJk
c0NGRy5oOyBwYXRoID0gYjMvQjNCYWNrd2FyZHNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTU3MzYsMTAgKzU3MzAsNiBAQAogCQkJCTBGRDBFNUVGMUU0NkJGMjMwMDA2QUIw
OCAvKiBSZWdpc3RlclN0YXRlLmggKi8sCiAJCQkJMEY3Q0Y5NEUxREJFRUU4NjAwOThDQzEyIC8q
IFJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCAqLywKIAkJCQkwRjJDNjNBOTFFNEZBNDJDMDBDMTM4
MzkgLyogUnVubmluZ1Njb3BlLmggKi8sCi0JCQkJMEY1QjZFRDIyMDM2Nzk2ODAwN0FBQkYzIC8q
IFNlY3VyaXR5S2luZC5jcHAgKi8sCi0JCQkJMEY1QjZFRDEyMDM2Nzk2ODAwN0FBQkYzIC8qIFNl
Y3VyaXR5S2luZC5oICovLAotCQkJCTBGNUI2RUQ0MjAzNjc5OUEwMDdBQUJGMyAvKiBTZWN1cml0
eU9yaWdpblRva2VuLmNwcCAqLywKLQkJCQkwRjQyQjNDMjIwMUVDOUZEMDAzNTcwMzEgLyogU2Vj
dXJpdHlPcmlnaW5Ub2tlbi5oICovLAogCQkJCTBGNEQ4Qzc2MUZDQTNDRjIwMDFEMzJBQyAvKiBT
aW1wbGVNYXJraW5nQ29uc3RyYWludC5jcHAgKi8sCiAJCQkJMEY0RDhDNzcxRkNBM0NGMzAwMUQz
MkFDIC8qIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50LmggKi8sCiAJCQkJQzIyNTQ5NDIxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLywKQEAgLTkzNTcsOCArOTM0Nyw2IEBACiAJ
CQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1MTY1RDUxQkRGMTM1QTAwM0I3NUMxIC8qIFNjcmlwdFByb2ZpbGluZ1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNUI2RUQzMjAzNjc5NkIwMDdBQUJGMyAvKiBT
ZWN1cml0eUtpbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNDJCM0MzMjAxRUM5RkYwMDM1NzAz
MSAvKiBTZWN1cml0eU9yaWdpblRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3
RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tE
aXJlY3RvcnkuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSw4IEBA
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW4KICAgICAgICAgCiAgICAg
ICAgIHNpemVfdCBibG9ja0luZGV4ID0gYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvcisrOwog
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiByZXN1bHQgPSBtX2Jsb2Nrc1tibG9ja0luZGV4
XTsKLSAgICAgICAgaWYgKHJlc3VsdC0+c2VjdXJpdHlPcmlnaW5Ub2tlbigpID09IGFsbG9jYXRv
ci50bGMoKS0+c2VjdXJpdHlPcmlnaW5Ub2tlbigpKSB7Ci0gICAgICAgICAgICBzZXRJc0NhbkFs
bG9jYXRlQnV0Tm90RW1wdHkoTm9Mb2NraW5nTmVjZXNzYXJ5LCBibG9ja0luZGV4LCBmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9CisgICAgICAgIHNldElzQ2Fu
QWxsb2NhdGVCdXROb3RFbXB0eShOb0xvY2tpbmdOZWNlc3NhcnksIGJsb2NrSW5kZXgsIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKQEAgLTEwOSw3ICsxMDcsNyBA
QCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5CiAgICAgcmV0dXJuIGhh
bmRsZTsKIH0KIAotdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2ssIFNlY3VyaXR5T3JpZ2luVG9rZW4gc2VjdXJpdHlPcmlnaW5Ub2tlbikKK3Zv
aWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQog
ewogICAgIHNpemVfdCBpbmRleDsKICAgICBpZiAobV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1wdHko
KSkgewpAQCAtMTQ3LDcgKzE0NSw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1h
cmtlZEJsb2MKICAgICAgICAgfSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3aGlj
aCB0aGUgYmxvY2sgbGVhcm5zIG9mIGl0cyBjZWxsU2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCkuCi0g
ICAgYmxvY2stPmRpZEFkZFRvRGlyZWN0b3J5KHRoaXMsIGluZGV4LCBzZWN1cml0eU9yaWdpblRv
a2VuKTsKKyAgICBibG9jay0+ZGlkQWRkVG9EaXJlY3RvcnkodGhpcywgaW5kZXgpOwogICAgIAog
ICAgIHNldElzTGl2ZShOb0xvY2tpbmdOZWNlc3NhcnksIGluZGV4LCB0cnVlKTsKICAgICBzZXRJ
c0VtcHR5KE5vTG9ja2luZ05lY2Vzc2FyeSwgaW5kZXgsIHRydWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCShyZXZpc2lvbiAyMzAyMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIAogICAgIFJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2Uo
KTsKICAgICAKLSAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqLCBTZWN1cml0
eU9yaWdpblRva2VuKTsKKyAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsK
ICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKIAogICAgIGJvb2wg
aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9DZWxsQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBDZWxsQXR0cmli
dXRlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgieyIs
IGRlc3RydWN0aW9uLCAiLCAiLCBjZWxsS2luZCwgIiwgIiwgc2VjdXJpdHlLaW5kLCAifSIpOwor
ICAgIG91dC5wcmludCgieyIsIGRlc3RydWN0aW9uLCAiLCAiLCBjZWxsS2luZCwgIn0iKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
ZWxsQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYg
QEAKIAogI2luY2x1ZGUgIkRlc3RydWN0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkhlYXBDZWxsLmgi
Ci0jaW5jbHVkZSAiU2VjdXJpdHlLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzUsMTAgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiBz
dHJ1Y3QgQ2VsbEF0dHJpYnV0ZXMgewogICAgIENlbGxBdHRyaWJ1dGVzKCkgeyB9CiAgICAgCi0g
ICAgQ2VsbEF0dHJpYnV0ZXMoRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uLCBIZWFwQ2VsbDo6
S2luZCBjZWxsS2luZCwgU2VjdXJpdHlLaW5kIHNlY3VyaXR5S2luZCkKKyAgICBDZWxsQXR0cmli
dXRlcyhEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5k
KQogICAgICAgICA6IGRlc3RydWN0aW9uKGRlc3RydWN0aW9uKQogICAgICAgICAsIGNlbGxLaW5k
KGNlbGxLaW5kKQotICAgICAgICAsIHNlY3VyaXR5S2luZChzZWN1cml0eUtpbmQpCiAgICAgewog
ICAgIH0KICAgICAKQEAgLTQ2LDcgKzQ0LDYgQEAgc3RydWN0IENlbGxBdHRyaWJ1dGVzIHsKICAg
ICAKICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24geyBEb2VzTm90TmVlZERlc3RydWN0
aW9uIH07CiAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQgeyBIZWFwQ2VsbDo6SlNDZWxsIH07
Ci0gICAgU2VjdXJpdHlLaW5kIHNlY3VyaXR5S2luZCB7IFNlY3VyaXR5S2luZDo6RGFuZ2Vyb3Vz
Qml0cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93
Q2FzZShHCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICBtX2RpcmVjdG9yeS0+YWRkQmxvY2soYmxvY2ssIG1fdGxjLT5zZWN1cml0eU9yaWdpblRv
a2VuKCkpOworICAgIG1fZGlyZWN0b3J5LT5hZGRCbG9jayhibG9jayk7CiAgICAgcmVzdWx0ID0g
YWxsb2NhdGVJbihibG9jayk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVX
aXRob3V0CiAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIGEgcmVtb3RlIGNoYW5jZSB0
aGF0IGEgYmxvY2sgbWF5IGhhdmUgYm90aCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CiAgICAgICAg
ICAgICAvLyBhbmQgZW1wdHkgc2V0IGF0IHRoZSBzYW1lIHRpbWUuCiAgICAgICAgICAgICBibG9j
ay0+cmVtb3ZlRnJvbURpcmVjdG9yeSgpOwotICAgICAgICAgICAgbV9kaXJlY3RvcnktPmFkZEJs
b2NrKGJsb2NrLCBtX3RsYy0+c2VjdXJpdHlPcmlnaW5Ub2tlbigpKTsKKyAgICAgICAgICAgIG1f
ZGlyZWN0b3J5LT5hZGRCbG9jayhibG9jayk7CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVJ
bihibG9jayk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICsz
MzQsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21EaXJlCiAgICAgbV9k
aXJlY3RvcnktPnJlbW92ZUJsb2NrKHRoaXMpOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnksIHNpemVfdCBp
bmRleCwgU2VjdXJpdHlPcmlnaW5Ub2tlbiBzZWN1cml0eU9yaWdpblRva2VuKQordm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0RpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSogZGlyZWN0
b3J5LCBzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgQVNTRVJUKCFtX2RpcmVjdG9yeSk7CkBAIC0z
NDksMjAgKzM0OSw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9EaXJlY3QK
ICAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6
ZTsKICAgICBtX2VuZEF0b20gPSBlbmRBdG9tIC0gbV9hdG9tc1BlckNlbGwgKyAxOwogICAgIAot
ICAgIGlmIChkaXJlY3RvcnktPmF0dHJpYnV0ZXMoKS5zZWN1cml0eUtpbmQgPT0gU2VjdXJpdHlL
aW5kOjpKU1ZhbHVlT09CKSB7Ci0gICAgICAgIC8vIElmIHdlIGFyZSBnb2luZyB0byBiZSB1c2Vk
IGZvciBKU1ZhbHVlT09CIGFsbG9jYXRpb25zLCB0aGVuIHdlIG1heSBuZWVkIHRvIHplcm8gdGhl
IGJsb2NrLgotICAgICAgICAvLyBXZSBkb24ndCBoYXZlIHRvIHplcm8gaXQgaWYgaXQgd2FzIGFs
cmVhZHkgdXNlZCBmb3IgSlNWYWx1ZXMgaW4gdGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luLgotICAg
ICAgICAvLyBJdCdzIHRlbXB0aW5nIHRvIHNheSB0aGF0IHRoaXMgbWVhbnMgdGhhdCB3ZSBkb24n
dCBoYXZlIHRvIHplcm8gaXQgaWYgaXQncyBjb21pbmcgZnJvbQotICAgICAgICAvLyBKU1ZhbHVl
U3RyaWN0LCBidXQgc2luY2UgSlNWYWx1ZVN0cmljdCBkb2Vzbid0IHplcm8gd2hlbiBjb252ZXJ0
aW5nIGZyb20gRGFuZ2Vyb3VzQml0cywgdGhhdAotICAgICAgICAvLyB3b3VsZCBub3QgYmUgc291
bmQuCi0gICAgICAgIAotICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnNlY3VyaXR5S2luZCAhPSBT
ZWN1cml0eUtpbmQ6OkpTVmFsdWVPT0IKLSAgICAgICAgICAgIHx8IG1fc2VjdXJpdHlPcmlnaW5U
b2tlbiAhPSBzZWN1cml0eU9yaWdpblRva2VuKQotICAgICAgICAgICAgbWVtc2V0KCZibG9jaygp
LCAwLCBtX2VuZEF0b20gKiBhdG9tU2l6ZSk7Ci0gICAgfQotICAgIAogICAgIG1fYXR0cmlidXRl
cyA9IGRpcmVjdG9yeS0+YXR0cmlidXRlcygpOwotICAgIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbiA9
IHNlY3VyaXR5T3JpZ2luVG9rZW47CiAKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9
IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5k
ZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNiBAQAogI2luY2x1ZGUgIkRlc3RydWN0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkhlYXBD
ZWxsLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9uU3RhdHVzLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5Ub2tlbi5oIgogI2luY2x1ZGUgIldlYWtTZXQuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgogI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KQEAgLTE5MCwxMyArMTg5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVtb3ZlRnJvbURpcmVjdG9yeSgpOwogICAgICAg
ICAKLSAgICAgICAgdm9pZCBkaWRBZGRUb0RpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSosIHNpemVf
dCBpbmRleCwgU2VjdXJpdHlPcmlnaW5Ub2tlbik7CisgICAgICAgIHZvaWQgZGlkQWRkVG9EaXJl
Y3RvcnkoQmxvY2tEaXJlY3RvcnkqLCBzaXplX3QgaW5kZXgpOwogICAgICAgICB2b2lkIGRpZFJl
bW92ZUZyb21EaXJlY3RvcnkoKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZHVtcFN0YXRlKFBy
aW50U3RyZWFtJik7CiAgICAgICAgIAotICAgICAgICBTZWN1cml0eU9yaWdpblRva2VuIHNlY3Vy
aXR5T3JpZ2luVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luVG9rZW47IH0K
LSAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKiwgdm9pZCopOwogICAgICAgICAKQEAgLTIzMiw4ICsyMjksNiBAQCBwdWJs
aWM6CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwogICAgICAgICAKICAgICAgICAgTWFya2Vk
QmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07Ci0gICAgICAgIAotICAgICAgICBTZWN1cml0eU9y
aWdpblRva2VuIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbiB7IDAgfTsKICAgICB9OwogCiBwcml2YXRl
OiAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5S2luZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlLaW5kLmNw
cAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJp
dHlLaW5kLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlNlY3VyaXR5S2luZC5oIgotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlNlY3VyaXR5S2luZCBzZWN1cml0eUtp
bmQpCi17Ci0gICAgc3dpdGNoIChzZWN1cml0eUtpbmQpIHsKLSAgICBjYXNlIEpTQzo6U2VjdXJp
dHlLaW5kOjpKU1ZhbHVlT09COgotICAgICAgICBvdXQucHJpbnQoIkpTVmFsdWVPT0IiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTZWN1cml0eUtpbmQ6OkpTVmFsdWVTdHJpY3Q6
Ci0gICAgICAgIG91dC5wcmludCgiSlNWYWx1ZVN0cmljdCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBKU0M6OlNlY3VyaXR5S2luZDo6RGFuZ2Vyb3VzQml0czoKLSAgICAgICAgb3V0LnBy
aW50KCJEYW5nZXJvdXNCaXRzIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5S2luZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5S2luZC5oCShyZXZpc2lvbiAyMzAy
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TZWN1cml0eUtpbmQuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBOT1RF
OiBTZWN1cml0eUtpbmQgaXMgZm9yIGRpc3RhbmNpbmcuIEJ1dCBjYWdpbmcgaW1wbGllcyBkaXN0
YW5jaW5nLiBTbywgdGhpbmdzIHRoYXQgaGF2ZSB0aGVpciBvd24KLS8vIGNhZ2VzIChsaWtlIHR5
cGVkIGFycmF5cykgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgc2VjdXJpdHkga2luZC4K
LWVudW0gY2xhc3MgU2VjdXJpdHlLaW5kIDogdWludDhfdCB7Ci0gICAgLy8gVGhlIEpTVmFsdWVP
T0Igc2VjdXJpdHkga2luZCBpcyBmb3IgY2VsbHMgdGhhdCBjb250YWluIEpWYWx1ZXMgYW5kIGNh
biBiZSBhY2Nlc3NlZCBvdXQtb2YtYm91bmRzCi0gICAgLy8gdXAgdG8gbWluaW11bURpc3RhbmNl
QmV0d2VlbkNlbGxzRnJvbURpZmZlcmVudE9yaWdpbnMuCi0gICAgLy8KLSAgICAvLyBKU1ZhbHVl
cyBjYW4gcmVmZXJlbmNlIGNlbGxzIGluIEpTVmFsdWVPT0IuIFRoZXJlZm9yZSwgSlNWYWx1ZXMg
Y2FuIG9ubHkgcmVmZXJlbmNlIGNlbGxzIGluCi0gICAgLy8gSlNWYWx1ZU9PQiAtIG90aGVyd2lz
ZSBhIFNwZWN0cmUgT09CIGF0dGFjayB3b3VsZCBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVz
IG9mIEpTVmFsdWVTdHJpY3QKLSAgICAvLyBhbmQgRGFuZ2Vyb3VzQml0cy4KLSAgICAvLwotICAg
IC8vIFRoZSBPT0Igc3BhY2UgaXMgdGhlIHNwYWNlIHRoYXQgZGVwZW5kcyBvbiB0aGUgaGVhcCdz
IGRpc3RhbmNpbmcgdG8gZG8gT09CIHByb3RlY3Rpb24uCi0gICAgSlNWYWx1ZU9PQiwKLSAgICAK
LSAgICAvLyBUaGUgSlNWYWx1ZVN0cmljdCBzZWN1cml0eSBraW5kIGlzIGZvciBjZWxscyB0aGF0
IGNvbnRhaW4gSlNWYWx1ZXMgYnV0IGNhbm5vdCBiZSBhY2Nlc3NlZAotICAgIC8vIG91dC1vZi1i
b3VuZHMuIEN1cnJlbnRseSwgaXQncyBub3QgZXNzZW50aWFsIHRvIGtlZXAgdGhpcyBzZXBhcmF0
ZSBmcm9tIERhbmdlcm91c0JpdHMuIFdlJ3JlCi0gICAgLy8gdXNpbmcgdGhpcyB0byBnZXQgc29t
ZSB3aWdnbGUgcm9vbSBmb3IgaG93IHdlIGhhbmRsZSBhcnJheSBlbGVtZW50cy4gRm9yIGV4YW1w
bGUsIHdlIG1pZ2h0IHdhbnQKLSAgICAvLyB0byBhbGxvdyBPT0IgcmVhZHMgYnV0IG5vdCBPT0Ig
d3JpdGVzLCBzaW5jZSBKU1ZhbHVlU3RyaWN0IGNvbnRhaW5zIG9ubHkgSlNWYWx1ZXMgYW5kIGxl
bmd0aCBmaWVsZHMuCi0gICAgLy8gVXNpbmcgU3BlY3RyZSB0byByZWFkIHRoZSBsZW5ndGggZmll
bGRzIGlzIG5vdCB1c2VmdWwgZm9yIGF0dGFja2VycyBzaW5jZSB0aGV5IGNhbiByZWFkIHRoZW0g
YW55d2F5LgotICAgIC8vIFNvLCB0aGV5IHdpbGwgb25seSB3YW50IHRvIHdyaXRlIHRvIGxlbmd0
aCBmaWVsZHMsIGluIG9yZGVyIHRvIGNvbmZ1c2UgYSBzdWJzZXF1ZW50IGJvdW5kcyBjaGVjay4K
LSAgICAvLyBUaGV5IGNhbiBkbyB0aGF0IHdpdGhpbiBhIHNwZWN1bGF0aW9uIHdpbmRvdy4gSG93
ZXZlciwgd2UgY3VycmVudGx5IHVzZSBwcmVjaXNlIGluZGV4IG1hc2tpbmcgZm9yCi0gICAgLy8g
dGhpcy4KLSAgICAvLwotICAgIC8vIEl0J3MgaWxsZWdhbCB0byB1c2UgdGhpcyBmb3IgYW55IHN1
YmNsYXNzIG9mIEpTT2JqZWN0LCBKU1N0cmluZywgb3IgU3ltYm9sLCBvciBhbnkgb3RoZXIgY2Vs
bAotICAgIC8vIHRoYXQgY291bGQgYmUgcmVmZXJlbmNlZCBmcm9tIGEgSlNWYWx1ZS4gWW91IG11
c3QgdXNlIHBvaXNvbmVkIHBvaW50ZXJzIHRvIHBvaW50IGF0IHRoZXNlIGNlbGxzLgotICAgIEpT
VmFsdWVTdHJpY3QsCi0gICAgCi0gICAgLy8gVGhlIERhbmdlcm91c0JpdHMgc2VjdXJpdHkga2lu
ZCBpcyBmb3IgY2VsbHMgdGhhdCBjb250YWluIHZhbHVlcyB0aGF0IGNvdWxkIGJlIHVzZWZ1bGx5
IHR5cGUtCi0gICAgLy8gY29uZnVzZWQgd2l0aCBKU1ZhbHVlLgotICAgIC8vCi0gICAgLy8gSXQn
cyBpbGxlZ2FsIHRvIHVzZSB0aGlzIGZvciBhbnkgc3ViY2xhc3Mgb2YgSlNPYmplY3QsIEpTU3Ry
aW5nLCBvciBTeW1ib2wsIG9yIGFueSBvdGhlciBjZWxsCi0gICAgLy8gdGhhdCBjb3VsZCBiZSBy
ZWZlcmVuY2VkIGZyb20gYSBKU1ZhbHVlLiBZb3UgbXVzdCB1c2UgcG9pc29uZWQgcG9pbnRlcnMg
dG8gcG9pbnQgYXQgdGhlc2UgY2VsbHMuCi0gICAgRGFuZ2Vyb3VzQml0cwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpTZWN1cml0eUtpbmQpOwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2Vj
dXJpdHlPcmlnaW5Ub2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5T3JpZ2luVG9rZW4uY3BwCShub25leGlzdGVu
dCkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5U
b2tlbi5oIgotCi0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LVNlY3VyaXR5T3JpZ2luVG9rZW4gdW5pcXVlU2VjdXJpdHlPcmlnaW5Ub2tlbigpCi17Ci0gICAg
c3RhdGljIFNlY3VyaXR5T3JpZ2luVG9rZW4gY291bnRlcjsKLSAgICByZXR1cm4gV1RGOjphdG9t
aWNFeGNoYW5nZUFkZCgmY291bnRlciwgMSkgKyAxOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5T3JpZ2lu
VG9rZW4uaAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2VjdXJpdHlPcmlnaW5Ub2tlbi5oCShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLXR5cGVkZWYgdWludDY0X3QgU2VjdXJpdHlPcmlnaW5Ub2tl
bjsKLQotSlNfRVhQT1JUX1BSSVZBVEUgU2VjdXJpdHlPcmlnaW5Ub2tlbiB1bmlxdWVTZWN1cml0
eU9yaWdpblRva2VuKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2NhbENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2NhbENhY2hlLmNwcAkocmV2aXNpb24gMjMw
MjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGhyZWFkTG9jYWxDYWNoZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
UmVmUHRyPFRocmVhZExvY2FsQ2FjaGU+IFRocmVhZExvY2FsQ2FjaGU6OmNyZWF0ZShIZWFwJiBo
ZWFwLCBTZWN1cml0eU9yaWdpblRva2VuIHNlY3VyaXR5T3JpZ2luVG9rZW4pCitSZWZQdHI8VGhy
ZWFkTG9jYWxDYWNoZT4gVGhyZWFkTG9jYWxDYWNoZTo6Y3JlYXRlKEhlYXAmIGhlYXApCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaHJlYWRMb2NhbENhY2hlKGhlYXAsIHNlY3VyaXR5T3Jp
Z2luVG9rZW4pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZExvY2FsQ2FjaGUoaGVh
cCkpOwogfQogCi1UaHJlYWRMb2NhbENhY2hlOjpUaHJlYWRMb2NhbENhY2hlKEhlYXAmIGhlYXAs
IFNlY3VyaXR5T3JpZ2luVG9rZW4gc2VjdXJpdHlPcmlnaW5Ub2tlbikKK1RocmVhZExvY2FsQ2Fj
aGU6OlRocmVhZExvY2FsQ2FjaGUoSGVhcCYgaGVhcCkKICAgICA6IG1faGVhcChoZWFwKQotICAg
ICwgbV9zZWN1cml0eU9yaWdpblRva2VuKHNlY3VyaXR5T3JpZ2luVG9rZW4pCiB7CiAgICAgbV9k
YXRhID0gYWxsb2NhdGVEYXRhKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9UaHJlYWRMb2NhbENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvVGhyZWFkTG9jYWxDYWNoZS5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2NhbENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIgogI2luY2x1
ZGUgIkxvY2FsQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Ub2tlbi5oIgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xh
c3MgVGhyZWFkTG9jYWxDYWNoZSA6IHB1YmxpYyBUaHJlYWRTYQogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIAogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8VGhyZWFkTG9jYWxDYWNoZT4gY3JlYXRlKEhlYXAmLCBTZWN1cml0eU9yaWdpblRva2Vu
ID0gdW5pcXVlU2VjdXJpdHlPcmlnaW5Ub2tlbigpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPFRocmVhZExvY2FsQ2FjaGU+IGNyZWF0ZShIZWFwJik7CiAgICAgCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGhyZWFkTG9jYWxDYWNoZSgpOwogCkBAIC02Mywx
MCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemVJbkRh
dGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGF0YSwgc2l6ZSk7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRmlyc3RBbGxvY2F0b3JJbkRhdGEoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoRGF0YSwgYWxsb2NhdG9yKTsgfQogICAgIAotICAgIFNlY3VyaXR5T3JpZ2luVG9r
ZW4gc2VjdXJpdHlPcmlnaW5Ub2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW5U
b2tlbjsgfQotCiBwcm90ZWN0ZWQ6ICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFRocmVhZExv
Y2FsQ2FjaGUoSGVhcCYsIFNlY3VyaXR5T3JpZ2luVG9rZW4pOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFRocmVhZExvY2FsQ2FjaGUoSGVhcCYpOwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgVk07CkBAIC05OSw4ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgSGVhcCYgbV9oZWFwOwog
ICAgIERhdGEqIG1fZGF0YSB7IG51bGxwdHIgfTsKICAgICAKLSAgICBTZWN1cml0eU9yaWdpblRv
a2VuIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbjsKLQogI2lmIFVTRShGQVNUX1RMU19GT1JfVExDKQog
ICAgIHN0YXRpYyBjb25zdCBwdGhyZWFkX2tleV90IHRsc0tleSA9IFdURl9HQ19UTENfS0VZOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lv
biAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
c3RydWN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0RGVzdHJveUZ1bmMgewogfTsKIAogSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCkKLSAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsLCBTZWN1cml0eUtpbmQ6OkpTVmFsdWVPT0IpKQorICAgIDogSGVhcENl
bGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICsz
MzksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNHbG9iYWxPYmplY3Q6
OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSwgUmVmUHRyPFRocmVh
ZExvY2FsQ2FjaGU+IHRocmVhZExvY2FsQ2FjaGUpCitKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxP
YmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCAwKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCkBAIC0zNTYs
NyArMzU2LDYgQEAgSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgUwogICAg
ICwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoSXNXYXRjaGVkKQogICAgICwgbV9ydW50aW1l
RmxhZ3MoKQogICAgICwgbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZShnbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUpCi0gICAgLCBtX3RocmVhZExvY2FsQ2FjaGUodGhyZWFkTG9jYWxDYWNoZSA/IFdURk1v
dmUodGhyZWFkTG9jYWxDYWNoZSkgOiB2bS5kZWZhdWx0VGhyZWFkTG9jYWxDYWNoZSkKIHsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTYsNyArNDk2LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFJ1bnRpbWVGbGFncyYgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9ydW50aW1lRmxhZ3M7IH0KIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4
cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUqID0gbnVsbHB0ciwgUmVmUHRyPFRocmVhZExvY2FsQ2FjaGU+ID0gbnVsbHB0
cik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyKTsKIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIApAQCAtOTA1
LDggKzkwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdyYXBwZXJNYXAoc3RkOjp1bmlxdWVf
cHRyPFdyYXBwZXJNYXA+JiYpOwogI2VuZGlmCiAKLSAgICBUaHJlYWRMb2NhbENhY2hlJiB0aHJl
YWRMb2NhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gKm1fdGhyZWFkTG9jYWxDYWNoZS5nZXQoKTsg
fQotCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhjb25zdCBJZGVudGlmaWVyJiBpLCBKU1ZhbHVlIHYsIHVuc2ln
bmVkIGEpCkBAIC05NDAsNyArOTM4LDYgQEAgcHJpdmF0ZToKICNpZmRlZiBKU0NfR0xJQl9BUElf
RU5BQkxFRAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXcmFwcGVyTWFwPiBtX3dyYXBwZXJNYXA7CiAj
ZW5kaWYKLSAgICBSZWZQdHI8VGhyZWFkTG9jYWxDYWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOwog
fTsKIAogaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBK
U1ZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3REZXN0cm95
RgogfTsKIAogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZTo6SlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpCi0gICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCwgU2VjdXJpdHlLaW5k
OjpKU1ZhbHVlT09CKSkKKyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBlLmNwcAko
cmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVj
dCBKU1N0cmluZ0Rlc3Ryb3lGdW5jIHsKIH07CiAKIEpTU3RyaW5nSGVhcENlbGxUeXBlOjpKU1N0
cmluZ0hlYXBDZWxsVHlwZSgpCi0gICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVl
ZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCwgU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09C
KSkKKyAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsKSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsMTkgKzIzMywxOCBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCiAg
ICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCiAgICAgLCBqc1Zh
bHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUpTVmFsdWVT
dHJpY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRy
aWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnksIFNlY3Vy
aXR5S2luZDo6SlNWYWx1ZVN0cmljdCkpKQotICAgICwgYXV4aWxpYXJ5RGFuZ2Vyb3VzQml0c0hl
YXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSwgU2VjdXJpdHlLaW5k
OjpEYW5nZXJvdXNCaXRzKSkpCi0gICAgLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCwgU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSkpCi0g
ICAgLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBD
ZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCwgU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSkpCi0gICAgLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmli
dXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsLCBTZWN1cml0eUtpbmQ6OkRh
bmdlcm91c0JpdHMpKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAgICwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUo
c3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVk
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGNlbGxEYW5nZXJvdXNCaXRz
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihD
ZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAg
LCBzdHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlw
ZT4oKSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5p
cXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQogICAgICwgc2VnbWVudGVk
VmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNX
ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKICNlbmRpZgotICAgICwgcHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIs
IGhlYXAsIGF1eGlsaWFyeURhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGUuZ2V0KCksIHByaW1pdGl2
ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SlNWYWx1
ZVN0cmljdEhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgp
KQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2Fj
YWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0
aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFw
Q2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkKICAgICAsIGNl
bGxKU1ZhbHVlT09CU3BhY2UoIkpTQ2VsbCBKU1ZhbHVlT09CIiwgaGVhcCwgY2VsbEpTVmFsdWVP
T0JIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBj
ZWxsRGFuZ2Vyb3VzQml0c1NwYWNlKCJKU0NlbGwgRGFuZ2Vyb3VzQml0cyIsIGhlYXAsIGNlbGxE
YW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KQogICAgICwganNWYWx1ZUdpZ2FjYWdlQ2VsbFNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEpTQ2Vs
bCIsIGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5Myw4ICsyOTMsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxv
Y2F0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBD
ZWxsVHlwZT4gYXV4aWxpYXJ5SlNWYWx1ZVN0cmljdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhpbGlhcnlEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSlNWYWx1ZU9PQkhlYXBD
ZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsRGFuZ2Vyb3Vz
Qml0c0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgotI2luY2x1ZGUgIlRocmVh
ZExvY2FsQ2FjaGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRv
Zy5oIgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgpAQCAtNDIsNyArNDEsNiBAQCBWTUVu
dHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAgOiBtX3ZtKHZtKQogICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewotICAgIGdsb2JhbE9iamVjdC0+dGhy
ZWFkTG9jYWxDYWNoZSgpLmluc3RhbGwodm0sICZtX3ByZXZpb3VzVExDKTsKICAgICBBU1NFUlQo
IURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkpOwogICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAg
IGlmICghdm0uZW50cnlTY29wZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBD
ZWxsVHlwZS5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrRGVzdHJv
eUZ1bmMKIH07CiAKIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU6OkpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoKQotICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRy
aWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwsIFNlY3VyaXR5S2luZDo6
RGFuZ2Vyb3VzQml0cykpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0Nyw3ICsxMzQ3LDYgQEAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzLmNwcAogcGFnZS9OYXZpZ2F0b3IuY3BwCiBwYWdlL05hdmlnYXRvckJhc2UuY3BwCiBw
YWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcAotcGFnZS9PcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNw
cAogcGFnZS9QYWdlLmNwcAogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKIHBhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0
Miw3ICszNDIsNiBAQAogCQkwRjU4MENGRjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJC
YWNraW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU4MENGQjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1ODBGQTMxNDk2OTM5
MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU4MEZBMTE0OTY5MzkxMDBGQjVCRDggLyogV2Vi
VGlsZWRCYWNraW5nTGF5ZXIuaCAqLzsgfTsKIAkJMEY1ODBGQUYxNDk4MDBENDAwRkI1QkQ4IC8q
IEFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGll
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBG
NUI0MDhBMjAyMTJGNzcwMDgwRjkxMyAvKiBPcmlnaW5UaHJlYWRMb2NhbENhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCNDA4ODIwMjEyRjcz
MDA4MEY5MTMgLyogT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oICovOyB9OwogCQkwRjVCN0E1NTEw
RjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAv
KiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNUUyMDA2MThFNzcxRkMwMDNFQzNFNSAvKiBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUUyMDA1MThFNzcxRkMwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjYwNUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVCMTVGOTQ4NDgw
MDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NTc3LDggKzU1NzYsNiBAQAogCQkwRjU4MEZB
MTE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZWRCYWNraW5nTGF5ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVGlsZWRCYWNraW5nTGF5ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1ODBGQTIxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFj
a2luZ0xheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
VGlsZWRCYWNraW5nTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTgw
RkFFMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGNUI0MDg4MjAyMTJGNzMwMDgwRjkxMyAvKiBPcmlnaW5UaHJlYWRM
b2NhbENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpblRocmVh
ZExvY2FsQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1QjQwODkyMDIx
MkY3MzAwODBGOTEzIC8qIE9yaWdpblRocmVhZExvY2FsQ2FjaGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUI3QTUyMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJFbWJlZGRlZE9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMjAwNTE4RTc3MUZDMDAzRUMzRTUgLyogUGxh
dGZvcm1DQUFuaW1hdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTkwNjgsOCArMTkwNjUsNiBAQAogCQkJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBO
YXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLywKIAkJCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIw
REIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovLAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBC
MjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oICovLAotCQkJCTBGNUI0MDg5MjAyMTJGNzMwMDgw
RjkxMyAvKiBPcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNwcCAqLywKLQkJCQkwRjVCNDA4ODIwMjEy
RjczMDA4MEY5MTMgLyogT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oICovLAogCQkJCTY1RkVBODY4
MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLywKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovLAogCQkJCUNENUU1QjYwMUExNUYxNTYwMDBDNjA5RSAvKiBQYWdl
Q29uZmlndXJhdGlvbi5jcHAgKi8sCkBAIC0yOTIwMiw3ICsyOTE5Nyw2IEBACiAJCQkJNDE4NEY1
MTYxRUFGMDVBODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU5RTg5RkMxNkUyREMwNTAwQTkwOEY4IC8qIE9yaWdpbkxvY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGNUI0MDhBMjAyMTJGNzcwMDgwRjkxMyAvKiBPcmlnaW5U
aHJlYWRMb2NhbENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDU4MUZBRjE1MjBGOTFGMDAz
QTdBNzUgLyogT3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUREMEU4
MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjlG
NTcyMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCAr
NTYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCCiAKIGNvbnN0
IENsYXNzSW5mbyBKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiRE9NR2xvYmFsT2JqZWN0
IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNET01HbG9iYWxPYmplY3QpIH07CiAKLUpTRE9NR2xvYmFsT2JqZWN0OjpKU0RP
TUdsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8RE9NV3JhcHBl
cldvcmxkPiYmIHdvcmxkLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUsIFJlZlB0cjxKU0M6OlRocmVhZExvY2FsQ2FjaGU+JiYgdGhyZWFkTG9j
YWxDYWNoZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlLCBXVEZNb3ZlKHRocmVhZExvY2FsQ2FjaGUpKQorSlNET01HbG9iYWxPYmpl
Y3Q6OkpTRE9NR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxE
T01XcmFwcGVyV29ybGQ+JiYgd29ybGQsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBn
bG9iYWxPYmplY3RNZXRob2RUYWJsZSkKKyAgICA6IEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93b3JsZChXVEZNb3ZlKHdvcmxk
KSkKICAgICAsIG1fd29ybGRJc05vcm1hbChtX3dvcmxkLT5pc05vcm1hbCgpKQogICAgICwgbV9i
dWlsdGluSW50ZXJuYWxGdW5jdGlvbnModm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVj
dC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvY2tEdXJpbmdNYXJraW5nLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1RocmVhZExvY2FsQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OSw3ICs0OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0IDoK
IHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgSlNET01HbG9iYWxPYmplY3REYXRhOwogCi0gICAgSlNE
T01HbG9iYWxPYmplY3QoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPERPTVdyYXBwZXJX
b3JsZD4mJiwgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyLCBS
ZWZQdHI8SlNDOjpUaHJlYWRMb2NhbENhY2hlPiYmID0gbnVsbHB0cik7CisgICAgSlNET01HbG9i
YWxPYmplY3QoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPERPTVdyYXBwZXJXb3JsZD4m
JiwgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpKU09i
amVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIGNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG8KIH07CiAKIEpTRE9NV2luZG93
QmFzZTo6SlNET01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0
cjxET01XaW5kb3c+JiYgd2luZG93LCBKU0RPTVdpbmRvd1Byb3h5KiBwcm94eSkKLSAgICA6IEpT
RE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHByb3h5LT53b3JsZCgpLCAmc19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSwgd2luZG93ID8gJndpbmRvdy0+ZG9jdW1lbnQoKS0+dGhyZWFkTG9j
YWxDYWNoZSgpIDogbnVsbHB0cikKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIHByb3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1f
d2luZG93Q2xvc2VXYXRjaHBvaW50cygod2luZG93ICYmIHdpbmRvdy0+ZnJhbWUoKSkgPyBJc1dh
dGNoZWQgOiBJc0ludmFsaWRhdGVkKQogICAgICwgbV93cmFwcGVkKFdURk1vdmUod2luZG93KSkK
ICAgICAsIG1fcHJveHkocHJveHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDIzMDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw3ICsxMzEsNiBAQAogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2lu
Y2x1ZGUgIk5vZGVXaXRoSW5kZXguaCIKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgot
I2luY2x1ZGUgIk9yaWdpblRocmVhZExvY2FsQ2FjaGUuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2
ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKQEAgLTc3NjcsMTYgKzc3NjYsNCBAQCB2b2lkIERvY3VtZW50OjpzZXRTZXJ2aWNlV29y
a2VyQ29ubmVjdGlvCiB9CiAjZW5kaWYKIAotSlNDOjpUaHJlYWRMb2NhbENhY2hlJiBEb2N1bWVu
dDo6dGhyZWFkTG9jYWxDYWNoZSgpCi17Ci0gICAgaWYgKCFtX3RocmVhZExvY2FsQ2FjaGUpIHsK
LSAgICAgICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7Ci0gICAg
ICAgIGlmIChvcmlnaW4uaXNVbmlxdWUoKSB8fCAob3JpZ2luLmlzTG9jYWwoKSAmJiBvcmlnaW4u
ZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24oKSkpCi0gICAgICAgICAgICBtX3RocmVhZExvY2Fs
Q2FjaGUgPSBKU0M6OlRocmVhZExvY2FsQ2FjaGU6OmNyZWF0ZShjb21tb25WTSgpLmhlYXApOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RocmVhZExvY2FsQ2FjaGUgPSBPcmlnaW5UaHJl
YWRMb2NhbENhY2hlOjpjcmVhdGUob3JpZ2luKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3RocmVh
ZExvY2FsQ2FjaGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlVzZXJBY3Rp
b25FbGVtZW50U2V0LmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRMb2Nh
bENhY2hlLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNDE0LDggKzE0MTMsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYW5kbGluZ1RvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRs
aW5nVG91Y2hFdmVudDsgfQogI2VuZGlmCiAKLSAgICBKU0M6OlRocmVhZExvY2FsQ2FjaGUmIHRo
cmVhZExvY2FsQ2FjaGUoKTsKLQogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQogICAgIGJvb2wgaGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhV
c2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKTsKICAgICB2b2lkIHNl
dEhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9u
KGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbik7CkBAIC0xOTA2LDggKzE5MDMsNiBAQCBwcml2
YXRlOgogCiAgICAgSGFzaFNldDxBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIqPiBtX2Fw
cGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcnM7CiAgICAgCi0gICAgUmVmUHRyPEpTQzo6VGhy
ZWFkTG9jYWxDYWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOwotCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIG1fcHJpbWFyeURvbWFpblJlcXVlc3Rl
ZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uIHsgfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpblRocmVhZExvY2FsQ2FjaGUu
Y3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpblRocmVh
ZExvY2FsQ2FjaGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oIgotCi0jaW5jbHVkZSAiQ29tbW9u
Vk0uaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBPcmlnaW5U
aHJlYWRMb2NhbENhY2hlKj4gVGhyZWFkTG9jYWxDYWNoZU1hcDsKLQotc3RhdGljIFRocmVhZExv
Y2FsQ2FjaGVNYXAmIHRocmVhZExvY2FsQ2FjaGVNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUaHJlYWRMb2NhbENhY2hlTWFwPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQot
UmVmPE9yaWdpblRocmVhZExvY2FsQ2FjaGU+IE9yaWdpblRocmVhZExvY2FsQ2FjaGU6OmNyZWF0
ZShTZWN1cml0eU9yaWdpbiYga2V5KQotewotICAgIGF1dG8gaXRlciA9IHRocmVhZExvY2FsQ2Fj
aGVNYXAoKS5maW5kKCZrZXkpOwotICAgIGlmIChpdGVyICE9IHRocmVhZExvY2FsQ2FjaGVNYXAo
KS5lbmQoKSkKLSAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKLSAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcmlnaW5UaHJlYWRMb2NhbENhY2hlKGtleSkpOwotfQotCi1PcmlnaW5U
aHJlYWRMb2NhbENhY2hlOjp+T3JpZ2luVGhyZWFkTG9jYWxDYWNoZSgpCi17Ci0gICAgYm9vbCBy
ZXN1bHQgPSB0aHJlYWRMb2NhbENhY2hlTWFwKCkucmVtb3ZlKG1fa2V5KTsKLSAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwotfQotCi1PcmlnaW5UaHJlYWRMb2NhbENhY2hlOjpPcmlnaW5UaHJl
YWRMb2NhbENhY2hlKFNlY3VyaXR5T3JpZ2luJiBrZXkpCi0gICAgOiBUaHJlYWRMb2NhbENhY2hl
KGNvbW1vblZNKCkuaGVhcCwgSlNDOjp1bmlxdWVTZWN1cml0eU9yaWdpblRva2VuKCkpCi0gICAg
LCBtX2tleSgma2V5KQotewotICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkTG9jYWxDYWNoZU1hcCgp
LmFkZCgma2V5LCB0aGlzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luVGhy
ZWFkTG9jYWxDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2lu
VGhyZWFkTG9jYWxDYWNoZS5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL09yaWdpblRocmVhZExvY2FsQ2FjaGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1RocmVhZExvY2FsQ2FjaGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBPcmlnaW5UaHJlYWRMb2NhbENhY2hlIGZpbmFsIDogcHVibGljIEpTQzo6VGhyZWFkTG9jYWxD
YWNoZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPcmlnaW5UaHJlYWRMb2NhbENhY2hlPiBj
cmVhdGUoU2VjdXJpdHlPcmlnaW4mKTsKLSAgICAKLSAgICB+T3JpZ2luVGhyZWFkTG9jYWxDYWNo
ZSgpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE9yaWdpblRocmVhZExvY2Fs
Q2FjaGUoU2VjdXJpdHlPcmlnaW4mKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG1fa2V5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337120</attachid>
            <date>2018-04-03 15:25:33 -0700</date>
            <delta_ts>2018-04-03 15:26:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>56068</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMjI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDE4LTA0LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R0Mgc2hvdWxkbid0IGRvIG9iamVjdCBkaXN0YW5jaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcm9sbHMgb3V0IFNlY3VyaXR5
S2luZC9TZWN1cml0eU9yaWdpblRva2VuLCBidXQga2VlcHMgdGhlIFRMQyBpbmZyYXN0cnVjdHVy
ZS4gSXQgc2VlbXMKKyAgICAgICAgdG8gYmUgYSBzbWFsbCBzcGVlZC11cC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogaGVhcC9CbG9j
a0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToK
KyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Lmg6CisgICAgICAgICogaGVhcC9DZWxsQXR0
cmlidXRlcy5jcHA6CisgICAgICAgIChKU0M6OkNlbGxBdHRyaWJ1dGVzOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBoZWFwL0NlbGxBdHRyaWJ1dGVzLmg6CisgICAgICAgIChKU0M6OkNlbGxBdHRy
aWJ1dGVzOjpDZWxsQXR0cmlidXRlcyk6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OnRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3Rpbmcp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRBZGRUb0RpcmVjdG9yeSk6CisgICAgICAgICogaGVhcC9NYXJrZWRC
bG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzZWN1cml0eU9yaWdp
blRva2VuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL1NlY3VyaXR5S2luZC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9TZWN1cml0eUtpbmQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBoZWFwL1NlY3VyaXR5T3JpZ2luVG9rZW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhl
YXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvVGhyZWFk
TG9jYWxDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlRocmVhZExvY2FsQ2FjaGU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlRocmVhZExvY2FsQ2FjaGU6OlRocmVhZExvY2FsQ2FjaGUpOgorICAg
ICAgICAqIGhlYXAvVGhyZWFkTG9jYWxDYWNoZS5oOgorICAgICAgICAoSlNDOjpUaHJlYWRMb2Nh
bENhY2hlOjpzZWN1cml0eU9yaWdpblRva2VuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0
aHJlYWRMb2NhbENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdIZWFwQ2VsbFR5cGU6OkpTU3RyaW5nSGVhcENl
bGxUeXBlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTo6SlNXZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSk6CisKIDIwMTgtMDQtMDIgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgY29tcHV0ZSBpdHMg
b3duIGVzdGltYXRlIG9mIGl0cyBmb290cHJpbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDggKzU0Niw2IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBoZWFwL011dGF0b3JTdGF0ZS5o
CiAgICAgaGVhcC9SZWdpc3RlclN0YXRlLmgKICAgICBoZWFwL1J1bm5pbmdTY29wZS5oCi0gICAg
aGVhcC9TZWN1cml0eUtpbmQuaAotICAgIGhlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5oCiAgICAg
aGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5oCiAgICAgaGVhcC9TbG90VmlzaXRvci5oCiAg
ICAgaGVhcC9TbG90VmlzaXRvcklubGluZXMuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MTQsOCArNTE0LDYgQEAgaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHAKIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCiBoZWFwL011dGF0
b3JTY2hlZHVsZXIuY3BwCiBoZWFwL011dGF0b3JTdGF0ZS5jcHAKLWhlYXAvU2VjdXJpdHlLaW5k
LmNwcAotaGVhcC9TZWN1cml0eU9yaWdpblRva2VuLmNwcAogaGVhcC9TaW1wbGVNYXJraW5nQ29u
c3RyYWludC5jcHAKIGhlYXAvU2xvdFZpc2l0b3IuY3BwCiBoZWFwL1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXIuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw3ICsyOTYsNiBAQAogCQkw
RjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhG
IC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhG
IC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY0MkIzQzMyMDFFQzlG
RjAwMzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDJCM0MyMjAxRUM5RkQwMDM1NzAzMSAvKiBTZWN1
cml0eU9yaWdpblRva2VuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYx
NDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDU3MDM5MUJFNDRDOTEwMDYyQTYyOSAv
KiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURl
YWRDb2RlLmggKi87IH07CiAJCTBGNDU3MDNEMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRV
c2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ1NzAzQjFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5o
ICovOyB9OwpAQCAtMzM2LDcgKzMzNSw2IEBACiAJCTBGNUE2Mjg0MTg4Qzk4RDQwMDcyQzlERiAv
KiBGVExWYWx1ZVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUFFMkM0MURG
NEYyODAwMDY2RUZFMSAvKiBWTUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTBCQjNBMUI3Q0Y2NEUwMDZCM0YwMyAvKiBWTUlubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVC
NEEzMzFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCNEEzMjFDODRGMEQ2MDBGMUIx
N0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY1QjZFRDMyMDM2Nzk2QjAwN0FBQkYzIC8qIFNlY3VyaXR5
S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
QjZFRDEyMDM2Nzk2ODAwN0FBQkYzIC8qIFNlY3VyaXR5S2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUJGMTY0MUYyMzE3MTIwMDI5RDkx
RCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNjIxRjIzMTcxMjAwMjlEOTFEIC8qIEIzSG9p
c3RMb29wSW52YXJpYW50VmFsdWVzLmggKi87IH07CiAJCTBGNUJGMTY3MUYyM0EwOTgwMDI5RDkx
RCAvKiBCM0JhY2t3YXJkc0NGRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1QkYxNjYxRjIzQTA5ODAwMjlEOTFEIC8qIEIzQmFja3dhcmRzQ0ZHLmgg
Ki87IH07CiAJCTBGNUJGMTY5MUYyM0EwQUEwMDI5RDkxRCAvKiBCM05hdHVyYWxMb29wcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNjgxRjIz
QTBBQTAwMjlEOTFEIC8qIEIzTmF0dXJhbExvb3BzLmggKi87IH07CkBAIC0yMjcwLDcgKzIyNjgs
NiBAQAogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZv
cm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDJCM0MwMjAxRUI1MDkwMDM1NzAzMSAvKiBB
bGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2Nh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY0MkIzQzIyMDFFQzlGRDAw
MzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VjdXJpdHlPcmlnaW5Ub2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWlu
YXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
RWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2Rl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzcxQkU0NEM5MTAwNjJB
NjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmg7IHBhdGggPSBiMy9haXIvQWlyRWxpbWluYXRl
RGVhZENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMzgsOSArMjMzNSw2
IEBACiAJCTBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuY3BwOyBwYXRo
ID0gZnRsL0ZUTFZhbHVlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVBNjI4MjE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZVJhbmdlLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCNEEzMjFDODRGMEQ2MDBG
MUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNsb3dQYXRoUmV0dXJuVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRjVCNkVEMTIwMzY3OTY4MDA3QUFCRjMgLyogU2VjdXJpdHlLaW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyaXR5S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjVCNkVEMjIwMzY3OTY4MDA3QUFCRjMgLyogU2VjdXJpdHlLaW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyaXR5S2luZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNUI2RUQ0MjAzNjc5OUEwMDdBQUJGMyAvKiBT
ZWN1cml0eU9yaWdpblRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlY3VyaXR5T3JpZ2luVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjVCRjE2MTFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwOyBw
YXRoID0gYjMvQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjVCRjE2MjFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZh
cmlhbnRWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMu
aDsgcGF0aCA9IGIzL0IzSG9pc3RMb29wSW52YXJpYW50VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNUJGMTY2MUYyM0EwOTgwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0NG
Ry5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhY2t3YXJkc0NGRy5oOyBwYXRoID0gYjMvQjNCYWNrd2Fy
ZHNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MzYsMTAgKzU3MzAsNiBA
QAogCQkJCTBGRDBFNUVGMUU0NkJGMjMwMDA2QUIwOCAvKiBSZWdpc3RlclN0YXRlLmggKi8sCiAJ
CQkJMEY3Q0Y5NEUxREJFRUU4NjAwOThDQzEyIC8qIFJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCAq
LywKIAkJCQkwRjJDNjNBOTFFNEZBNDJDMDBDMTM4MzkgLyogUnVubmluZ1Njb3BlLmggKi8sCi0J
CQkJMEY1QjZFRDIyMDM2Nzk2ODAwN0FBQkYzIC8qIFNlY3VyaXR5S2luZC5jcHAgKi8sCi0JCQkJ
MEY1QjZFRDEyMDM2Nzk2ODAwN0FBQkYzIC8qIFNlY3VyaXR5S2luZC5oICovLAotCQkJCTBGNUI2
RUQ0MjAzNjc5OUEwMDdBQUJGMyAvKiBTZWN1cml0eU9yaWdpblRva2VuLmNwcCAqLywKLQkJCQkw
RjQyQjNDMjIwMUVDOUZEMDAzNTcwMzEgLyogU2VjdXJpdHlPcmlnaW5Ub2tlbi5oICovLAogCQkJ
CTBGNEQ4Qzc2MUZDQTNDRjIwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5jcHAg
Ki8sCiAJCQkJMEY0RDhDNzcxRkNBM0NGMzAwMUQzMkFDIC8qIFNpbXBsZU1hcmtpbmdDb25zdHJh
aW50LmggKi8sCiAJCQkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNw
cCAqLywKQEAgLTkzNTcsOCArOTM0Nyw2IEBACiAJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MTY1RDUxQkRGMTM1QTAw
M0I3NUMxIC8qIFNjcmlwdFByb2ZpbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRD
RjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTBGNUI2RUQzMjAzNjc5NkIwMDdBQUJGMyAvKiBTZWN1cml0eUtpbmQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGNDJCM0MzMjAxRUM5RkYwMDM1NzAzMSAvKiBTZWN1cml0eU9yaWdpblRva2VuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBT
ZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0
ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCShyZXZpc2lvbiAyMzAy
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSw4IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW4KICAgICAgICAgCiAgICAgICAgIHNpemVfdCBibG9ja0luZGV4ID0gYWxs
b2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvcisrOwogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiByZXN1bHQgPSBtX2Jsb2Nrc1tibG9ja0luZGV4XTsKLSAgICAgICAgaWYgKHJlc3VsdC0+c2Vj
dXJpdHlPcmlnaW5Ub2tlbigpID09IGFsbG9jYXRvci50bGMoKS0+c2VjdXJpdHlPcmlnaW5Ub2tl
bigpKSB7Ci0gICAgICAgICAgICBzZXRJc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkoTm9Mb2NraW5n
TmVjZXNzYXJ5LCBibG9ja0luZGV4LCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgICAgICB9CisgICAgICAgIHNldElzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShOb0xvY2tp
bmdOZWNlc3NhcnksIGJsb2NrSW5kZXgsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiB9CiAKQEAgLTEwOSw3ICsxMDcsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9j
a0RpcmVjdG9yeTo6dHJ5CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotdm9pZCBCbG9ja0RpcmVj
dG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIFNlY3VyaXR5T3JpZ2lu
VG9rZW4gc2VjdXJpdHlPcmlnaW5Ub2tlbikKK3ZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewogICAgIHNpemVfdCBpbmRleDsKICAgICBp
ZiAobV9mcmVlQmxvY2tJbmRpY2VzLmlzRW1wdHkoKSkgewpAQCAtMTQ3LDcgKzE0NSw3IEBAIHZv
aWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2MKICAgICAgICAgfSk7CiAKICAg
ICAvLyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgYmxvY2sgbGVhcm5zIG9mIGl0cyBj
ZWxsU2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCkuCi0gICAgYmxvY2stPmRpZEFkZFRvRGlyZWN0b3J5
KHRoaXMsIGluZGV4LCBzZWN1cml0eU9yaWdpblRva2VuKTsKKyAgICBibG9jay0+ZGlkQWRkVG9E
aXJlY3RvcnkodGhpcywgaW5kZXgpOwogICAgIAogICAgIHNldElzTGl2ZShOb0xvY2tpbmdOZWNl
c3NhcnksIGluZGV4LCB0cnVlKTsKICAgICBzZXRJc0VtcHR5KE5vTG9ja2luZ05lY2Vzc2FyeSwg
aW5kZXgsIHRydWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogICAgIAogICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBwYXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UoKTsKICAgICAKLSAgICB2b2lkIGFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqLCBTZWN1cml0eU9yaWdpblRva2VuKTsKKyAgICB2b2lkIGFk
ZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKTsKIAogICAgIGJvb2wgaXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRl
YWRsaW5lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQXR0cmli
dXRlcy5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NlbGxBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogdm9pZCBDZWxsQXR0cmlidXRlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIG91dC5wcmludCgieyIsIGRlc3RydWN0aW9uLCAiLCAiLCBjZWxsS2lu
ZCwgIiwgIiwgc2VjdXJpdHlLaW5kLCAifSIpOworICAgIG91dC5wcmludCgieyIsIGRlc3RydWN0
aW9uLCAiLCAiLCBjZWxsS2luZCwgIn0iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DZWxsQXR0cmlidXRlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVzLmgJKHJldmlzaW9u
IDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxBdHRyaWJ1dGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkRlc3RydWN0aW9u
TW9kZS5oIgogI2luY2x1ZGUgIkhlYXBDZWxsLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlLaW5kLmgi
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzUs
MTAgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2VsbEF0dHJpYnV0ZXMgewogICAg
IENlbGxBdHRyaWJ1dGVzKCkgeyB9CiAgICAgCi0gICAgQ2VsbEF0dHJpYnV0ZXMoRGVzdHJ1Y3Rp
b25Nb2RlIGRlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCwgU2VjdXJpdHlLaW5k
IHNlY3VyaXR5S2luZCkKKyAgICBDZWxsQXR0cmlidXRlcyhEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKQogICAgICAgICA6IGRlc3RydWN0aW9uKGRl
c3RydWN0aW9uKQogICAgICAgICAsIGNlbGxLaW5kKGNlbGxLaW5kKQotICAgICAgICAsIHNlY3Vy
aXR5S2luZChzZWN1cml0eUtpbmQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTQ2LDcgKzQ0LDYg
QEAgc3RydWN0IENlbGxBdHRyaWJ1dGVzIHsKICAgICAKICAgICBEZXN0cnVjdGlvbk1vZGUgZGVz
dHJ1Y3Rpb24geyBEb2VzTm90TmVlZERlc3RydWN0aW9uIH07CiAgICAgSGVhcENlbGw6OktpbmQg
Y2VsbEtpbmQgeyBIZWFwQ2VsbDo6SlNDZWxsIH07Ci0gICAgU2VjdXJpdHlLaW5kIHNlY3VyaXR5
S2luZCB7IFNlY3VyaXR5S2luZDo6RGFuZ2Vyb3VzQml0cyB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3IuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lk
KiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBtX2RpcmVjdG9yeS0+YWRkQmxvY2so
YmxvY2ssIG1fdGxjLT5zZWN1cml0eU9yaWdpblRva2VuKCkpOworICAgIG1fZGlyZWN0b3J5LT5h
ZGRCbG9jayhibG9jayk7CiAgICAgcmVzdWx0ID0gYWxsb2NhdGVJbihibG9jayk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lk
KiBMb2NhbEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVXaXRob3V0CiAgICAgICAgICAgICAvLyBiZWNh
dXNlIHRoZXJlIGlzIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGEgYmxvY2sgbWF5IGhhdmUgYm90aCBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5CiAgICAgICAgICAgICAvLyBhbmQgZW1wdHkgc2V0IGF0IHRo
ZSBzYW1lIHRpbWUuCiAgICAgICAgICAgICBibG9jay0+cmVtb3ZlRnJvbURpcmVjdG9yeSgpOwot
ICAgICAgICAgICAgbV9kaXJlY3RvcnktPmFkZEJsb2NrKGJsb2NrLCBtX3RsYy0+c2VjdXJpdHlP
cmlnaW5Ub2tlbigpKTsKKyAgICAgICAgICAgIG1fZGlyZWN0b3J5LT5hZGRCbG9jayhibG9jayk7
CiAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVJbihibG9jayk7CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnJlbW92ZUZyb21EaXJlCiAgICAgbV9kaXJlY3RvcnktPnJlbW92ZUJsb2NrKHRoaXMp
OwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvRGlyZWN0b3J5KEJsb2Nr
RGlyZWN0b3J5KiBkaXJlY3RvcnksIHNpemVfdCBpbmRleCwgU2VjdXJpdHlPcmlnaW5Ub2tlbiBz
ZWN1cml0eU9yaWdpblRva2VuKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0Rp
cmVjdG9yeShCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5LCBzaXplX3QgaW5kZXgpCiB7CiAgICAg
QVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAg
ICAgQVNTRVJUKCFtX2RpcmVjdG9yeSk7CkBAIC0zNDksMjAgKzM0OSw3IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9EaXJlY3QKICAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxs
U2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKICAgICBtX2VuZEF0b20gPSBlbmRBdG9t
IC0gbV9hdG9tc1BlckNlbGwgKyAxOwogICAgIAotICAgIGlmIChkaXJlY3RvcnktPmF0dHJpYnV0
ZXMoKS5zZWN1cml0eUtpbmQgPT0gU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSB7Ci0gICAgICAg
IC8vIElmIHdlIGFyZSBnb2luZyB0byBiZSB1c2VkIGZvciBKU1ZhbHVlT09CIGFsbG9jYXRpb25z
LCB0aGVuIHdlIG1heSBuZWVkIHRvIHplcm8gdGhlIGJsb2NrLgotICAgICAgICAvLyBXZSBkb24n
dCBoYXZlIHRvIHplcm8gaXQgaWYgaXQgd2FzIGFscmVhZHkgdXNlZCBmb3IgSlNWYWx1ZXMgaW4g
dGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luLgotICAgICAgICAvLyBJdCdzIHRlbXB0aW5nIHRvIHNh
eSB0aGF0IHRoaXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHplcm8gaXQgaWYgaXQncyBj
b21pbmcgZnJvbQotICAgICAgICAvLyBKU1ZhbHVlU3RyaWN0LCBidXQgc2luY2UgSlNWYWx1ZVN0
cmljdCBkb2Vzbid0IHplcm8gd2hlbiBjb252ZXJ0aW5nIGZyb20gRGFuZ2Vyb3VzQml0cywgdGhh
dAotICAgICAgICAvLyB3b3VsZCBub3QgYmUgc291bmQuCi0gICAgICAgIAotICAgICAgICBpZiAo
bV9hdHRyaWJ1dGVzLnNlY3VyaXR5S2luZCAhPSBTZWN1cml0eUtpbmQ6OkpTVmFsdWVPT0IKLSAg
ICAgICAgICAgIHx8IG1fc2VjdXJpdHlPcmlnaW5Ub2tlbiAhPSBzZWN1cml0eU9yaWdpblRva2Vu
KQotICAgICAgICAgICAgbWVtc2V0KCZibG9jaygpLCAwLCBtX2VuZEF0b20gKiBhdG9tU2l6ZSk7
Ci0gICAgfQotICAgIAogICAgIG1fYXR0cmlidXRlcyA9IGRpcmVjdG9yeS0+YXR0cmlidXRlcygp
OwotICAgIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbiA9IHNlY3VyaXR5T3JpZ2luVG9rZW47CiAKICAg
ICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERl
c3RydWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkRlc3Ry
dWN0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9u
U3RhdHVzLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Ub2tlbi5oIgogI2luY2x1ZGUgIldl
YWtTZXQuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9CaXRtYXAu
aD4KQEAgLTE5MCwxMyArMTg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHZvaWQg
cmVtb3ZlRnJvbURpcmVjdG9yeSgpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBkaWRBZGRUb0Rp
cmVjdG9yeShCbG9ja0RpcmVjdG9yeSosIHNpemVfdCBpbmRleCwgU2VjdXJpdHlPcmlnaW5Ub2tl
bik7CisgICAgICAgIHZvaWQgZGlkQWRkVG9EaXJlY3RvcnkoQmxvY2tEaXJlY3RvcnkqLCBzaXpl
X3QgaW5kZXgpOwogICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21EaXJlY3RvcnkoKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgZHVtcFN0YXRlKFByaW50U3RyZWFtJik7CiAgICAgICAgIAotICAg
ICAgICBTZWN1cml0eU9yaWdpblRva2VuIHNlY3VyaXR5T3JpZ2luVG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luVG9rZW47IH0KLSAgICAgICAgCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSGFuZGxlKEhlYXAmLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiwgdm9pZCopOwogICAg
ICAgICAKQEAgLTIzMiw4ICsyMjksNiBAQCBwdWJsaWM6CiAgICAgICAgIFdlYWtTZXQgbV93ZWFr
U2V0OwogICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07
Ci0gICAgICAgIAotICAgICAgICBTZWN1cml0eU9yaWdpblRva2VuIG1fc2VjdXJpdHlPcmlnaW5U
b2tlbiB7IDAgfTsKICAgICB9OwogCiBwcml2YXRlOiAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1NlY3VyaXR5S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlLaW5kLmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlLaW5kLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlY3VyaXR5S2luZC5oIgotCi0j
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBKU0M6OlNlY3VyaXR5S2luZCBzZWN1cml0eUtpbmQpCi17Ci0gICAgc3dpdGNoIChzZWN1cml0
eUtpbmQpIHsKLSAgICBjYXNlIEpTQzo6U2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09COgotICAgICAg
ICBvdXQucHJpbnQoIkpTVmFsdWVPT0IiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlND
OjpTZWN1cml0eUtpbmQ6OkpTVmFsdWVTdHJpY3Q6Ci0gICAgICAgIG91dC5wcmludCgiSlNWYWx1
ZVN0cmljdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlNlY3VyaXR5S2luZDo6
RGFuZ2Vyb3VzQml0czoKLSAgICAgICAgb3V0LnByaW50KCJEYW5nZXJvdXNCaXRzIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1NlY3VyaXR5S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1NlY3VyaXR5S2luZC5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TZWN1cml0eUtpbmQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDczICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBOT1RFOiBTZWN1cml0eUtpbmQgaXMgZm9yIGRpc3Rh
bmNpbmcuIEJ1dCBjYWdpbmcgaW1wbGllcyBkaXN0YW5jaW5nLiBTbywgdGhpbmdzIHRoYXQgaGF2
ZSB0aGVpciBvd24KLS8vIGNhZ2VzIChsaWtlIHR5cGVkIGFycmF5cykgZG9uJ3QgbmVlZCB0byB3
b3JyeSBhYm91dCB0aGUgc2VjdXJpdHkga2luZC4KLWVudW0gY2xhc3MgU2VjdXJpdHlLaW5kIDog
dWludDhfdCB7Ci0gICAgLy8gVGhlIEpTVmFsdWVPT0Igc2VjdXJpdHkga2luZCBpcyBmb3IgY2Vs
bHMgdGhhdCBjb250YWluIEpWYWx1ZXMgYW5kIGNhbiBiZSBhY2Nlc3NlZCBvdXQtb2YtYm91bmRz
Ci0gICAgLy8gdXAgdG8gbWluaW11bURpc3RhbmNlQmV0d2VlbkNlbGxzRnJvbURpZmZlcmVudE9y
aWdpbnMuCi0gICAgLy8KLSAgICAvLyBKU1ZhbHVlcyBjYW4gcmVmZXJlbmNlIGNlbGxzIGluIEpT
VmFsdWVPT0IuIFRoZXJlZm9yZSwgSlNWYWx1ZXMgY2FuIG9ubHkgcmVmZXJlbmNlIGNlbGxzIGlu
Ci0gICAgLy8gSlNWYWx1ZU9PQiAtIG90aGVyd2lzZSBhIFNwZWN0cmUgT09CIGF0dGFjayB3b3Vs
ZCBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIEpTVmFsdWVTdHJpY3QKLSAgICAvLyBh
bmQgRGFuZ2Vyb3VzQml0cy4KLSAgICAvLwotICAgIC8vIFRoZSBPT0Igc3BhY2UgaXMgdGhlIHNw
YWNlIHRoYXQgZGVwZW5kcyBvbiB0aGUgaGVhcCdzIGRpc3RhbmNpbmcgdG8gZG8gT09CIHByb3Rl
Y3Rpb24uCi0gICAgSlNWYWx1ZU9PQiwKLSAgICAKLSAgICAvLyBUaGUgSlNWYWx1ZVN0cmljdCBz
ZWN1cml0eSBraW5kIGlzIGZvciBjZWxscyB0aGF0IGNvbnRhaW4gSlNWYWx1ZXMgYnV0IGNhbm5v
dCBiZSBhY2Nlc3NlZAotICAgIC8vIG91dC1vZi1ib3VuZHMuIEN1cnJlbnRseSwgaXQncyBub3Qg
ZXNzZW50aWFsIHRvIGtlZXAgdGhpcyBzZXBhcmF0ZSBmcm9tIERhbmdlcm91c0JpdHMuIFdlJ3Jl
Ci0gICAgLy8gdXNpbmcgdGhpcyB0byBnZXQgc29tZSB3aWdnbGUgcm9vbSBmb3IgaG93IHdlIGhh
bmRsZSBhcnJheSBlbGVtZW50cy4gRm9yIGV4YW1wbGUsIHdlIG1pZ2h0IHdhbnQKLSAgICAvLyB0
byBhbGxvdyBPT0IgcmVhZHMgYnV0IG5vdCBPT0Igd3JpdGVzLCBzaW5jZSBKU1ZhbHVlU3RyaWN0
IGNvbnRhaW5zIG9ubHkgSlNWYWx1ZXMgYW5kIGxlbmd0aCBmaWVsZHMuCi0gICAgLy8gVXNpbmcg
U3BlY3RyZSB0byByZWFkIHRoZSBsZW5ndGggZmllbGRzIGlzIG5vdCB1c2VmdWwgZm9yIGF0dGFj
a2VycyBzaW5jZSB0aGV5IGNhbiByZWFkIHRoZW0gYW55d2F5LgotICAgIC8vIFNvLCB0aGV5IHdp
bGwgb25seSB3YW50IHRvIHdyaXRlIHRvIGxlbmd0aCBmaWVsZHMsIGluIG9yZGVyIHRvIGNvbmZ1
c2UgYSBzdWJzZXF1ZW50IGJvdW5kcyBjaGVjay4KLSAgICAvLyBUaGV5IGNhbiBkbyB0aGF0IHdp
dGhpbiBhIHNwZWN1bGF0aW9uIHdpbmRvdy4gSG93ZXZlciwgd2UgY3VycmVudGx5IHVzZSBwcmVj
aXNlIGluZGV4IG1hc2tpbmcgZm9yCi0gICAgLy8gdGhpcy4KLSAgICAvLwotICAgIC8vIEl0J3Mg
aWxsZWdhbCB0byB1c2UgdGhpcyBmb3IgYW55IHN1YmNsYXNzIG9mIEpTT2JqZWN0LCBKU1N0cmlu
Zywgb3IgU3ltYm9sLCBvciBhbnkgb3RoZXIgY2VsbAotICAgIC8vIHRoYXQgY291bGQgYmUgcmVm
ZXJlbmNlZCBmcm9tIGEgSlNWYWx1ZS4gWW91IG11c3QgdXNlIHBvaXNvbmVkIHBvaW50ZXJzIHRv
IHBvaW50IGF0IHRoZXNlIGNlbGxzLgotICAgIEpTVmFsdWVTdHJpY3QsCi0gICAgCi0gICAgLy8g
VGhlIERhbmdlcm91c0JpdHMgc2VjdXJpdHkga2luZCBpcyBmb3IgY2VsbHMgdGhhdCBjb250YWlu
IHZhbHVlcyB0aGF0IGNvdWxkIGJlIHVzZWZ1bGx5IHR5cGUtCi0gICAgLy8gY29uZnVzZWQgd2l0
aCBKU1ZhbHVlLgotICAgIC8vCi0gICAgLy8gSXQncyBpbGxlZ2FsIHRvIHVzZSB0aGlzIGZvciBh
bnkgc3ViY2xhc3Mgb2YgSlNPYmplY3QsIEpTU3RyaW5nLCBvciBTeW1ib2wsIG9yIGFueSBvdGhl
ciBjZWxsCi0gICAgLy8gdGhhdCBjb3VsZCBiZSByZWZlcmVuY2VkIGZyb20gYSBKU1ZhbHVlLiBZ
b3UgbXVzdCB1c2UgcG9pc29uZWQgcG9pbnRlcnMgdG8gcG9pbnQgYXQgdGhlc2UgY2VsbHMuCi0g
ICAgRGFuZ2Vyb3VzQml0cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBX
VEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgSlNDOjpTZWN1cml0eUtpbmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5j
cHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NlY3Vy
aXR5T3JpZ2luVG9rZW4uY3BwCShub25leGlzdGVudCkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Ub2tlbi5oIgotCi0jaW5jbHVkZSA8d3RmL0F0
b21pY3MuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVNlY3VyaXR5T3JpZ2luVG9rZW4gdW5pcXVl
U2VjdXJpdHlPcmlnaW5Ub2tlbigpCi17Ci0gICAgc3RhdGljIFNlY3VyaXR5T3JpZ2luVG9rZW4g
Y291bnRlcjsKLSAgICByZXR1cm4gV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmY291bnRlciwgMSkg
KyAxOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1NlY3VyaXR5T3JpZ2luVG9rZW4uaAkocmV2aXNpb24gMjMwMjIyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2VjdXJpdHlPcmlnaW5Ub2tlbi5oCShub25l
eGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXR5cGVk
ZWYgdWludDY0X3QgU2VjdXJpdHlPcmlnaW5Ub2tlbjsKLQotSlNfRVhQT1JUX1BSSVZBVEUgU2Vj
dXJpdHlPcmlnaW5Ub2tlbiB1bmlxdWVTZWN1cml0eU9yaWdpblRva2VuKCk7Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2Nh
bENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaHJl
YWRMb2NhbENhY2hlLmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvVGhyZWFkTG9jYWxDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICsz
MiwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotUmVmUHRyPFRocmVhZExvY2FsQ2FjaGU+IFRo
cmVhZExvY2FsQ2FjaGU6OmNyZWF0ZShIZWFwJiBoZWFwLCBTZWN1cml0eU9yaWdpblRva2VuIHNl
Y3VyaXR5T3JpZ2luVG9rZW4pCitSZWZQdHI8VGhyZWFkTG9jYWxDYWNoZT4gVGhyZWFkTG9jYWxD
YWNoZTo6Y3JlYXRlKEhlYXAmIGhlYXApCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaHJl
YWRMb2NhbENhY2hlKGhlYXAsIHNlY3VyaXR5T3JpZ2luVG9rZW4pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRocmVhZExvY2FsQ2FjaGUoaGVhcCkpOwogfQogCi1UaHJlYWRMb2NhbENhY2hl
OjpUaHJlYWRMb2NhbENhY2hlKEhlYXAmIGhlYXAsIFNlY3VyaXR5T3JpZ2luVG9rZW4gc2VjdXJp
dHlPcmlnaW5Ub2tlbikKK1RocmVhZExvY2FsQ2FjaGU6OlRocmVhZExvY2FsQ2FjaGUoSGVhcCYg
aGVhcCkKICAgICA6IG1faGVhcChoZWFwKQotICAgICwgbV9zZWN1cml0eU9yaWdpblRva2VuKHNl
Y3VyaXR5T3JpZ2luVG9rZW4pCiB7CiAgICAgbV9kYXRhID0gYWxsb2NhdGVEYXRhKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2NhbENhY2hlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGhyZWFkTG9jYWxDYWNoZS5oCShy
ZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaHJlYWRMb2Nh
bENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkFs
bG9jYXRpb25GYWlsdXJlTW9kZS5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9yLmgiCi0jaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5Ub2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgVGhyZWFkTG9jYWxDYWNoZSA6IHB1Ymxp
YyBUaHJlYWRTYQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIAogcHVibGljOgot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8VGhyZWFkTG9jYWxDYWNoZT4gY3Jl
YXRlKEhlYXAmLCBTZWN1cml0eU9yaWdpblRva2VuID0gdW5pcXVlU2VjdXJpdHlPcmlnaW5Ub2tl
bigpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPFRocmVhZExvY2FsQ2Fj
aGU+IGNyZWF0ZShIZWFwJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+
VGhyZWFkTG9jYWxDYWNoZSgpOwogCkBAIC02MywxMCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemVJbkRhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoRGF0YSwgc2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RBbGxv
Y2F0b3JJbkRhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGF0YSwgYWxsb2NhdG9yKTsg
fQogICAgIAotICAgIFNlY3VyaXR5T3JpZ2luVG9rZW4gc2VjdXJpdHlPcmlnaW5Ub2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbjsgfQotCiBwcm90ZWN0ZWQ6ICAgIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFRocmVhZExvY2FsQ2FjaGUoSGVhcCYsIFNlY3VyaXR5T3Jp
Z2luVG9rZW4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRocmVhZExvY2FsQ2FjaGUoSGVhcCYp
OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVk07CkBAIC05OSw4ICs5Niw2IEBA
IHByaXZhdGU6CiAgICAgSGVhcCYgbV9oZWFwOwogICAgIERhdGEqIG1fZGF0YSB7IG51bGxwdHIg
fTsKICAgICAKLSAgICBTZWN1cml0eU9yaWdpblRva2VuIG1fc2VjdXJpdHlPcmlnaW5Ub2tlbjsK
LQogI2lmIFVTRShGQVNUX1RMU19GT1JfVExDKQogICAgIHN0YXRpYyBjb25zdCBwdGhyZWFkX2tl
eV90IHRsc0tleSA9IFdURl9HQ19UTENfS0VZOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
RGVzdHJveUZ1bmMgewogfTsKIAogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkKLSAgICA6IEhlYXBDZWxsVHlwZShDZWxs
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsLCBTZWN1cml0eUtp
bmQ6OkpTVmFsdWVPT0IpKQorICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAy
MzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBlbnF1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxP
YmplY3RNZXRob2RUYWJsZSwgUmVmUHRyPFRocmVhZExvY2FsQ2FjaGU+IHRocmVhZExvY2FsQ2Fj
aGUpCitKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQogICAgICwgbV92bSh2bSkKICAg
ICAsIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNo
cG9pbnRTZXQoSXNXYXRjaGVkKSkpCkBAIC0zNTYsNyArMzU2LDYgQEAgSlNHbG9iYWxPYmplY3Q6
OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgUwogICAgICwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9p
bnQoSXNXYXRjaGVkKQogICAgICwgbV9ydW50aW1lRmxhZ3MoKQogICAgICwgbV9nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCi0gICAgLCBtX3RocmVhZExvY2Fs
Q2FjaGUodGhyZWFkTG9jYWxDYWNoZSA/IFdURk1vdmUodGhyZWFkTG9jYWxDYWNoZSkgOiB2bS5k
ZWZhdWx0VGhyZWFkTG9jYWxDYWNoZSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OTYsNyArNDk2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJ1bnRpbWVGbGFncyYg
cnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAogcHJvdGVj
dGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZNJiwg
U3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqID0gbnVsbHB0ciwgUmVm
UHRyPFRocmVhZExvY2FsQ2FjaGU+ID0gbnVsbHB0cik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
ZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSogPSBudWxscHRyKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKIApAQCAtOTA1LDggKzkwNSw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFdyYXBwZXJNYXAoc3RkOjp1bmlxdWVfcHRyPFdyYXBwZXJNYXA+JiYpOwogI2VuZGlm
CiAKLSAgICBUaHJlYWRMb2NhbENhY2hlJiB0aHJlYWRMb2NhbENhY2hlKCkgY29uc3QgeyByZXR1
cm4gKm1fdGhyZWFkTG9jYWxDYWNoZS5nZXQoKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0
IEdsb2JhbFByb3BlcnR5SW5mbyB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhjb25zdCBJ
ZGVudGlmaWVyJiBpLCBKU1ZhbHVlIHYsIHVuc2lnbmVkIGEpCkBAIC05NDAsNyArOTM4LDYgQEAg
cHJpdmF0ZToKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXcmFwcGVyTWFwPiBtX3dyYXBwZXJNYXA7CiAjZW5kaWYKLSAgICBSZWZQdHI8VGhyZWFkTG9j
YWxDYWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOwogfTsKIAogaW5saW5lIEpTQXJyYXkqIGNvbnN0
cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBw
cm9maWxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbml0aWFsTGVu
Z3RoID0gMCwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3REZXN0cm95RgogfTsKIAogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdEhlYXBDZWxsVHlwZTo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpCi0gICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCwgU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSkKKyAgICA6IEhlYXBD
ZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxs
KSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdI
ZWFwQ2VsbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjMwMjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBKU1N0cmluZ0Rlc3Ryb3lGdW5jIHsKIH07
CiAKIEpTU3RyaW5nSGVhcENlbGxUeXBlOjpKU1N0cmluZ0hlYXBDZWxsVHlwZSgpCi0gICAgOiBI
ZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCwgU2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSkKKyAgICA6IEhlYXBDZWxsVHlwZShDZWxs
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKIHsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjMwMjIyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzMsMTkgKzIzMywxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9j
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2ln
YWNhZ2U6OlByaW1pdGl2ZSkpCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1Zh
bHVlKSkKLSAgICAsIGF1eGlsaWFyeUpTVmFsdWVTdHJpY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtl
X3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24sIEhlYXBDZWxsOjpBdXhpbGlhcnksIFNlY3VyaXR5S2luZDo6SlNWYWx1ZVN0cmljdCkpKQot
ICAgICwgYXV4aWxpYXJ5RGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVh
cENlbGw6OkF1eGlsaWFyeSwgU2VjdXJpdHlLaW5kOjpEYW5nZXJvdXNCaXRzKSkpCi0gICAgLCBj
ZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4o
Q2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCwg
U2VjdXJpdHlLaW5kOjpKU1ZhbHVlT09CKSkpCi0gICAgLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBD
ZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCwgU2VjdXJpdHlLaW5kOjpKU1Zh
bHVlT09CKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91
bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsLCBTZWN1cml0eUtpbmQ6OkRhbmdlcm91c0JpdHMpKSkKKyAgICAsIGF1eGls
aWFyeUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAg
ICwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGwpKSkKKyAgICAsIGNlbGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKHN0
ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAgLCBzdHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKICAgICAsIGRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlPigpKQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUo
c3RkOjptYWtlX3VuaXF1ZTxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlPigp
KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxs
VHlwZT4oKSkKICNlbmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgi
UHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeURhbmdlcm91c0Jp
dHNIZWFwQ2VsbFR5cGUuZ2V0KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQot
ICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4
aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SlNWYWx1ZVN0cmljdEhlYXBDZWxsVHlwZS5nZXQoKSwg
anNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGls
aWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkp
CisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBB
dXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkKICAgICAsIGNlbGxKU1ZhbHVlT09CU3BhY2UoIkpTQ2VsbCBK
U1ZhbHVlT09CIiwgaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RN
YWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBjZWxsRGFuZ2Vyb3VzQml0c1NwYWNlKCJKU0Nl
bGwgRGFuZ2Vyb3VzQml0cyIsIGhlYXAsIGNlbGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdl
dCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwganNWYWx1ZUdpZ2FjYWdlQ2Vs
bFNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEpTQ2VsbCIsIGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVh
cENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw4ICsyOTMs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4gcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9y
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SlNWYWx1ZVN0
cmljdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBhdXhp
bGlhcnlEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
Q2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVh
cENlbGxUeXBlPiBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGVhcENlbGxUeXBlPiBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVu
dHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxp
bmdQcm9maWxlci5oIgotI2luY2x1ZGUgIlRocmVhZExvY2FsQ2FjaGVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgPHd0Zi9TdGFja0Jv
dW5kcy5oPgpAQCAtNDIsNyArNDEsNiBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYg
dm0sIEpTR2xvCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQogewotICAgIGdsb2JhbE9iamVjdC0+dGhyZWFkTG9jYWxDYWNoZSgpLmluc3RhbGwodm0s
ICZtX3ByZXZpb3VzVExDKTsKICAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZm
ZWN0T25DdXJyZW50VGhyZWFkKCkpOwogICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5jcHAJKHJldmlzaW9uIDIzMDIy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVj
dCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrRGVzdHJveUZ1bmMKIH07CiAKIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGU6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUo
KQotICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwsIFNlY3VyaXR5S2luZDo6RGFuZ2Vyb3VzQml0cykpCisgICAgOiBIZWFw
Q2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2Vs
bCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA0
LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgR0Mgc2hvdWxk
bid0IGRvIG9iamVjdCBkaXN0YW5jaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODQxOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aHJlYWRMb2NhbENhY2hlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL09yaWdp
blRocmVhZExvY2FsQ2FjaGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvT3JpZ2luVGhy
ZWFkTG9jYWxDYWNoZS5oOiBSZW1vdmVkLgorCiAyMDE4LTA0LTAzICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBQcmlvcml0aXplIGZpbGUgcHJvbWlzZXMg
b3ZlciBmaWxlbmFtZXMgZHVyaW5nIGRyYWcgYW5kIGRyb3AKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShy
ZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTM0Nyw3ICsxMzQ3LDYgQEAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzLmNwcAogcGFnZS9OYXZpZ2F0b3IuY3BwCiBwYWdlL05hdmlnYXRvckJhc2UuY3BwCiBwYWdl
L09yaWdpbkFjY2Vzc0VudHJ5LmNwcAotcGFnZS9PcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNwcAog
cGFnZS9QYWdlLmNwcAogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKIHBhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw3
ICszNDIsNiBAQAogCQkwRjU4MENGRjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNr
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU4
MENGQjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1ODBGQTMxNDk2OTM5MTAw
RkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU4MEZBMTE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGls
ZWRCYWNraW5nTGF5ZXIuaCAqLzsgfTsKIAkJMEY1ODBGQUYxNDk4MDBENDAwRkI1QkQ4IC8qIEFu
aW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNUI0
MDhBMjAyMTJGNzcwMDgwRjkxMyAvKiBPcmlnaW5UaHJlYWRMb2NhbENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCNDA4ODIwMjEyRjczMDA4
MEY5MTMgLyogT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oICovOyB9OwogCQkwRjVCN0E1NTEwRjY1
RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAvKiBS
ZW5kZXJFbWJlZGRlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNUUyMDA2MThFNzcxRkMwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNUUyMDA1MThFNzcxRkMwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYw
NUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVCMTVGOTQ4NDgwMDRE
RjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NTc3LDggKzU1NzYsNiBAQAogCQkwRjU4MEZBMTE0
OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZWRCYWNraW5nTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViVGlsZWRCYWNraW5nTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1ODBGQTIxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2lu
Z0xheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGls
ZWRCYWNraW5nTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTgwRkFF
MTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGNUI0MDg4MjAyMTJGNzMwMDgwRjkxMyAvKiBPcmlnaW5UaHJlYWRMb2Nh
bENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpblRocmVhZExv
Y2FsQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1QjQwODkyMDIxMkY3
MzAwODBGOTEzIC8qIE9yaWdpblRocmVhZExvY2FsQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUI3QTUyMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJFbWJlZGRlZE9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMjAwNTE4RTc3MUZDMDAzRUMzRTUgLyogUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTkwNjgsOCArMTkwNjUsNiBAQAogCQkJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBOYXZp
Z2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLywKIAkJCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovLAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBE
QiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oICovLAotCQkJCTBGNUI0MDg5MjAyMTJGNzMwMDgwRjkx
MyAvKiBPcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNwcCAqLywKLQkJCQkwRjVCNDA4ODIwMjEyRjcz
MDA4MEY5MTMgLyogT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oICovLAogCQkJCTY1RkVBODY4MDk4
MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLywKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1
MEEgLyogUGFnZS5oICovLAogCQkJCUNENUU1QjYwMUExNUYxNTYwMDBDNjA5RSAvKiBQYWdlQ29u
ZmlndXJhdGlvbi5jcHAgKi8sCkBAIC0yOTIwMiw3ICsyOTE5Nyw2IEBACiAJCQkJNDE4NEY1MTYx
RUFGMDVBODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU5RTg5RkMxNkUyREMwNTAwQTkwOEY4IC8qIE9yaWdpbkxvY2suaCBp
biBIZWFkZXJzICovLAotCQkJCTBGNUI0MDhBMjAyMTJGNzcwMDgwRjkxMyAvKiBPcmlnaW5UaHJl
YWRMb2NhbENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDU4MUZBRjE1MjBGOTFGMDAzQTdB
NzUgLyogT3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUREMEU4MUI4
REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjlGNTcy
MThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzUmVhZGFibGVCCiAKIGNvbnN0IENs
YXNzSW5mbyBKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiRE9NR2xvYmFsT2JqZWN0Iiwg
JkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNET01HbG9iYWxPYmplY3QpIH07CiAKLUpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUds
b2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8RE9NV3JhcHBlcldv
cmxkPiYmIHdvcmxkLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUsIFJlZlB0cjxKU0M6OlRocmVhZExvY2FsQ2FjaGU+JiYgdGhyZWFkTG9jYWxD
YWNoZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlLCBXVEZNb3ZlKHRocmVhZExvY2FsQ2FjaGUpKQorSlNET01HbG9iYWxPYmplY3Q6
OkpTRE9NR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxET01X
cmFwcGVyV29ybGQ+JiYgd29ybGQsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9i
YWxPYmplY3RNZXRob2RUYWJsZSkKKyAgICA6IEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV93b3JsZChXVEZNb3ZlKHdvcmxkKSkK
ICAgICAsIG1fd29ybGRJc05vcm1hbChtX3dvcmxkLT5pc05vcm1hbCgpKQogICAgICwgbV9idWls
dGluSW50ZXJuYWxGdW5jdGlvbnModm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDIzMDIyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvY2tEdXJpbmdNYXJraW5nLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1RocmVhZExvY2FsQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
OSw3ICs0OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0IDoKIHBy
b3RlY3RlZDoKICAgICBzdHJ1Y3QgSlNET01HbG9iYWxPYmplY3REYXRhOwogCi0gICAgSlNET01H
bG9iYWxPYmplY3QoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPERPTVdyYXBwZXJXb3Js
ZD4mJiwgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyLCBSZWZQ
dHI8SlNDOjpUaHJlYWRMb2NhbENhY2hlPiYmID0gbnVsbHB0cik7CisgICAgSlNET01HbG9iYWxP
YmplY3QoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPERPTVdyYXBwZXJXb3JsZD4mJiwg
Y29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpKU09iamVj
dCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIGNvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG8KIH07CiAKIEpTRE9NV2luZG93QmFz
ZTo6SlNET01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxE
T01XaW5kb3c+JiYgd2luZG93LCBKU0RPTVdpbmRvd1Byb3h5KiBwcm94eSkKLSAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHByb3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSwgd2luZG93ID8gJndpbmRvdy0+ZG9jdW1lbnQoKS0+dGhyZWFkTG9jYWxD
YWNoZSgpIDogbnVsbHB0cikKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUs
IHByb3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1fd2lu
ZG93Q2xvc2VXYXRjaHBvaW50cygod2luZG93ICYmIHdpbmRvdy0+ZnJhbWUoKSkgPyBJc1dhdGNo
ZWQgOiBJc0ludmFsaWRhdGVkKQogICAgICwgbV93cmFwcGVkKFdURk1vdmUod2luZG93KSkKICAg
ICAsIG1fcHJveHkocHJveHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDIzMDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMSw3ICsxMzEsNiBAQAogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1
ZGUgIk5vZGVXaXRoSW5kZXguaCIKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgotI2lu
Y2x1ZGUgIk9yaWdpblRocmVhZExvY2FsQ2FjaGUuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKQEAgLTc3NjcsMTYgKzc3NjYsNCBAQCB2b2lkIERvY3VtZW50OjpzZXRTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvCiB9CiAjZW5kaWYKIAotSlNDOjpUaHJlYWRMb2NhbENhY2hlJiBEb2N1bWVudDo6
dGhyZWFkTG9jYWxDYWNoZSgpCi17Ci0gICAgaWYgKCFtX3RocmVhZExvY2FsQ2FjaGUpIHsKLSAg
ICAgICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAg
IGlmIChvcmlnaW4uaXNVbmlxdWUoKSB8fCAob3JpZ2luLmlzTG9jYWwoKSAmJiBvcmlnaW4uZW5m
b3JjZXNGaWxlUGF0aFNlcGFyYXRpb24oKSkpCi0gICAgICAgICAgICBtX3RocmVhZExvY2FsQ2Fj
aGUgPSBKU0M6OlRocmVhZExvY2FsQ2FjaGU6OmNyZWF0ZShjb21tb25WTSgpLmhlYXApOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3RocmVhZExvY2FsQ2FjaGUgPSBPcmlnaW5UaHJlYWRM
b2NhbENhY2hlOjpjcmVhdGUob3JpZ2luKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX3RocmVhZExv
Y2FsQ2FjaGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlVzZXJBY3Rpb25F
bGVtZW50U2V0LmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJW
aXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRMb2NhbENh
Y2hlLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNDE0LDggKzE0MTMsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYW5kbGluZ1RvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsaW5n
VG91Y2hFdmVudDsgfQogI2VuZGlmCiAKLSAgICBKU0M6OlRocmVhZExvY2FsQ2FjaGUmIHRocmVh
ZExvY2FsQ2FjaGUoKTsKLQogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KQogICAgIGJvb2wgaGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKTsKICAgICB2b2lkIHNldEhh
c1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGNv
bnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbik7CkBAIC0xOTA2LDggKzE5MDMsNiBAQCBwcml2YXRl
OgogCiAgICAgSGFzaFNldDxBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIqPiBtX2FwcGxp
Y2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcnM7CiAgICAgCi0gICAgUmVmUHRyPEpTQzo6VGhyZWFk
TG9jYWxDYWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOwotCiAjaWYgSEFWRShDRk5FVFdPUktfU1RP
UkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIG1fcHJpbWFyeURvbWFpblJlcXVlc3RlZFBh
Z2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uIHsgfTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5UaHJlYWRMb2NhbENhY2hlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpblRocmVhZExvY2FsQ2FjaGUuY3Bw
CShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpblRocmVhZExv
Y2FsQ2FjaGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiT3JpZ2luVGhyZWFkTG9jYWxDYWNoZS5oIgotCi0jaW5jbHVkZSAiQ29tbW9uVk0u
aCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBPcmlnaW5UaHJl
YWRMb2NhbENhY2hlKj4gVGhyZWFkTG9jYWxDYWNoZU1hcDsKLQotc3RhdGljIFRocmVhZExvY2Fs
Q2FjaGVNYXAmIHRocmVhZExvY2FsQ2FjaGVNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUaHJlYWRMb2NhbENhY2hlTWFwPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotUmVm
PE9yaWdpblRocmVhZExvY2FsQ2FjaGU+IE9yaWdpblRocmVhZExvY2FsQ2FjaGU6OmNyZWF0ZShT
ZWN1cml0eU9yaWdpbiYga2V5KQotewotICAgIGF1dG8gaXRlciA9IHRocmVhZExvY2FsQ2FjaGVN
YXAoKS5maW5kKCZrZXkpOwotICAgIGlmIChpdGVyICE9IHRocmVhZExvY2FsQ2FjaGVNYXAoKS5l
bmQoKSkKLSAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKLSAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBPcmlnaW5UaHJlYWRMb2NhbENhY2hlKGtleSkpOwotfQotCi1PcmlnaW5UaHJl
YWRMb2NhbENhY2hlOjp+T3JpZ2luVGhyZWFkTG9jYWxDYWNoZSgpCi17Ci0gICAgYm9vbCByZXN1
bHQgPSB0aHJlYWRMb2NhbENhY2hlTWFwKCkucmVtb3ZlKG1fa2V5KTsKLSAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQpOwotfQotCi1PcmlnaW5UaHJlYWRMb2NhbENhY2hlOjpPcmlnaW5UaHJlYWRM
b2NhbENhY2hlKFNlY3VyaXR5T3JpZ2luJiBrZXkpCi0gICAgOiBUaHJlYWRMb2NhbENhY2hlKGNv
bW1vblZNKCkuaGVhcCwgSlNDOjp1bmlxdWVTZWN1cml0eU9yaWdpblRva2VuKCkpCi0gICAgLCBt
X2tleSgma2V5KQotewotICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkTG9jYWxDYWNoZU1hcCgpLmFk
ZCgma2V5LCB0aGlzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luVGhyZWFk
TG9jYWxDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luVGhy
ZWFkTG9jYWxDYWNoZS5oCShyZXZpc2lvbiAyMzAyMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L09yaWdpblRocmVhZExvY2FsQ2FjaGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1RocmVhZExvY2FsQ2FjaGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBP
cmlnaW5UaHJlYWRMb2NhbENhY2hlIGZpbmFsIDogcHVibGljIEpTQzo6VGhyZWFkTG9jYWxDYWNo
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPcmlnaW5UaHJlYWRMb2NhbENhY2hlPiBjcmVh
dGUoU2VjdXJpdHlPcmlnaW4mKTsKLSAgICAKLSAgICB+T3JpZ2luVGhyZWFkTG9jYWxDYWNoZSgp
IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE9yaWdpblRocmVhZExvY2FsQ2Fj
aGUoU2VjdXJpdHlPcmlnaW4mKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1f
a2V5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCg==
</data>
<flag name="review"
          id="355559"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>