<?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>187342</bug_id>
          
          <creation_ts>2018-07-05 06:28:56 -0700</creation_ts>
          <short_desc>Move CSSParserContext to a file of its own</short_desc>
          <delta_ts>2018-07-05 08:47:20 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1439376</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-07-05 06:28:56 -0700</bug_when>
    <thetext>It is currently spread around CSSParserMode.h and CSSParser.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439378</commentid>
    <comment_count>1</comment_count>
      <attachid>344324</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-07-05 06:37:02 -0700</bug_when>
    <thetext>Created attachment 344324
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439383</commentid>
    <comment_count>2</comment_count>
      <attachid>344326</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-07-05 06:41:49 -0700</bug_when>
    <thetext>Created attachment 344326
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439392</commentid>
    <comment_count>3</comment_count>
      <attachid>344327</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-07-05 07:23:04 -0700</bug_when>
    <thetext>Created attachment 344327
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439397</commentid>
    <comment_count>4</comment_count>
      <attachid>344327</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-05 08:46:32 -0700</bug_when>
    <thetext>Comment on attachment 344327
patch

Clearing flags on attachment: 344327

Committed r233520: &lt;https://trac.webkit.org/changeset/233520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439398</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-05 08:46:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439399</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-05 08:47:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/41849589&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344324</attachid>
            <date>2018-07-05 06:37:02 -0700</date>
            <delta_ts>2018-07-05 06:41:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cssparsermode-file.patch</filename>
            <type>text/plain</type>
            <size>35024</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzUxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA3LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENTU1BhcnNlckNvbnRl
eHQgdG8gYSBmaWxlIG9mIGl0cyBvd24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgaXQgb3V0IGZyb20gQ1NTUGFyc2VyTW9kZS5oIGFuZCBDU1NQ
YXJzZXIuY3BwLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAg
ICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
RGVmZXJyZWRQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzdHJpY3RDU1NQYXJzZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2Rl
LmguCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0SGFzaDo6aGFzaCk6CisKKyAg
ICAgICAgQWxzbyBhZGQgdGhlIG1pc3NpbmcgYml0cyB0byB0aGUgaGFzaCBmdW5jdGlvbi4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjppc1F1aXJrc01vZGVCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppc1VBU2hlZXRCZWhhdmlvcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjppc1VuaXRMZXNzVmFsdWVQYXJzaW5nRW5hYmxlZEZvck1vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6aXNDU1NWaWV3cG9ydFBhcnNpbmdFbmFibGVkRm9yTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpY3RUb0NTU1BhcnNlck1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Y29tcGxldGVVUkwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OkNTU1BhcnNlckNvbnRleHQ+Ojppc0RlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD46OmVtcHR5VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Lmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHA6CisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHA6CisKIDIwMTgtMDctMDUgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXSBG
aXggVlJEaXNwbGF5RXZlbnQgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZp
c2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjYzLDYgKzY2Myw3IEBAIGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwCiBjc3Mv
cGFyc2VyL0NTU0F0UnVsZUlELmNwcAogY3NzL3BhcnNlci9DU1NEZWZlcnJlZFBhcnNlci5jcHAK
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNw
cAogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCiBjc3MvcGFyc2VyL0NTU1BhcnNl
cklkaW9tcy5jcHAKIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDc0NSw2ICs0NzQ1LDcgQEAKIAkJRTQ5NDZFQUYxNTZF
NjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxl
UnVsZUltcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0OUJEOUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OUJEOUY5MTMxRkQyRUQw
MDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCAqLzsgfTsKIAkJRTRBMDA3ODMxQjgyMEVDODAwMkM1
QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIu
aCAqLzsgfTsKKwkJRTRBNzk5NTIyMEVFNEIxNDAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTc5OTRF
MjBFRTRBRTEwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggKi87IH07CiAJCUU0QTgxNEQ0
MUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4
NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNERBMUM3MEUx
MEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNEQ5MUM3MEUxMEQwMEJGODVB
QyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTRBODE0RTAxQzcz
MzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyog
SWRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKQEAgLTEwODQzLDcgKzEwODQ0LDcgQEAKIAkJ
OUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERpcmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjcxNEUxRTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQ
YXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50UGF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNzE0RTFGMUM5MTE2NjkwMEFDMEU5
MiAvKiBFdmVudFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRQ
YXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCODU1MzA1MjBFNzMzQjUwMDlF
RUY0RiAvKiBFdmVudFRhcmdldEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRXZlbnRUYXJnZXRGYWN0b3J5LmNwcDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCODU1MzA1MjBFNzMzQjUw
MDlFRUY0RiAvKiBFdmVudFRhcmdldEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI5Mjk5QjAxRjY3OTZBNDAwNjcyM0MyIC8qIFdlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBMjczRjMx
NzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkE4Mjc3ODFGMDYxNTY1MDBGNzFFNzUg
LyogTmF2aWdhdGlvbkRpc2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRpb25EaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0
MDEsNiArMTQ0MDIsOCBAQAogCQlFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERl
Y29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVVSTERlY29kZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZF
IC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGFVUkxEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRB
MTgyMkYxRjEzQkU1ODAwRkVGNjk4IC8qIFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUU0QTc5OTRFMjBFRTRBRTEwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQu
aDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU0QTc5OTUwMjBFRTRBRTIwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQu
Y3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDUxQzZE
RUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDcxQzcwRTEwNTAwQkY4NUFDIC8qIEF0
dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTUsNiArMjA3OTgsOCBAQAogCQkJCTk0NDc2QkQ5MURGQ0E0
QTcwMDY5MEUyMyAvKiBDU1NEZWZlcnJlZFBhcnNlci5oICovLAogCQkJCTk0NkQzNzI4MUQ2Q0Iy
OEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0NkQzNzI5MUQ2Q0IyOEIwMDc3
MDg0RiAvKiBDU1NQYXJzZXIuaCAqLywKKwkJCQlFNEE3OTk1MDIwRUU0QUUyMDBDMTk1NjggLyog
Q1NTUGFyc2VyQ29udGV4dC5jcHAgKi8sCisJCQkJRTRBNzk5NEUyMEVFNEFFMTAwQzE5NTY4IC8q
IENTU1BhcnNlckNvbnRleHQuaCAqLywKIAkJCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyog
Q1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLywKIAkJCQk5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYg
LyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8sCiAJCQkJOTRERTVDN0QxRDc4Q0IyNTAwMTY0RjJB
IC8qIENTU1BhcnNlcklkaW9tcy5jcHAgKi8sCkBAIC0yODc3OSw2ICsyODc4NCw3IEBACiAJCQkJ
NzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTRBNzk5NTIyMEVFNEIxNDAwQzE5NTY4IC8qIENTU1BhcnNl
ckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMEEzNkJEMURBQzVGQUQwMDZEN0QwOSAv
KiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYw
MDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOTAy
RDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Q
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lv
bkVycm9yLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJ
KHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJz
ZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUg
IkRlcHJlY2F0ZWRDU1NPTVZhbHVlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1
ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCShyZXZpc2lvbiAy
MzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkNhY2hlUG9saWN5LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0RlZmVycmVkUGFyc2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NEZWZlcnJlZFBhcnNl
ci5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0Rl
ZmVycmVkUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAko
cmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3NiArNTAsOSBAQAogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1jb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q1NTUGFyc2VyQ29udGV4dD4gc3RyaWN0Q29udGV4dChIVE1MU3RhbmRhcmRNb2Rl
KTsKLSAgICByZXR1cm4gc3RyaWN0Q29udGV4dDsKLX0KLQotQ1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCkKLSAg
ICA6IGJhc2VVUkwoYmFzZVVSTCkKLSAgICAsIG1vZGUobW9kZSkKLXsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRv
IHdvcmsgb24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCi0g
ICAgLy8gdG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVy
IGlzIHRvIGJlIGhhbmRsZWQgYnk6Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IElu
dmVzdGlnYXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBh
bmQgVUlXZWJWaWV3Ci0gICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSB0cnVlOwotI2VuZGlm
Ci19Ci0KLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHNoZWV0QmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQotICAg
IDogYmFzZVVSTChzaGVldEJhc2VVUkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBz
aGVldEJhc2VVUkwpCi0gICAgLCBjaGFyc2V0KGNoYXJzZXQpCi0gICAgLCBtb2RlKGRvY3VtZW50
LmluUXVpcmtzTW9kZSgpID8gSFRNTFF1aXJrc01vZGUgOiBIVE1MU3RhbmRhcmRNb2RlKQotICAg
ICwgaXNIVE1MRG9jdW1lbnQoZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAsIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4oc2hlZXRCYXNlVVJMLmlzTnVsbCgpIHx8IGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChiYXNlVVJMKSkKLXsKLSAgICAKLSAgICBuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50LnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MoKTsKLSAgICBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgPSBkb2N1bWVu
dC5zZXR0aW5ncygpLmVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKCk7Ci0gICAgdXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IGRvY3VtZW50LnNldHRpbmdz
KCkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpOwotI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCi0gICAgdGV4dEF1dG9zaXppbmdFbmFibGVkID0gZG9jdW1lbnQu
c2V0dGluZ3MoKS50ZXh0QXV0b3NpemluZ0VuYWJsZWQoKTsKLSNlbmRpZgotICAgIHNwcmluZ1Rp
bWluZ0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5nRnVu
Y3Rpb25FbmFibGVkKCk7Ci0gICAgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50
LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgpOwotICAgIGNvbmljR3JhZGll
bnRzRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29uaWNHcmFkaWVudHNFbmFibGVkKCk7
Ci0gICAgY29sb3JGaWx0ZXJFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5jb2xvckZpbHRl
ckVuYWJsZWQoKTsKLSAgICBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0
aW5ncygpLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpOwotICAgIGFsbG93TmV3TGluZXNDbGFt
cCA9IGRvY3VtZW50LnNldHRpbmdzKCkuYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQoKTsKLSAg
ICB1c2VTeXN0ZW1BcHBlYXJhbmNlID0gZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgp
LT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxzZTsKLSAgICAKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdv
cmsgb24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCi0gICAg
Ly8gdG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlz
IHRvIGJlIGhhbmRsZWQgYnk6Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVz
dGlnYXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQg
VUlXZWJWaWV3Ci0gICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSB0cnVlOwotI2VuZGlmCi19
Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBiKQotewotICAgIHJldHVybiBhLmJhc2VVUkwgPT0gYi5iYXNlVVJMCi0g
ICAgICAgICYmIGEuY2hhcnNldCA9PSBiLmNoYXJzZXQKLSAgICAgICAgJiYgYS5tb2RlID09IGIu
bW9kZQotICAgICAgICAmJiBhLmlzSFRNTERvY3VtZW50ID09IGIuaXNIVE1MRG9jdW1lbnQKLSAg
ICAgICAgJiYgYS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9PSBiLm5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzCi0gICAgICAgICYmIGEuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlID09
IGIuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlCi0gICAgICAgICYmIGEudXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91
bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IKLSAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlv
bkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKLSAgICAgICAgJiYgYS5j
b25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAot
ICAgICAgICAmJiBhLmNvbmljR3JhZGllbnRzRW5hYmxlZCA9PSBiLmNvbmljR3JhZGllbnRzRW5h
YmxlZAotICAgICAgICAmJiBhLmNvbG9yRmlsdGVyRW5hYmxlZCA9PSBiLmNvbG9yRmlsdGVyRW5h
YmxlZAotICAgICAgICAmJiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9PSBiLmRlZmVycmVk
Q1NTUGFyc2VyRW5hYmxlZAotICAgICAgICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4g
PT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luCi0gICAgICAgICYmIGEudXNlU3lzdGVtQXBw
ZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFuY2U7Ci19Ci0KIENTU1BhcnNlcjo6Q1NTUGFy
c2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNp
b24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDIzMzQ3MykJKGZyb20gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJNb2RlLmg6MjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0g
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKKworLy8g
TXVzdCBub3QgZ3JvdyBiZXlvbmQgMyBiaXRzLCBkdWUgdG8gcGFja2luZyBpbiBTdHlsZVByb3Bl
cnRpZXMuCitlbnVtIENTU1BhcnNlck1vZGUgeworICAgIEhUTUxTdGFuZGFyZE1vZGUsCisgICAg
SFRNTFF1aXJrc01vZGUsCisgICAgLy8gSFRNTCBhdHRyaWJ1dGVzIGFyZSBwYXJzZWQgaW4gcXVp
cmtzIG1vZGUgYnV0IGFsc28gYWxsb3dzIGludGVybmFsIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4K
KyAgICBIVE1MQXR0cmlidXRlTW9kZSwKKyAgICAvLyBTVkcgYXR0cmlidXRlcyBhcmUgcGFyc2Vk
IGluIHF1aXJrcyBtb2RlIGJ1dCBydWxlcyBkaWZmZXIgc2xpZ2h0bHkuCisgICAgU1ZHQXR0cmli
dXRlTW9kZSwKKyAgICAvLyBAdmlld3BvcnQgcnVsZXMgYXJlIHBhcnNlZCBpbiBzdGFuZGFyZHMg
bW9kZSBidXQgQ1NTT00gbW9kaWZpY2F0aW9ucyAodmlhIFN0eWxlUHJvcGVydHlTZXQpCisgICAg
Ly8gbXVzdCBjYWxsIHBhcnNlVmlld3BvcnRQcm9wZXJ0aWVzIHNvIG5lZWRzIGEgc3BlY2lhbCBt
b2RlLgorICAgIENTU1ZpZXdwb3J0UnVsZU1vZGUsCisgICAgLy8gVXNlciBhZ2VudCBzdHlsZXNo
ZWV0cyBhcmUgcGFyc2VkIGluIHN0YW5kYXJkcyBtb2RlIGJ1dCBhbHNvIGFsbG93cyBpbnRlcm5h
bCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuCisgICAgVUFTaGVldE1vZGUKK307CisKK2lubGluZSBi
b29sIGlzUXVpcmtzTW9kZUJlaGF2aW9yKENTU1BhcnNlck1vZGUgbW9kZSkKK3sKKyAgICByZXR1
cm4gbW9kZSA9PSBIVE1MUXVpcmtzTW9kZSB8fCBtb2RlID09IEhUTUxBdHRyaWJ1dGVNb2RlOwor
fQorCitpbmxpbmUgYm9vbCBpc1VBU2hlZXRCZWhhdmlvcihDU1NQYXJzZXJNb2RlIG1vZGUpCit7
CisgICAgcmV0dXJuIG1vZGUgPT0gVUFTaGVldE1vZGU7Cit9CisKK2lubGluZSBib29sIGlzVW5p
dExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2RlIG1vZGUpCit7Cisg
ICAgcmV0dXJuIG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGUgfHwgbW9kZSA9PSBTVkdBdHRyaWJ1
dGVNb2RlOworfQorCitpbmxpbmUgYm9vbCBpc0NTU1ZpZXdwb3J0UGFyc2luZ0VuYWJsZWRGb3JN
b2RlKENTU1BhcnNlck1vZGUgbW9kZSkKK3sKKyAgICByZXR1cm4gbW9kZSA9PSBDU1NWaWV3cG9y
dFJ1bGVNb2RlOworfQorCisvLyBGSVhNRS1ORVdQQVJTRVI6IE5leHQgdHdvIGZ1bmN0aW9ucyBz
aG91bGQgYmUgcmVtb3ZlZCBldmVudHVhbGx5LgoraW5saW5lIENTU1BhcnNlck1vZGUgc3RyaWN0
VG9DU1NQYXJzZXJNb2RlKGJvb2wgaW5TdHJpY3RNb2RlKQoreworICAgIHJldHVybiBpblN0cmlj
dE1vZGUgPyBIVE1MU3RhbmRhcmRNb2RlIDogSFRNTFF1aXJrc01vZGU7Cit9CisKK2lubGluZSBi
b29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7Cisg
ICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gVUFTaGVldE1vZGUgfHwgY3NzUGFyc2VyTW9kZSA9
PSBIVE1MU3RhbmRhcmRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZTsK
K30KKworc3RydWN0IENTU1BhcnNlckNvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3Qg
VVJMJiBiYXNlVVJMID0gVVJMKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIENTU1BhcnNlckNvbnRl
eHQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CisKKyAgICBVUkwgYmFzZVVSTDsKKyAgICBTdHJpbmcg
Y2hhcnNldDsKKyAgICBDU1NQYXJzZXJNb2RlIG1vZGUgeyBIVE1MU3RhbmRhcmRNb2RlIH07Cisg
ICAgYm9vbCBpc0hUTUxEb2N1bWVudCB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKKyAgICBib29sIHRleHRBdXRvc2l6aW5nRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYK
KyAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzIHsgZmFsc2UgfTsKKyAgICBib29sIGVu
Zm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSB7IHRydWUgfTsKKyAgICBib29sIHVzZUxl
Z2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OworICAgIGJvb2wg
c3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbnN0YW50
UHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgY29uaWNHcmFkaWVudHNFbmFi
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbG9yRmlsdGVyRW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgYWxs
b3dOZXdMaW5lc0NsYW1wIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIG9ubHkgbmVl
ZGVkIHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgorICAgIGJvb2wgaGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbiB7IGZhbHNlIH07CisgICAgCisgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJh
bmNlIHsgZmFsc2UgfTsKKworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1
cm4gVVJMKCk7CisgICAgICAgIGlmIChjaGFyc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiBVUkwoYmFzZVVSTCwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmws
IFRleHRFbmNvZGluZyhjaGFyc2V0KSk7CisgICAgfQorfTsKKworYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCitXRUJDT1JFX0VYUE9SVCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CisKK3N0cnVjdCBD
U1NQYXJzZXJDb250ZXh0SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYga2V5KQorICAgIHsKKyAgICAgICAgYXV0byBoYXNoID0gVVJMSGFzaDo6
aGFzaChrZXkuYmFzZVVSTCk7CisgICAgICAgIGlmICgha2V5LmNoYXJzZXQuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgaGFzaCBePSBTdHJpbmdIYXNoOjpoYXNoKGtleS5jaGFyc2V0KTsKKyAgICAg
ICAgdW5zaWduZWQgYml0cyA9IGtleS5pc0hUTUxEb2N1bWVudCAgICAgICAgICAgICAgICAgIDw8
IDAKKyAgICAgICAgICAgICYga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IDEKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorICAgICAgICAgICAgJiBr
ZXkudGV4dEF1dG9zaXppbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMgorI2VuZGlm
CisgICAgICAgICAgICAmIGtleS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyAgICAgICAgICAgICAg
ICAgICA8PCAzCisgICAgICAgICAgICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJr
c01vZGUgICAgICAgICA8PCA0CisgICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5k
U2l6ZVNob3J0aGFuZEJlaGF2aW9yICA8PCA1CisgICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1p
bmdGdW5jdGlvbkVuYWJsZWQgICAgICAgICAgICAgICA8PCA2CisgICAgICAgICAgICAmIGtleS5j
b25pY0dyYWRpZW50c0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCA3CisgICAgICAgICAg
ICAmIGtleS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA4Cisg
ICAgICAgICAgICAmIGtleS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAg
ICA8PCA5CisgICAgICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMAorICAgICAgICAgICAgJiBrZXkuYWxsb3dOZXdMaW5lc0NsYW1wICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMTE7CisgICAgICAgIGhhc2ggXj0gV1RGOjppbnRIYXNo
KGJpdHMpOworICAgICAgICByZXR1cm4gaGFzaDsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYikK
KyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdl
YkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxl
dGVkVmFsdWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51bGws
ICZzbG90LmJhc2VVUkwpIFdlYkNvcmU6OlVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpDU1NQYXJz
ZXJDb250ZXh0JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuYmFzZVVSTC5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOyB9CisgICAgc3RhdGljIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQgZW1wdHlW
YWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQoV2ViQ29yZTo6SFRNTFN0
YW5kYXJkTW9kZSk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNv
cmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKKyAgICB0eXBlZGVmIFdlYkNvcmU6OkNTU1BhcnNlckNv
bnRleHRIYXNoIEhhc2g7Cit9OworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAkocmV2aXNpb24gMjMzNDczKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzUgKzEsMzEgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VD
SCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVVJMSGFz
aC5oIgpAQCAtNDAsNTIgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1
bWVudDsKIAotLy8gTXVzdCBub3QgZ3JvdyBiZXlvbmQgMyBiaXRzLCBkdWUgdG8gcGFja2luZyBp
biBTdHlsZVByb3BlcnRpZXMuCi1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIEhUTUxTdGFuZGFy
ZE1vZGUsCi0gICAgSFRNTFF1aXJrc01vZGUsCi0gICAgLy8gSFRNTCBhdHRyaWJ1dGVzIGFyZSBw
YXJzZWQgaW4gcXVpcmtzIG1vZGUgYnV0IGFsc28gYWxsb3dzIGludGVybmFsIHByb3BlcnRpZXMg
YW5kIHZhbHVlcy4KLSAgICBIVE1MQXR0cmlidXRlTW9kZSwKLSAgICAvLyBTVkcgYXR0cmlidXRl
cyBhcmUgcGFyc2VkIGluIHF1aXJrcyBtb2RlIGJ1dCBydWxlcyBkaWZmZXIgc2xpZ2h0bHkuCi0g
ICAgU1ZHQXR0cmlidXRlTW9kZSwKLSAgICAvLyBAdmlld3BvcnQgcnVsZXMgYXJlIHBhcnNlZCBp
biBzdGFuZGFyZHMgbW9kZSBidXQgQ1NTT00gbW9kaWZpY2F0aW9ucyAodmlhIFN0eWxlUHJvcGVy
dHlTZXQpCi0gICAgLy8gbXVzdCBjYWxsIHBhcnNlVmlld3BvcnRQcm9wZXJ0aWVzIHNvIG5lZWRz
IGEgc3BlY2lhbCBtb2RlLgotICAgIENTU1ZpZXdwb3J0UnVsZU1vZGUsCi0gICAgLy8gVXNlciBh
Z2VudCBzdHlsZXNoZWV0cyBhcmUgcGFyc2VkIGluIHN0YW5kYXJkcyBtb2RlIGJ1dCBhbHNvIGFs
bG93cyBpbnRlcm5hbCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuCi0gICAgVUFTaGVldE1vZGUKLX07
Ci0KLWlubGluZSBib29sIGlzUXVpcmtzTW9kZUJlaGF2aW9yKENTU1BhcnNlck1vZGUgbW9kZSkK
LXsKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MUXVpcmtzTW9kZSB8fCBtb2RlID09IEhUTUxBdHRy
aWJ1dGVNb2RlOwotfQotCi1pbmxpbmUgYm9vbCBpc1VBU2hlZXRCZWhhdmlvcihDU1NQYXJzZXJN
b2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIG1vZGUgPT0gVUFTaGVldE1vZGU7Ci19Ci0KLWlubGlu
ZSBib29sIGlzVW5pdExlc3NWYWx1ZVBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2Rl
IG1vZGUpCi17Ci0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGUgfHwgbW9kZSA9
PSBTVkdBdHRyaWJ1dGVNb2RlOwotfQotCi1pbmxpbmUgYm9vbCBpc0NTU1ZpZXdwb3J0UGFyc2lu
Z0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKLXsKLSAgICByZXR1cm4gbW9kZSA9
PSBDU1NWaWV3cG9ydFJ1bGVNb2RlOwotfQotCi0vLyBGSVhNRS1ORVdQQVJTRVI6IE5leHQgdHdv
IGZ1bmN0aW9ucyBzaG91bGQgYmUgcmVtb3ZlZCBldmVudHVhbGx5LgotaW5saW5lIENTU1BhcnNl
ck1vZGUgc3RyaWN0VG9DU1NQYXJzZXJNb2RlKGJvb2wgaW5TdHJpY3RNb2RlKQotewotICAgIHJl
dHVybiBpblN0cmljdE1vZGUgPyBIVE1MU3RhbmRhcmRNb2RlIDogSFRNTFF1aXJrc01vZGU7Ci19
Ci0KLWlubGluZSBib29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCi17Ci0gICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gVUFTaGVldE1vZGUgfHwgY3Nz
UGFyc2VyTW9kZSA9PSBIVE1MU3RhbmRhcmRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0
cmlidXRlTW9kZTsKLX0KLQogc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTM2LDE5ICs4NiwyMSBAQCBzdHJ1Y3QgQ1NT
UGFyc2VyQ29udGV4dEhhc2ggewogICAgICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAg
ICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8
PCAwCi0gICAgICAgICAgICAmIGtleS5pc0hUTUxEb2N1bWVudCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAxCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgICAgICYg
a2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgIDw8IDIKKyAgICAg
ICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgIDw8
IDEKICNlbmRpZgotICAgICAgICAgICAgJiBrZXkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgICAg
ICAgICAgICAgICAgICAgPDwgMwotICAgICAgICAgICAgJiBrZXkuZW5mb3JjZXNDU1NNSU1FVHlw
ZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgNAotICAgICAgICAgICAgJiBrZXkudXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciAgPDwgNQotICAgICAgICAgICAgJiBrZXku
c3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkICAgICAgICAgICAgICAgPDwgNgorICAgICAgICAg
ICAgJiBrZXkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgICAgICAgICAgICAgICAgICAgPDwgMgor
ICAgICAgICAgICAgJiBrZXkuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlICAgICAg
ICAgPDwgMworICAgICAgICAgICAgJiBrZXkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhh
bmRCZWhhdmlvciAgPDwgNAorICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5nRnVuY3Rpb25F
bmFibGVkICAgICAgICAgICAgICAgPDwgNQorICAgICAgICAgICAgJiBrZXkuY29uc3RhbnRQcm9w
ZXJ0aWVzRW5hYmxlZCAgICAgICAgICAgICAgICAgPDwgNgogICAgICAgICAgICAgJiBrZXkuY29u
aWNHcmFkaWVudHNFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgNwotICAgICAgICAgICAg
JiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkICAgICAgICAgICAgICAgICAgPDwgOAotICAg
ICAgICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiAgICAgICAgICAgICAgICAg
PDwgOQotICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgMTAKLSAgICAgICAgICAgICYga2V5LmFsbG93TmV3TGluZXNDbGFtcCAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IDExOworICAgICAgICAgICAgJiBrZXkuY29sb3JGaWx0ZXJF
bmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgPDwgOAorICAgICAgICAgICAgJiBrZXkuZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkICAgICAgICAgICAgICAgICAgPDwgOQorICAgICAgICAgICAg
JiBrZXkuYWxsb3dOZXdMaW5lc0NsYW1wICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTAKKyAg
ICAgICAgICAgICYga2V5Lmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAg
IDw8IDExCisgICAgICAgICAgICAmIGtleS51c2VTeXN0ZW1BcHBlYXJhbmNlICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMgorICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMTM7IC8vIEtlZXAgdGhpcyBsYXN0LgogICAgICAgICBo
YXNoIF49IFdURjo6aW50SGFzaChiaXRzKTsKICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCShyZXZp
c2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9t
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAkocmV2aXNpb24gMjMz
NDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkNTU0RlZmVycmVkUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck1vZGUuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE2ICsz
MCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoRnVu
Y3Rpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotCiAvLyBNdXN0IG5vdCBncm93IGJleW9uZCAz
IGJpdHMsIGR1ZSB0byBwYWNraW5nIGluIFN0eWxlUHJvcGVydGllcy4KIGVudW0gQ1NTUGFyc2Vy
TW9kZSB7CiAgICAgSFRNTFN0YW5kYXJkTW9kZSwKQEAgLTg2LDg5ICs3OCw0IEBAIGlubGluZSBi
b29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXIKICAgICByZXR1cm4gY3NzUGFyc2VyTW9k
ZSA9PSBVQVNoZWV0TW9kZSB8fCBjc3NQYXJzZXJNb2RlID09IEhUTUxTdGFuZGFyZE1vZGUgfHwg
Y3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOwogfQogCi1zdHJ1Y3QgQ1NTUGFyc2Vy
Q29udGV4dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ1NT
UGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ1NTUGFyc2VyQ29udGV4dChEb2N1bWVudCYsIGNvbnN0IFVS
TCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQgPSBlbXB0eVN0cmluZygp
KTsKLQotICAgIFVSTCBiYXNlVVJMOwotICAgIFN0cmluZyBjaGFyc2V0OwotICAgIENTU1BhcnNl
ck1vZGUgbW9kZSB7IEhUTUxTdGFuZGFyZE1vZGUgfTsKLSAgICBib29sIGlzSFRNTERvY3VtZW50
IHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIGJvb2wgdGV4dEF1
dG9zaXppbmdFbmFibGVkIHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIGJvb2wgbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9R
dWlya3NNb2RlIHsgdHJ1ZSB9OwotICAgIGJvb2wgdXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9y
dGhhbmRCZWhhdmlvciB7IGZhbHNlIH07Ci0gICAgYm9vbCBzcHJpbmdUaW1pbmdGdW5jdGlvbkVu
YWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBjb25pY0dyYWRpZW50c0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgY29sb3JGaWx0ZXJFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGRlZmVycmVkQ1NTUGFy
c2VyRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBhbGxvd05ld0xpbmVzQ2xhbXAgeyBmYWxz
ZSB9OwotICAgIAotICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3VwcG9ydCBnZXRNYXRj
aGVkQ1NTUnVsZXMuCi0gICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIHsgZmFsc2Ug
fTsKLSAgICAKLSAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UgeyBmYWxzZSB9OwotCi0gICAg
VVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgaWYg
KGNoYXJzZXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwp
OwotICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCwgVGV4dEVuY29kaW5nKGNoYXJzZXQp
KTsKLSAgICB9Ci19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYikgeyByZXR1cm4g
IShhID09IGIpOyB9Ci0KLVdFQkNPUkVfRVhQT1JUIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHN0
cmljdENTU1BhcnNlckNvbnRleHQoKTsKLQotc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBrZXkpCi0g
ICAgewotICAgICAgICBhdXRvIGhhc2ggPSBVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsKLSAg
ICAgICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBoYXNoIF49IFN0
cmluZ0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOwotICAgICAgICB1bnNpZ25lZCBiaXRzID0ga2V5
LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMAotICAgICAgICAgICAgJiBrZXku
aXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMQotI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICAgICAmIGtleS50ZXh0QXV0b3NpemluZ0VuYWJs
ZWQgICAgICAgICAgICAgICAgICAgICA8PCAyCi0jZW5kaWYKLSAgICAgICAgICAgICYga2V5Lm5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzICAgICAgICAgICAgICAgICAgIDw8IDMKLSAgICAgICAgICAg
ICYga2V5LmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAgICAgIDw8IDQKLSAg
ICAgICAgICAgICYga2V5LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ig
IDw8IDUKLSAgICAgICAgICAgICYga2V5LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCAgICAg
ICAgICAgICAgIDw8IDYKLSAgICAgICAgICAgICYga2V5LmNvbmljR3JhZGllbnRzRW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgIDw8IDcKLSAgICAgICAgICAgICYga2V5LmRlZmVycmVkQ1NTUGFy
c2VyRW5hYmxlZCAgICAgICAgICAgICAgICAgIDw8IDgKLSAgICAgICAgICAgICYga2V5Lmhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAgIDw8IDkKLSAgICAgICAgICAgICYg
a2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEwCi0gICAg
ICAgICAgICAmIGtleS5hbGxvd05ld0xpbmVzQ2xhbXAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAxMTsKLSAgICAgICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7Ci0gICAgICAgIHJldHVy
biBoYXNoOwotICAgIH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGEgPT0gYjsKLSAgICB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4
dD4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQ
YXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29y
ZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQotICAgIHN0YXRpYyBib29sIGlz
RGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLSAgICBzdGF0
aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29y
ZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQotfTsKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4g
ewotICAgIHR5cGVkZWYgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2ggSGFzaDsKLX07Ci19
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NG
dW5jdGlvblZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NTaGFkb3dWYWx1ZS5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5j
cHAJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2Vs
ZWN0b3JQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JQYXJzZXIuaCIKIAotI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJp
YWJsZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NWYXJpYWJsZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVQYXJzZXIuaCIKIAogI2luY2x1ZGUgIkNT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344326</attachid>
            <date>2018-07-05 06:41:49 -0700</date>
            <delta_ts>2018-07-05 07:23:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cssparsermode-file-2.patch</filename>
            <type>text/plain</type>
            <size>40486</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzUxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA3LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENTU1BhcnNlckNvbnRl
eHQgdG8gYSBmaWxlIG9mIGl0cyBvd24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgaXQgb3V0IGZyb20gQ1NTUGFyc2VyTW9kZS5oIGFuZCBDU1NQ
YXJzZXIuY3BwLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAg
ICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
RGVmZXJyZWRQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzdHJpY3RDU1NQYXJzZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0cmljdENTU1BhcnNlckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKworICAgICAgICBBbHNvIGFkZCB0aGUg
bWlzc2luZyB0ZXh0QXV0b3NpemluZ0VuYWJsZWQgYml0LgorCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyTW9kZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhh
c2g6Omhhc2gpOgorCisgICAgICAgIEFsc28gYWRkIHRoZSBtaXNzaW5nIGJpdHMgdG8gdGhlIGhh
c2ggZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNRdWlya3NNb2RlQmVo
YXZpb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNVQVNoZWV0QmVoYXZpb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRG
b3JNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVmlld3BvcnRQYXJzaW5n
RW5hYmxlZEZvck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3RyaWN0VG9DU1NQ
YXJzZXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaWN0UGFyc2VyTW9k
ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaDoKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaDoKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OmNv
bXBsZXRlVVJMIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6OmVxdWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJD
b250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6aXNEZWxldGVkVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRl
eHQ+OjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJz
ZXIuY3BwOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwOgorCiAy
MDE4LTA3LTA1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXZWJWUl0gRml4IFZSRGlzcGxheUV2ZW50IGltcGxlbWVudGF0aW9uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Myw2ICs2NjMsNyBAQCBjc3MvV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmNwcAogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHAKIGNzcy9wYXJzZXIvQ1NTRGVm
ZXJyZWRQYXJzZXIuY3BwCiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKK2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5jcHAKIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAogY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3NDUsNiArNDc0NSw3IEBA
CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQw
MEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFs
dWVQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDlCRDlGOTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggKi87IH07CiAJCUU0QTAw
NzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8q
IERhdGFVUkxEZWNvZGVyLmggKi87IH07CisJCUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBD
U1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEE3OTk0RTIwRUU0QUUxMDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5oICov
OyB9OwogCQlFNEE4MTRENDFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgx
NEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovOyB9Owog
CQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTRE
OTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07
CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0REYxQzcz
MzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CkBAIC0xMDg0Myw3
ICsxMDg0NCw3IEBACiAJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1dpdGhEaXJl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3MTRFMUUxQzkxMTY2OTAw
QUMwRTkyIC8qIEV2ZW50UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFdmVudFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjcxNEUx
RjFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV2ZW50UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5Qjg1
NTMwNTIwRTczM0I1MDA5RUVGNEYgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHBhdGgg
PSBFdmVudFRhcmdldEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCOTI5OUIwMUY2Nzk2QTQwMDY3MjNDMiAvKiBX
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJDb250ZW50UmVhZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCQTI3M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0
Q2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2ljYWxTZWxlY3Rp
b25PZmZzZXRDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBODI3Nzgx
RjA2MTU2NTAwRjcxRTc1IC8qIE5hdmlnYXRpb25EaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uRGlzYWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0NDAxLDYgKzE0NDAyLDggQEAKIAkJRTRBMDA3ODIxQjgyMEVDODAwMkM1
QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhdGFVUkxEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTAwNzg0
MUI4MjBFRDMwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVVJMRGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0QTE4MjJGMUYxM0JFNTgwMEZFRjY5OCAvKiBTdHlsZUludmFsaWRhdGlv
bkZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE3OTk0RTIwRUU0QUUxMDBDMTk1Njgg
LyogQ1NTUGFyc2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
U1NQYXJzZXJDb250ZXh0Lmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE3OTk1MDIwRUU0QUUyMDBDMTk1NjggLyogQ1NT
UGFyc2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBD
U1NQYXJzZXJDb250ZXh0LmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8q
IENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QTgxNEQ1MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTgxNEQ3MUM3MEUx
MDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzk1LDYgKzIwNzk4LDggQEAKIAkJ
CQk5NDQ3NkJEOTFERkNBNEE3MDA2OTBFMjMgLyogQ1NTRGVmZXJyZWRQYXJzZXIuaCAqLywKIAkJ
CQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZE
MzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggKi8sCisJCQkJRTRBNzk5NTAyMEVF
NEFFMjAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQuY3BwICovLAorCQkJCUU0QTc5OTRFMjBF
RTRBRTEwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggKi8sCiAJCQkJOTQ5Qzc2RkUxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi8sCiAJCQkJOTQ5Qzc2RkYx
RDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovLAogCQkJCTk0REU1QzdE
MUQ3OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwICovLApAQCAtMjg3NzksNiAr
Mjg3ODQsNyBAQAogCQkJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVz
c2FnZVBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2MzNBNSAv
KiBKU01vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTc5OTUyMjBFRTRCMTQwMEMx
OTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBBMzZCRDFE
QUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzZGMDkwMkQxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMjMz
NDczKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAi
Q1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRFeHRlbnNpb25FcnJvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxl
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDIzMzQ3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNyArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NE
ZWZlcnJlZFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTRGVmZXJyZWRQYXJzZXIuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NEZWZlcnJlZFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2lu
Y2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNzYgKzUwLDkgQEAKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdURjsK
IAotY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENTU1BhcnNlckNvbnRleHQ+IHN0cmljdENvbnRleHQo
SFRNTFN0YW5kYXJkTW9kZSk7Ci0gICAgcmV0dXJuIHN0cmljdENvbnRleHQ7Ci19Ci0KLUNTU1Bh
cnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBtb2RlLCBjb25zdCBV
UkwmIGJhc2VVUkwpCi0gICAgOiBiYXNlVVJMKGJhc2VVUkwpCi0gICAgLCBtb2RlKG1vZGUpCi17
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBGb3JjZSB0aGUgc2l0ZSBzcGVjaWZp
YyBxdWlyayBiZWxvdyB0byB3b3JrIG9uIGlPUy4gSW52ZXN0aWdhdGluZyBvdGhlciBzaXRlIHNw
ZWNpZmljIHF1aXJrcwotICAgIC8vIHRvIHNlZSBpZiB3ZSBjYW4gZW5hYmxlIHRoZSBwcmVmZXJl
bmNlIGFsbCB0b2dldGhlciBpcyB0byBiZSBoYW5kbGVkIGJ5OgotICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS84NDkzMzA5PiBJbnZlc3RpZ2F0ZSBFbmFibGluZyBTaXRlIFNwZWNpZmljIFF1aXJrcyBp
biBNb2JpbGVTYWZhcmkgYW5kIFVJV2ViVmlldwotICAgIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtz
ID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1DU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVldEJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCkKLSAgICA6IGJhc2VVUkwoc2hlZXRCYXNlVVJMLmlzTnVsbCgpID8gZG9jdW1l
bnQuYmFzZVVSTCgpIDogc2hlZXRCYXNlVVJMKQotICAgICwgY2hhcnNldChjaGFyc2V0KQotICAg
ICwgbW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSA/IEhUTUxRdWlya3NNb2RlIDogSFRNTFN0
YW5kYXJkTW9kZSkKLSAgICAsIGlzSFRNTERvY3VtZW50KGRvY3VtZW50LmlzSFRNTERvY3VtZW50
KCkpCi0gICAgLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKHNoZWV0QmFzZVVSTC5pc051bGwo
KSB8fCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QoYmFzZVVSTCkpCi17Ci0g
ICAgCi0gICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBkb2N1bWVudC5zZXR0aW5ncygpLm5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7Ci0gICAgZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWly
a3NNb2RlID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtz
TW9kZSgpOwotICAgIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgPSBk
b2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZp
b3IoKTsKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHRleHRBdXRvc2l6aW5nRW5h
YmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCk7Ci0jZW5k
aWYKLSAgICBzcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygp
LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCgpOwotICAgIGNvbnN0YW50UHJvcGVydGllc0Vu
YWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQoKTsK
LSAgICBjb25pY0dyYWRpZW50c0VuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmNvbmljR3Jh
ZGllbnRzRW5hYmxlZCgpOwotICAgIGNvbG9yRmlsdGVyRW5hYmxlZCA9IGRvY3VtZW50LnNldHRp
bmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCk7Ci0gICAgZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQoKTsKLSAgICBh
bGxvd05ld0xpbmVzQ2xhbXAgPSBkb2N1bWVudC5zZXR0aW5ncygpLmFwcGxlTWFpbExpbmVzQ2xh
bXBFbmFibGVkKCk7Ci0gICAgdXNlU3lzdGVtQXBwZWFyYW5jZSA9IGRvY3VtZW50LnBhZ2UoKSA/
IGRvY3VtZW50LnBhZ2UoKS0+dXNlU3lzdGVtQXBwZWFyYW5jZSgpIDogZmFsc2U7Ci0gICAgCi0j
aWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBGb3JjZSB0aGUgc2l0ZSBzcGVjaWZpYyBx
dWlyayBiZWxvdyB0byB3b3JrIG9uIGlPUy4gSW52ZXN0aWdhdGluZyBvdGhlciBzaXRlIHNwZWNp
ZmljIHF1aXJrcwotICAgIC8vIHRvIHNlZSBpZiB3ZSBjYW4gZW5hYmxlIHRoZSBwcmVmZXJlbmNl
IGFsbCB0b2dldGhlciBpcyB0byBiZSBoYW5kbGVkIGJ5OgotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS84NDkzMzA5PiBJbnZlc3RpZ2F0ZSBFbmFibGluZyBTaXRlIFNwZWNpZmljIFF1aXJrcyBpbiBN
b2JpbGVTYWZhcmkgYW5kIFVJV2ViVmlldwotICAgIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0g
dHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYikKLXsKLSAgICByZXR1cm4gYS5iYXNlVVJM
ID09IGIuYmFzZVVSTAotICAgICAgICAmJiBhLmNoYXJzZXQgPT0gYi5jaGFyc2V0Ci0gICAgICAg
ICYmIGEubW9kZSA9PSBiLm1vZGUKLSAgICAgICAgJiYgYS5pc0hUTUxEb2N1bWVudCA9PSBiLmlz
SFRNTERvY3VtZW50Ci0gICAgICAgICYmIGEubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPT0gYi5u
ZWVkc1NpdGVTcGVjaWZpY1F1aXJrcwotICAgICAgICAmJiBhLmVuZm9yY2VzQ1NTTUlNRVR5cGVJ
bk5vUXVpcmtzTW9kZSA9PSBiLmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZQotICAg
ICAgICAmJiBhLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgPT0gYi51
c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yCi0gICAgICAgICYmIGEuc3By
aW5nVGltaW5nRnVuY3Rpb25FbmFibGVkID09IGIuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVk
Ci0gICAgICAgICYmIGEuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9PSBiLmNvbnN0YW50UHJv
cGVydGllc0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb25pY0dyYWRpZW50c0VuYWJsZWQgPT0gYi5j
b25pY0dyYWRpZW50c0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb2xvckZpbHRlckVuYWJsZWQgPT0g
Yi5jb2xvckZpbHRlckVuYWJsZWQKLSAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNlckVuYWJs
ZWQgPT0gYi5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQKLSAgICAgICAgJiYgYS5oYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luID09IGIuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbgotICAgICAgICAm
JiBhLnVzZVN5c3RlbUFwcGVhcmFuY2UgPT0gYi51c2VTeXN0ZW1BcHBlYXJhbmNlOwotfQotCiBD
U1NQYXJzZXI6OkNTU1BhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmgJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IENTU1BhcnNlckNvbnRleHQmIHN0
cmljdENTU1BhcnNlckNvbnRleHQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQ
YXJzZXJDb250ZXh0PiBzdHJpY3RDb250ZXh0KEhUTUxTdGFuZGFyZE1vZGUpOworICAgIHJldHVy
biBzdHJpY3RDb250ZXh0OworfQorCitDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0
KENTU1BhcnNlck1vZGUgbW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMKQorICAgIDogYmFzZVVSTChi
YXNlVVJMKQorICAgICwgbW9kZShtb2RlKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBG
SVhNRTogRm9yY2UgdGhlIHNpdGUgc3BlY2lmaWMgcXVpcmsgYmVsb3cgdG8gd29yayBvbiBpT1Mu
IEludmVzdGlnYXRpbmcgb3RoZXIgc2l0ZSBzcGVjaWZpYyBxdWlya3MKKyAgICAvLyB0byBzZWUg
aWYgd2UgY2FuIGVuYWJsZSB0aGUgcHJlZmVyZW5jZSBhbGwgdG9nZXRoZXIgaXMgdG8gYmUgaGFu
ZGxlZCBieToKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vODQ5MzMwOT4gSW52ZXN0aWdhdGUgRW5h
YmxpbmcgU2l0ZSBTcGVjaWZpYyBRdWlya3MgaW4gTW9iaWxlU2FmYXJpIGFuZCBVSVdlYlZpZXcK
KyAgICBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IHRydWU7CisjZW5kaWYKK30KKworQ1NTUGFy
c2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgc2hlZXRCYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgOiBiYXNlVVJMKHNo
ZWV0QmFzZVVSTC5pc051bGwoKSA/IGRvY3VtZW50LmJhc2VVUkwoKSA6IHNoZWV0QmFzZVVSTCkK
KyAgICAsIGNoYXJzZXQoY2hhcnNldCkKKyAgICAsIG1vZGUoZG9jdW1lbnQuaW5RdWlya3NNb2Rl
KCkgPyBIVE1MUXVpcmtzTW9kZSA6IEhUTUxTdGFuZGFyZE1vZGUpCisgICAgLCBpc0hUTUxEb2N1
bWVudChkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQorICAgICwgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbihzaGVldEJhc2VVUkwuaXNOdWxsKCkgfHwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5jYW5SZXF1ZXN0KGJhc2VVUkwpKQoreworCisgICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3Mg
PSBkb2N1bWVudC5zZXR0aW5ncygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CisgICAgZW5m
b3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZv
cmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSgpOworICAgIHVzZUxlZ2FjeUJhY2tncm91bmRT
aXplU2hvcnRoYW5kQmVoYXZpb3IgPSBkb2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tn
cm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKTsKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQorICAgIHRleHRBdXRvc2l6aW5nRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1
dG9zaXppbmdFbmFibGVkKCk7CisjZW5kaWYKKyAgICBzcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJs
ZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCgpOwor
ICAgIGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmNvbnN0
YW50UHJvcGVydGllc0VuYWJsZWQoKTsKKyAgICBjb25pY0dyYWRpZW50c0VuYWJsZWQgPSBkb2N1
bWVudC5zZXR0aW5ncygpLmNvbmljR3JhZGllbnRzRW5hYmxlZCgpOworICAgIGNvbG9yRmlsdGVy
RW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCk7CisgICAg
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5kZWZlcnJlZENT
U1BhcnNlckVuYWJsZWQoKTsKKyAgICBhbGxvd05ld0xpbmVzQ2xhbXAgPSBkb2N1bWVudC5zZXR0
aW5ncygpLmFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkKCk7CisgICAgdXNlU3lzdGVtQXBwZWFy
YW5jZSA9IGRvY3VtZW50LnBhZ2UoKSA/IGRvY3VtZW50LnBhZ2UoKS0+dXNlU3lzdGVtQXBwZWFy
YW5jZSgpIDogZmFsc2U7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IEZvcmNl
IHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdvcmsgb24gaU9TLiBJbnZlc3RpZ2F0
aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCisgICAgLy8gdG8gc2VlIGlmIHdlIGNhbiBl
bmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlzIHRvIGJlIGhhbmRsZWQgYnk6Cisg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVzdGlnYXRlIEVuYWJsaW5nIFNpdGUg
U3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQgVUlXZWJWaWV3CisgICAgbmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MgPSB0cnVlOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKQorewor
ICAgIHJldHVybiBhLmJhc2VVUkwgPT0gYi5iYXNlVVJMCisgICAgICAgICYmIGEuY2hhcnNldCA9
PSBiLmNoYXJzZXQKKyAgICAgICAgJiYgYS5tb2RlID09IGIubW9kZQorICAgICAgICAmJiBhLmlz
SFRNTERvY3VtZW50ID09IGIuaXNIVE1MRG9jdW1lbnQKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQorICAgICAgICAmJiBhLnRleHRBdXRvc2l6aW5nRW5hYmxlZCA9PSBiLnRleHRBdXRvc2l6
aW5nRW5hYmxlZAorI2VuZGlmCisgICAgICAgICYmIGEubmVlZHNTaXRlU3BlY2lmaWNRdWlya3Mg
PT0gYi5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcworICAgICAgICAmJiBhLmVuZm9yY2VzQ1NTTUlN
RVR5cGVJbk5vUXVpcmtzTW9kZSA9PSBiLmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZQorICAgICAgICAmJiBhLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ig
PT0gYi51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yCisgICAgICAgICYm
IGEuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkID09IGIuc3ByaW5nVGltaW5nRnVuY3Rpb25F
bmFibGVkCisgICAgICAgICYmIGEuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9PSBiLmNvbnN0
YW50UHJvcGVydGllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5jb25pY0dyYWRpZW50c0VuYWJsZWQg
PT0gYi5jb25pY0dyYWRpZW50c0VuYWJsZWQKKyAgICAgICAgJiYgYS5jb2xvckZpbHRlckVuYWJs
ZWQgPT0gYi5jb2xvckZpbHRlckVuYWJsZWQKKyAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNl
ckVuYWJsZWQgPT0gYi5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQKKyAgICAgICAgJiYgYS5oYXNE
b2N1bWVudFNlY3VyaXR5T3JpZ2luID09IGIuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbgorICAg
ICAgICAmJiBhLnVzZVN5c3RlbUFwcGVhcmFuY2UgPT0gYi51c2VTeXN0ZW1BcHBlYXJhbmNlOwor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuaAkocmV2aXNpb24gMjMzNDczKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlck1vZGUuaDoyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiVVJMSGFzaC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCisvLyBNdXN0IG5vdCBn
cm93IGJleW9uZCAzIGJpdHMsIGR1ZSB0byBwYWNraW5nIGluIFN0eWxlUHJvcGVydGllcy4KK2Vu
dW0gQ1NTUGFyc2VyTW9kZSB7CisgICAgSFRNTFN0YW5kYXJkTW9kZSwKKyAgICBIVE1MUXVpcmtz
TW9kZSwKKyAgICAvLyBIVE1MIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZCBpbiBxdWlya3MgbW9kZSBi
dXQgYWxzbyBhbGxvd3MgaW50ZXJuYWwgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorICAgIEhUTUxB
dHRyaWJ1dGVNb2RlLAorICAgIC8vIFNWRyBhdHRyaWJ1dGVzIGFyZSBwYXJzZWQgaW4gcXVpcmtz
IG1vZGUgYnV0IHJ1bGVzIGRpZmZlciBzbGlnaHRseS4KKyAgICBTVkdBdHRyaWJ1dGVNb2RlLAor
ICAgIC8vIEB2aWV3cG9ydCBydWxlcyBhcmUgcGFyc2VkIGluIHN0YW5kYXJkcyBtb2RlIGJ1dCBD
U1NPTSBtb2RpZmljYXRpb25zICh2aWEgU3R5bGVQcm9wZXJ0eVNldCkKKyAgICAvLyBtdXN0IGNh
bGwgcGFyc2VWaWV3cG9ydFByb3BlcnRpZXMgc28gbmVlZHMgYSBzcGVjaWFsIG1vZGUuCisgICAg
Q1NTVmlld3BvcnRSdWxlTW9kZSwKKyAgICAvLyBVc2VyIGFnZW50IHN0eWxlc2hlZXRzIGFyZSBw
YXJzZWQgaW4gc3RhbmRhcmRzIG1vZGUgYnV0IGFsc28gYWxsb3dzIGludGVybmFsIHByb3BlcnRp
ZXMgYW5kIHZhbHVlcy4KKyAgICBVQVNoZWV0TW9kZQorfTsKKworaW5saW5lIGJvb2wgaXNRdWly
a3NNb2RlQmVoYXZpb3IoQ1NTUGFyc2VyTW9kZSBtb2RlKQoreworICAgIHJldHVybiBtb2RlID09
IEhUTUxRdWlya3NNb2RlIHx8IG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGU7Cit9CisKK2lubGlu
ZSBib29sIGlzVUFTaGVldEJlaGF2aW9yKENTU1BhcnNlck1vZGUgbW9kZSkKK3sKKyAgICByZXR1
cm4gbW9kZSA9PSBVQVNoZWV0TW9kZTsKK30KKworaW5saW5lIGJvb2wgaXNVbml0TGVzc1ZhbHVl
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKK3sKKyAgICByZXR1cm4g
bW9kZSA9PSBIVE1MQXR0cmlidXRlTW9kZSB8fCBtb2RlID09IFNWR0F0dHJpYnV0ZU1vZGU7Cit9
CisKK2lubGluZSBib29sIGlzQ1NTVmlld3BvcnRQYXJzaW5nRW5hYmxlZEZvck1vZGUoQ1NTUGFy
c2VyTW9kZSBtb2RlKQoreworICAgIHJldHVybiBtb2RlID09IENTU1ZpZXdwb3J0UnVsZU1vZGU7
Cit9CisKKy8vIEZJWE1FLU5FV1BBUlNFUjogTmV4dCB0d28gZnVuY3Rpb25zIHNob3VsZCBiZSBy
ZW1vdmVkIGV2ZW50dWFsbHkuCitpbmxpbmUgQ1NTUGFyc2VyTW9kZSBzdHJpY3RUb0NTU1BhcnNl
ck1vZGUoYm9vbCBpblN0cmljdE1vZGUpCit7CisgICAgcmV0dXJuIGluU3RyaWN0TW9kZSA/IEhU
TUxTdGFuZGFyZE1vZGUgOiBIVE1MUXVpcmtzTW9kZTsKK30KKworaW5saW5lIGJvb2wgaXNTdHJp
Y3RQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICByZXR1cm4g
Y3NzUGFyc2VyTW9kZSA9PSBVQVNoZWV0TW9kZSB8fCBjc3NQYXJzZXJNb2RlID09IEhUTUxTdGFu
ZGFyZE1vZGUgfHwgY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOworfQorCitzdHJ1
Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlLCBjb25zdCBVUkwmIGJhc2VV
UkwgPSBVUkwoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ1NTUGFyc2VyQ29udGV4dChEb2N1bWVu
dCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQgPSBl
bXB0eVN0cmluZygpKTsKKworICAgIFVSTCBiYXNlVVJMOworICAgIFN0cmluZyBjaGFyc2V0Owor
ICAgIENTU1BhcnNlck1vZGUgbW9kZSB7IEhUTUxTdGFuZGFyZE1vZGUgfTsKKyAgICBib29sIGlz
SFRNTERvY3VtZW50IHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorICAg
IGJvb2wgdGV4dEF1dG9zaXppbmdFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorICAgIGJvb2wg
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgeyBmYWxzZSB9OworICAgIGJvb2wgZW5mb3JjZXNDU1NN
SU1FVHlwZUluTm9RdWlya3NNb2RlIHsgdHJ1ZSB9OworICAgIGJvb2wgdXNlTGVnYWN5QmFja2dy
b3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciB7IGZhbHNlIH07CisgICAgYm9vbCBzcHJpbmdUaW1p
bmdGdW5jdGlvbkVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgY29uc3RhbnRQcm9wZXJ0aWVz
RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBjb25pY0dyYWRpZW50c0VuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgY29sb3JGaWx0ZXJFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGRl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd05ld0xpbmVz
Q2xhbXAgeyBmYWxzZSB9OworICAgIAorICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3Vw
cG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMuCisgICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luIHsgZmFsc2UgfTsKKyAgICAKKyAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UgeyBmYWxz
ZSB9OworCisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKHVybC5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBVUkwoKTsK
KyAgICAgICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFVSTChi
YXNlVVJMLCB1cmwpOworICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCwgVGV4dEVuY29k
aW5nKGNoYXJzZXQpKTsKKyAgICB9Cit9OworCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKK2lubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
YikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK1dFQkNPUkVfRVhQT1JUIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIHN0cmljdENTU1BhcnNlckNvbnRleHQoKTsKKworc3RydWN0IENTU1BhcnNlckNv
bnRleHRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBrZXkpCisgICAgeworICAgICAgICBhdXRvIGhhc2ggPSBVUkxIYXNoOjpoYXNoKGtleS5i
YXNlVVJMKTsKKyAgICAgICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBoYXNoIF49IFN0cmluZ0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOworICAgICAgICB1bnNpZ25l
ZCBiaXRzID0ga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMAorICAgICAg
ICAgICAgJiBrZXkuaXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
MQorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisgICAgICAgICAgICAmIGtleS50ZXh0QXV0
b3NpemluZ0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAyCisjZW5kaWYKKyAgICAgICAg
ICAgICYga2V5Lm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzICAgICAgICAgICAgICAgICAgIDw8IDMK
KyAgICAgICAgICAgICYga2V5LmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAg
ICAgIDw8IDQKKyAgICAgICAgICAgICYga2V5LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRo
YW5kQmVoYXZpb3IgIDw8IDUKKyAgICAgICAgICAgICYga2V5LnNwcmluZ1RpbWluZ0Z1bmN0aW9u
RW5hYmxlZCAgICAgICAgICAgICAgIDw8IDYKKyAgICAgICAgICAgICYga2V5LmNvbmljR3JhZGll
bnRzRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgIDw8IDcKKyAgICAgICAgICAgICYga2V5LmRl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAgICAgICAgICAgICAgICAgIDw8IDgKKyAgICAgICAgICAg
ICYga2V5Lmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAgIDw8IDkKKyAg
ICAgICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IDEwCisgICAgICAgICAgICAmIGtleS5hbGxvd05ld0xpbmVzQ2xhbXAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMTsKKyAgICAgICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7Cisg
ICAgICAgIHJldHVybiBoYXNoOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdl
YkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NT
UGFyc2VyQ29udGV4dD4geworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFz
ZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KKyAgICBzdGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyBy
ZXR1cm4gV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2Rl
KTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Q1NTUGFy
c2VyQ29udGV4dD4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2gg
SGFzaDsKK307Cit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwzNSArMSwzMSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0g
KiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4K
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVUkxIYXNoLmgiCkBAIC00
MCw1MiArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi0v
LyBNdXN0IG5vdCBncm93IGJleW9uZCAzIGJpdHMsIGR1ZSB0byBwYWNraW5nIGluIFN0eWxlUHJv
cGVydGllcy4KLWVudW0gQ1NTUGFyc2VyTW9kZSB7Ci0gICAgSFRNTFN0YW5kYXJkTW9kZSwKLSAg
ICBIVE1MUXVpcmtzTW9kZSwKLSAgICAvLyBIVE1MIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZCBpbiBx
dWlya3MgbW9kZSBidXQgYWxzbyBhbGxvd3MgaW50ZXJuYWwgcHJvcGVydGllcyBhbmQgdmFsdWVz
LgotICAgIEhUTUxBdHRyaWJ1dGVNb2RlLAotICAgIC8vIFNWRyBhdHRyaWJ1dGVzIGFyZSBwYXJz
ZWQgaW4gcXVpcmtzIG1vZGUgYnV0IHJ1bGVzIGRpZmZlciBzbGlnaHRseS4KLSAgICBTVkdBdHRy
aWJ1dGVNb2RlLAotICAgIC8vIEB2aWV3cG9ydCBydWxlcyBhcmUgcGFyc2VkIGluIHN0YW5kYXJk
cyBtb2RlIGJ1dCBDU1NPTSBtb2RpZmljYXRpb25zICh2aWEgU3R5bGVQcm9wZXJ0eVNldCkKLSAg
ICAvLyBtdXN0IGNhbGwgcGFyc2VWaWV3cG9ydFByb3BlcnRpZXMgc28gbmVlZHMgYSBzcGVjaWFs
IG1vZGUuCi0gICAgQ1NTVmlld3BvcnRSdWxlTW9kZSwKLSAgICAvLyBVc2VyIGFnZW50IHN0eWxl
c2hlZXRzIGFyZSBwYXJzZWQgaW4gc3RhbmRhcmRzIG1vZGUgYnV0IGFsc28gYWxsb3dzIGludGVy
bmFsIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4KLSAgICBVQVNoZWV0TW9kZQotfTsKLQotaW5saW5l
IGJvb2wgaXNRdWlya3NNb2RlQmVoYXZpb3IoQ1NTUGFyc2VyTW9kZSBtb2RlKQotewotICAgIHJl
dHVybiBtb2RlID09IEhUTUxRdWlya3NNb2RlIHx8IG1vZGUgPT0gSFRNTEF0dHJpYnV0ZU1vZGU7
Ci19Ci0KLWlubGluZSBib29sIGlzVUFTaGVldEJlaGF2aW9yKENTU1BhcnNlck1vZGUgbW9kZSkK
LXsKLSAgICByZXR1cm4gbW9kZSA9PSBVQVNoZWV0TW9kZTsKLX0KLQotaW5saW5lIGJvb2wgaXNV
bml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRGb3JNb2RlKENTU1BhcnNlck1vZGUgbW9kZSkKLXsK
LSAgICByZXR1cm4gbW9kZSA9PSBIVE1MQXR0cmlidXRlTW9kZSB8fCBtb2RlID09IFNWR0F0dHJp
YnV0ZU1vZGU7Ci19Ci0KLWlubGluZSBib29sIGlzQ1NTVmlld3BvcnRQYXJzaW5nRW5hYmxlZEZv
ck1vZGUoQ1NTUGFyc2VyTW9kZSBtb2RlKQotewotICAgIHJldHVybiBtb2RlID09IENTU1ZpZXdw
b3J0UnVsZU1vZGU7Ci19Ci0KLS8vIEZJWE1FLU5FV1BBUlNFUjogTmV4dCB0d28gZnVuY3Rpb25z
IHNob3VsZCBiZSByZW1vdmVkIGV2ZW50dWFsbHkuCi1pbmxpbmUgQ1NTUGFyc2VyTW9kZSBzdHJp
Y3RUb0NTU1BhcnNlck1vZGUoYm9vbCBpblN0cmljdE1vZGUpCi17Ci0gICAgcmV0dXJuIGluU3Ry
aWN0TW9kZSA/IEhUTUxTdGFuZGFyZE1vZGUgOiBIVE1MUXVpcmtzTW9kZTsKLX0KLQotaW5saW5l
IGJvb2wgaXNTdHJpY3RQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKLXsK
LSAgICByZXR1cm4gY3NzUGFyc2VyTW9kZSA9PSBVQVNoZWV0TW9kZSB8fCBjc3NQYXJzZXJNb2Rl
ID09IEhUTUxTdGFuZGFyZE1vZGUgfHwgY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2Rl
OwotfQotCiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC0xMzYsMTkgKzg2LDIxIEBAIHN0cnVjdCBDU1NQYXJzZXJDb250
ZXh0SGFzaCB7CiAgICAgICAgIGlmICgha2V5LmNoYXJzZXQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgaGFzaCBePSBTdHJpbmdIYXNoOjpoYXNoKGtleS5jaGFyc2V0KTsKICAgICAgICAgdW5zaWdu
ZWQgYml0cyA9IGtleS5pc0hUTUxEb2N1bWVudCAgICAgICAgICAgICAgICAgIDw8IDAKLSAgICAg
ICAgICAgICYga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IDEKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICAgICAgICAgJiBrZXkudGV4dEF1
dG9zaXppbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMgorICAgICAgICAgICAgJiBr
ZXkudGV4dEF1dG9zaXppbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMQogI2VuZGlm
Ci0gICAgICAgICAgICAmIGtleS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyAgICAgICAgICAgICAg
ICAgICA8PCAzCi0gICAgICAgICAgICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJr
c01vZGUgICAgICAgICA8PCA0Ci0gICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5k
U2l6ZVNob3J0aGFuZEJlaGF2aW9yICA8PCA1Ci0gICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1p
bmdGdW5jdGlvbkVuYWJsZWQgICAgICAgICAgICAgICA8PCA2CisgICAgICAgICAgICAmIGtleS5u
ZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyAgICAgICAgICAgICAgICAgICA8PCAyCisgICAgICAgICAg
ICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgICAgICAgICA8PCAzCisg
ICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9y
ICA8PCA0CisgICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgICAg
ICAgICAgICAgICA8PCA1CisgICAgICAgICAgICAmIGtleS5jb25zdGFudFByb3BlcnRpZXNFbmFi
bGVkICAgICAgICAgICAgICAgICA8PCA2CiAgICAgICAgICAgICAmIGtleS5jb25pY0dyYWRpZW50
c0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCA3Ci0gICAgICAgICAgICAmIGtleS5kZWZl
cnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA4Ci0gICAgICAgICAgICAm
IGtleS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAgICA8PCA5Ci0gICAg
ICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAxMAotICAgICAgICAgICAgJiBrZXkuYWxsb3dOZXdMaW5lc0NsYW1wICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgMTE7CisgICAgICAgICAgICAmIGtleS5jb2xvckZpbHRlckVuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICAgICA8PCA4CisgICAgICAgICAgICAmIGtleS5kZWZlcnJlZENTU1Bh
cnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA5CisgICAgICAgICAgICAmIGtleS5hbGxv
d05ld0xpbmVzQ2xhbXAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMAorICAgICAgICAgICAg
JiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiAgICAgICAgICAgICAgICAgPDwgMTEKKyAg
ICAgICAgICAgICYga2V5LnVzZVN5c3RlbUFwcGVhcmFuY2UgICAgICAgICAgICAgICAgICAgICAg
IDw8IDEyCisgICAgICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMzsgLy8gS2VlcCB0aGlzIGxhc3QuCiAgICAgICAgIGhhc2ggXj0gV1RG
OjppbnRIYXNoKGJpdHMpOwogICAgICAgICByZXR1cm4gaGFzaDsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDIzMzQ3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQ1NTRGVmZXJyZWRQYXJzZXIuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAi
Q1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJTdHlsZVJ1bGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyTW9kZS5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlck1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTYgKzMwLDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRG9jdW1lbnQ7Ci0KIC8vIE11c3Qgbm90IGdyb3cgYmV5b25kIDMgYml0cywgZHVl
IHRvIHBhY2tpbmcgaW4gU3R5bGVQcm9wZXJ0aWVzLgogZW51bSBDU1NQYXJzZXJNb2RlIHsKICAg
ICBIVE1MU3RhbmRhcmRNb2RlLApAQCAtODYsODkgKzc4LDQgQEAgaW5saW5lIGJvb2wgaXNTdHJp
Y3RQYXJzZXJNb2RlKENTU1BhcnNlcgogICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IFVBU2hl
ZXRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gSFRNTFN0YW5kYXJkTW9kZSB8fCBjc3NQYXJzZXJN
b2RlID09IFNWR0F0dHJpYnV0ZU1vZGU7CiB9CiAKLXN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDU1NQYXJzZXJDb250
ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJM
ID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwotCi0gICAg
VVJMIGJhc2VVUkw7Ci0gICAgU3RyaW5nIGNoYXJzZXQ7Ci0gICAgQ1NTUGFyc2VyTW9kZSBtb2Rl
IHsgSFRNTFN0YW5kYXJkTW9kZSB9OwotICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9
OwotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgYm9vbCB0ZXh0QXV0b3NpemluZ0Vu
YWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0gICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUg
eyB0cnVlIH07Ci0gICAgYm9vbCB1c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2
aW9yIHsgZmFsc2UgfTsKLSAgICBib29sIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkIHsgZmFsc2UgfTsKLSAg
ICBib29sIGNvbmljR3JhZGllbnRzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBjb2xvckZp
bHRlckVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
IHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93TmV3TGluZXNDbGFtcCB7IGZhbHNlIH07Ci0gICAg
Ci0gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxl
cy4KLSAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9OwotICAgIAot
ICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSB7IGZhbHNlIH07Ci0KLSAgICBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAodXJsLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgICAgICBpZiAoY2hhcnNldC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAgICAg
IHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBUZXh0RW5jb2RpbmcoY2hhcnNldCkpOwotICAgIH0K
LX07Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKSB7IHJldHVybiAhKGEgPT0gYik7
IH0KLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFy
c2VyQ29udGV4dCgpOwotCi1zdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwotICAgICAgICBpZiAo
IWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6
aGFzaChrZXkuY2hhcnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1MRG9j
dW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCi0gICAgICAgICAgICAmIGtleS5pc0hUTUxEb2N1
bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxCi0jaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKLSAgICAgICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAgICAgICAg
ICAgICAgICAgICAgIDw8IDIKLSNlbmRpZgotICAgICAgICAgICAgJiBrZXkubmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MgICAgICAgICAgICAgICAgICAgPDwgMwotICAgICAgICAgICAgJiBrZXkuZW5m
b3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgNAotICAgICAgICAgICAg
JiBrZXkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciAgPDwgNQotICAg
ICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkICAgICAgICAgICAgICAg
PDwgNgotICAgICAgICAgICAgJiBrZXkuY29uaWNHcmFkaWVudHNFbmFibGVkICAgICAgICAgICAg
ICAgICAgICAgPDwgNwotICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ICAgICAgICAgICAgICAgICAgPDwgOAotICAgICAgICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiAgICAgICAgICAgICAgICAgPDwgOQotICAgICAgICAgICAgJiBrZXkubW9kZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTAKLSAgICAgICAgICAgICYg
a2V5LmFsbG93TmV3TGluZXNDbGFtcCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDExOwotICAg
ICAgICBoYXNoIF49IFdURjo6aW50SGFzaChiaXRzKTsKLSAgICAgICAgcmV0dXJuIGhhc2g7Ci0g
ICAgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYSA9PSBiOwot
ICAgIH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOwotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RG
IHsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4
dD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiB7Ci0gICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRl
eHQmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5iYXNlVVJMKSBXZWJDb3JlOjpVUkwoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LmJhc2VVUkwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotICAgIHN0YXRpYyBXZWJDb3Jl
OjpDU1NQYXJzZXJDb250ZXh0IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpDU1NQYXJz
ZXJDb250ZXh0KFdlYkNvcmU6OkhUTUxTdGFuZGFyZE1vZGUpOyB9Ci19OwotCi10ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiB7Ci0gICAgdHlw
ZWRlZiBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0SGFzaCBIYXNoOwotfTsKLX0gLy8gbmFtZXNw
YWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFs
dWUuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAkocmV2aXNp
b24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDU1NTZWxlY3RvclBhcnNlci5oIgogCi0jaW5jbHVkZSAiQ1NTUGFyc2Vy
TW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlICJDU1NTZWxl
Y3Rvckxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxl
UGFyc2VyLmNwcAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NWYXJpYWJsZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQ
YXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344327</attachid>
            <date>2018-07-05 07:23:04 -0700</date>
            <delta_ts>2018-07-05 08:46:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cssparsermode-file-3.patch</filename>
            <type>text/plain</type>
            <size>40527</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzUxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA3LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENTU1BhcnNlckNvbnRl
eHQgdG8gYSBmaWxlIG9mIGl0cyBvd24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgaXQgb3V0IGZyb20gQ1NTUGFyc2VyTW9kZS5oIGFuZCBDU1NQ
YXJzZXIuY3BwLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAg
ICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
RGVmZXJyZWRQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzdHJpY3RDU1NQYXJzZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0cmljdENTU1BhcnNlckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKworICAgICAgICBBbHNvIGFkZCB0aGUg
bWlzc2luZyB0ZXh0QXV0b3NpemluZ0VuYWJsZWQgYml0LgorCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyTW9kZS5oLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhh
c2g6Omhhc2gpOgorCisgICAgICAgIEFsc28gYWRkIHRoZSBtaXNzaW5nIGJpdHMgdG8gdGhlIGhh
c2ggZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNRdWlya3NNb2RlQmVo
YXZpb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNVQVNoZWV0QmVoYXZpb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNVbml0TGVzc1ZhbHVlUGFyc2luZ0VuYWJsZWRG
b3JNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVmlld3BvcnRQYXJzaW5n
RW5hYmxlZEZvck1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3RyaWN0VG9DU1NQ
YXJzZXJNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaWN0UGFyc2VyTW9k
ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaDoKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaDoKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck1vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OmNv
bXBsZXRlVVJMIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6OmVxdWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJD
b250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6aXNEZWxldGVkVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRl
eHQ+OjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJz
ZXIuY3BwOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwOgorCiAy
MDE4LTA3LTA1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXZWJWUl0gRml4IFZSRGlzcGxheUV2ZW50IGltcGxlbWVudGF0aW9uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Myw2ICs2NjMsNyBAQCBjc3MvV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmNwcAogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHAKIGNzcy9wYXJzZXIvQ1NTRGVm
ZXJyZWRQYXJzZXIuY3BwCiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKK2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5jcHAKIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAogY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3NDUsNiArNDc0NSw3IEBA
CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQw
MEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFs
dWVQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDlCRDlGOTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggKi87IH07CiAJCUU0QTAw
NzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8q
IERhdGFVUkxEZWNvZGVyLmggKi87IH07CisJCUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBD
U1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEE3OTk0RTIwRUU0QUUxMDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QTgxNEQ0
MUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4
NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNERBMUM3MEUx
MEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNEQ5MUM3MEUxMEQwMEJGODVB
QyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTRBODE0RTAxQzcz
MzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyog
SWRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKQEAgLTEwODQzLDcgKzEwODQ0LDcgQEAKIAkJ
OUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERpcmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjcxNEUxRTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQ
YXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50UGF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNzE0RTFGMUM5MTE2NjkwMEFDMEU5
MiAvKiBFdmVudFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRQ
YXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCODU1MzA1MjBFNzMzQjUwMDlF
RUY0RiAvKiBFdmVudFRhcmdldEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRXZlbnRUYXJnZXRGYWN0b3J5LmNwcDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCODU1MzA1MjBFNzMzQjUw
MDlFRUY0RiAvKiBFdmVudFRhcmdldEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI5Mjk5QjAxRjY3OTZBNDAwNjcyM0MyIC8qIFdlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBMjczRjMx
NzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkE4Mjc3ODFGMDYxNTY1MDBGNzFFNzUg
LyogTmF2aWdhdGlvbkRpc2FibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRpb25EaXNhYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0
MDEsNiArMTQ0MDIsOCBAQAogCQlFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERl
Y29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVVSTERlY29kZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZF
IC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGFVUkxEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRB
MTgyMkYxRjEzQkU1ODAwRkVGNjk4IC8qIFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUU0QTc5OTRFMjBFRTRBRTEwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQu
aDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU0QTc5OTUwMjBFRTRBRTIwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQu
Y3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDUxQzZE
RUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDcxQzcwRTEwNTAwQkY4NUFDIC8qIEF0
dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTUsNiArMjA3OTgsOCBAQAogCQkJCTk0NDc2QkQ5MURGQ0E0
QTcwMDY5MEUyMyAvKiBDU1NEZWZlcnJlZFBhcnNlci5oICovLAogCQkJCTk0NkQzNzI4MUQ2Q0Iy
OEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0NkQzNzI5MUQ2Q0IyOEIwMDc3
MDg0RiAvKiBDU1NQYXJzZXIuaCAqLywKKwkJCQlFNEE3OTk1MDIwRUU0QUUyMDBDMTk1NjggLyog
Q1NTUGFyc2VyQ29udGV4dC5jcHAgKi8sCisJCQkJRTRBNzk5NEUyMEVFNEFFMTAwQzE5NTY4IC8q
IENTU1BhcnNlckNvbnRleHQuaCAqLywKIAkJCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyog
Q1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLywKIAkJCQk5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYg
LyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8sCiAJCQkJOTRERTVDN0QxRDc4Q0IyNTAwMTY0RjJB
IC8qIENTU1BhcnNlcklkaW9tcy5jcHAgKi8sCkBAIC0yODc3OSw2ICsyODc4NCw3IEBACiAJCQkJ
NzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTRBNzk5NTIyMEVFNEIxNDAwQzE5NTY4IC8qIENTU1BhcnNl
ckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMEEzNkJEMURBQzVGQUQwMDZEN0QwOSAv
KiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYw
MDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOTAy
RDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Q
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lv
bkVycm9yLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJ
KHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJz
ZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUg
IkRlcHJlY2F0ZWRDU1NPTVZhbHVlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1
ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCShyZXZpc2lvbiAy
MzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkNhY2hlUG9saWN5LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0RlZmVycmVkUGFyc2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NEZWZlcnJlZFBhcnNl
ci5oCShyZXZpc2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0Rl
ZmVycmVkUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAko
cmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3NiArNTAsOSBAQAogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1jb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q1NTUGFyc2VyQ29udGV4dD4gc3RyaWN0Q29udGV4dChIVE1MU3RhbmRhcmRNb2Rl
KTsKLSAgICByZXR1cm4gc3RyaWN0Q29udGV4dDsKLX0KLQotQ1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCkKLSAg
ICA6IGJhc2VVUkwoYmFzZVVSTCkKLSAgICAsIG1vZGUobW9kZSkKLXsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRv
IHdvcmsgb24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCi0g
ICAgLy8gdG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVy
IGlzIHRvIGJlIGhhbmRsZWQgYnk6Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IElu
dmVzdGlnYXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBh
bmQgVUlXZWJWaWV3Ci0gICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSB0cnVlOwotI2VuZGlm
Ci19Ci0KLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHNoZWV0QmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQotICAg
IDogYmFzZVVSTChzaGVldEJhc2VVUkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBz
aGVldEJhc2VVUkwpCi0gICAgLCBjaGFyc2V0KGNoYXJzZXQpCi0gICAgLCBtb2RlKGRvY3VtZW50
LmluUXVpcmtzTW9kZSgpID8gSFRNTFF1aXJrc01vZGUgOiBIVE1MU3RhbmRhcmRNb2RlKQotICAg
ICwgaXNIVE1MRG9jdW1lbnQoZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAsIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4oc2hlZXRCYXNlVVJMLmlzTnVsbCgpIHx8IGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChiYXNlVVJMKSkKLXsKLSAgICAKLSAgICBuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50LnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MoKTsKLSAgICBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgPSBkb2N1bWVu
dC5zZXR0aW5ncygpLmVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKCk7Ci0gICAgdXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IGRvY3VtZW50LnNldHRpbmdz
KCkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpOwotI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCi0gICAgdGV4dEF1dG9zaXppbmdFbmFibGVkID0gZG9jdW1lbnQu
c2V0dGluZ3MoKS50ZXh0QXV0b3NpemluZ0VuYWJsZWQoKTsKLSNlbmRpZgotICAgIHNwcmluZ1Rp
bWluZ0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5nRnVu
Y3Rpb25FbmFibGVkKCk7Ci0gICAgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50
LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgpOwotICAgIGNvbmljR3JhZGll
bnRzRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29uaWNHcmFkaWVudHNFbmFibGVkKCk7
Ci0gICAgY29sb3JGaWx0ZXJFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5jb2xvckZpbHRl
ckVuYWJsZWQoKTsKLSAgICBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0
aW5ncygpLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpOwotICAgIGFsbG93TmV3TGluZXNDbGFt
cCA9IGRvY3VtZW50LnNldHRpbmdzKCkuYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQoKTsKLSAg
ICB1c2VTeXN0ZW1BcHBlYXJhbmNlID0gZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgp
LT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxzZTsKLSAgICAKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgLy8gRklYTUU6IEZvcmNlIHRoZSBzaXRlIHNwZWNpZmljIHF1aXJrIGJlbG93IHRvIHdv
cmsgb24gaU9TLiBJbnZlc3RpZ2F0aW5nIG90aGVyIHNpdGUgc3BlY2lmaWMgcXVpcmtzCi0gICAg
Ly8gdG8gc2VlIGlmIHdlIGNhbiBlbmFibGUgdGhlIHByZWZlcmVuY2UgYWxsIHRvZ2V0aGVyIGlz
IHRvIGJlIGhhbmRsZWQgYnk6Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg0OTMzMDk+IEludmVz
dGlnYXRlIEVuYWJsaW5nIFNpdGUgU3BlY2lmaWMgUXVpcmtzIGluIE1vYmlsZVNhZmFyaSBhbmQg
VUlXZWJWaWV3Ci0gICAgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSB0cnVlOwotI2VuZGlmCi19
Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBiKQotewotICAgIHJldHVybiBhLmJhc2VVUkwgPT0gYi5iYXNlVVJMCi0g
ICAgICAgICYmIGEuY2hhcnNldCA9PSBiLmNoYXJzZXQKLSAgICAgICAgJiYgYS5tb2RlID09IGIu
bW9kZQotICAgICAgICAmJiBhLmlzSFRNTERvY3VtZW50ID09IGIuaXNIVE1MRG9jdW1lbnQKLSAg
ICAgICAgJiYgYS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9PSBiLm5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzCi0gICAgICAgICYmIGEuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlID09
IGIuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlCi0gICAgICAgICYmIGEudXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91
bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IKLSAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlv
bkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKLSAgICAgICAgJiYgYS5j
b25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAot
ICAgICAgICAmJiBhLmNvbmljR3JhZGllbnRzRW5hYmxlZCA9PSBiLmNvbmljR3JhZGllbnRzRW5h
YmxlZAotICAgICAgICAmJiBhLmNvbG9yRmlsdGVyRW5hYmxlZCA9PSBiLmNvbG9yRmlsdGVyRW5h
YmxlZAotICAgICAgICAmJiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9PSBiLmRlZmVycmVk
Q1NTUGFyc2VyRW5hYmxlZAotICAgICAgICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4g
PT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luCi0gICAgICAgICYmIGEudXNlU3lzdGVtQXBw
ZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFuY2U7Ci19Ci0KIENTU1BhcnNlcjo6Q1NTUGFy
c2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNp
b24gMjMzNDczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckNvbnRleHQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
Q29udGV4dC5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29u
dGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENTU1BhcnNlckNvbnRleHQ+IHN0
cmljdENvbnRleHQoSFRNTFN0YW5kYXJkTW9kZSk7CisgICAgcmV0dXJuIHN0cmljdENvbnRleHQ7
Cit9CisKK0NTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBt
b2RlLCBjb25zdCBVUkwmIGJhc2VVUkwpCisgICAgOiBiYXNlVVJMKGJhc2VVUkwpCisgICAgLCBt
b2RlKG1vZGUpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBGb3JjZSB0aGUg
c2l0ZSBzcGVjaWZpYyBxdWlyayBiZWxvdyB0byB3b3JrIG9uIGlPUy4gSW52ZXN0aWdhdGluZyBv
dGhlciBzaXRlIHNwZWNpZmljIHF1aXJrcworICAgIC8vIHRvIHNlZSBpZiB3ZSBjYW4gZW5hYmxl
IHRoZSBwcmVmZXJlbmNlIGFsbCB0b2dldGhlciBpcyB0byBiZSBoYW5kbGVkIGJ5OgorICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS84NDkzMzA5PiBJbnZlc3RpZ2F0ZSBFbmFibGluZyBTaXRlIFNwZWNp
ZmljIFF1aXJrcyBpbiBNb2JpbGVTYWZhcmkgYW5kIFVJV2ViVmlldworICAgIG5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzID0gdHJ1ZTsKKyNlbmRpZgorfQorCitDU1NQYXJzZXJDb250ZXh0OjpDU1NQ
YXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVldEJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKKyAgICA6IGJhc2VVUkwoc2hlZXRCYXNlVVJMLmlzTnVs
bCgpID8gZG9jdW1lbnQuYmFzZVVSTCgpIDogc2hlZXRCYXNlVVJMKQorICAgICwgY2hhcnNldChj
aGFyc2V0KQorICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSA/IEhUTUxRdWlya3NN
b2RlIDogSFRNTFN0YW5kYXJkTW9kZSkKKyAgICAsIGlzSFRNTERvY3VtZW50KGRvY3VtZW50Lmlz
SFRNTERvY3VtZW50KCkpCisgICAgLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKHNoZWV0QmFz
ZVVSTC5pc051bGwoKSB8fCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QoYmFz
ZVVSTCkpCit7CisKKyAgICBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50LnNldHRp
bmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKTsKKyAgICBlbmZvcmNlc0NTU01JTUVUeXBl
SW5Ob1F1aXJrc01vZGUgPSBkb2N1bWVudC5zZXR0aW5ncygpLmVuZm9yY2VDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlKCk7CisgICAgdXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhh
dmlvciA9IGRvY3VtZW50LnNldHRpbmdzKCkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhh
bmRCZWhhdmlvcigpOworI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisgICAgdGV4dEF1dG9z
aXppbmdFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS50ZXh0QXV0b3NpemluZ0VuYWJsZWQo
KTsKKyNlbmRpZgorICAgIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNl
dHRpbmdzKCkuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkKCk7CisgICAgY29uc3RhbnRQcm9w
ZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5h
YmxlZCgpOworICAgIGNvbmljR3JhZGllbnRzRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCku
Y29uaWNHcmFkaWVudHNFbmFibGVkKCk7CisgICAgY29sb3JGaWx0ZXJFbmFibGVkID0gZG9jdW1l
bnQuc2V0dGluZ3MoKS5jb2xvckZpbHRlckVuYWJsZWQoKTsKKyAgICBkZWZlcnJlZENTU1BhcnNl
ckVuYWJsZWQgPSBkb2N1bWVudC5zZXR0aW5ncygpLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgp
OworICAgIGFsbG93TmV3TGluZXNDbGFtcCA9IGRvY3VtZW50LnNldHRpbmdzKCkuYXBwbGVNYWls
TGluZXNDbGFtcEVuYWJsZWQoKTsKKyAgICB1c2VTeXN0ZW1BcHBlYXJhbmNlID0gZG9jdW1lbnQu
cGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxzZTsK
KworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogRm9yY2UgdGhlIHNpdGUgc3BlY2lm
aWMgcXVpcmsgYmVsb3cgdG8gd29yayBvbiBpT1MuIEludmVzdGlnYXRpbmcgb3RoZXIgc2l0ZSBz
cGVjaWZpYyBxdWlya3MKKyAgICAvLyB0byBzZWUgaWYgd2UgY2FuIGVuYWJsZSB0aGUgcHJlZmVy
ZW5jZSBhbGwgdG9nZXRoZXIgaXMgdG8gYmUgaGFuZGxlZCBieToKKyAgICAvLyA8cmRhcjovL3By
b2JsZW0vODQ5MzMwOT4gSW52ZXN0aWdhdGUgRW5hYmxpbmcgU2l0ZSBTcGVjaWZpYyBRdWlya3Mg
aW4gTW9iaWxlU2FmYXJpIGFuZCBVSVdlYlZpZXcKKyAgICBuZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cyA9IHRydWU7CisjZW5kaWYKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGEsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCit7CisgICAgcmV0dXJuIGEuYmFz
ZVVSTCA9PSBiLmJhc2VVUkwKKyAgICAgICAgJiYgYS5jaGFyc2V0ID09IGIuY2hhcnNldAorICAg
ICAgICAmJiBhLm1vZGUgPT0gYi5tb2RlCisgICAgICAgICYmIGEuaXNIVE1MRG9jdW1lbnQgPT0g
Yi5pc0hUTUxEb2N1bWVudAorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisgICAgICAgICYm
IGEudGV4dEF1dG9zaXppbmdFbmFibGVkID09IGIudGV4dEF1dG9zaXppbmdFbmFibGVkCisjZW5k
aWYKKyAgICAgICAgJiYgYS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9PSBiLm5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzCisgICAgICAgICYmIGEuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NN
b2RlID09IGIuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlCisgICAgICAgICYmIGEu
dXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJh
Y2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IKKyAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdG
dW5jdGlvbkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKKyAgICAgICAg
JiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5h
YmxlZAorICAgICAgICAmJiBhLmNvbmljR3JhZGllbnRzRW5hYmxlZCA9PSBiLmNvbmljR3JhZGll
bnRzRW5hYmxlZAorICAgICAgICAmJiBhLmNvbG9yRmlsdGVyRW5hYmxlZCA9PSBiLmNvbG9yRmls
dGVyRW5hYmxlZAorICAgICAgICAmJiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9PSBiLmRl
ZmVycmVkQ1NTUGFyc2VyRW5hYmxlZAorICAgICAgICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlP
cmlnaW4gPT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luCisgICAgICAgICYmIGEudXNlU3lz
dGVtQXBwZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFuY2U7Cit9CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCShyZXZpc2lvbiAy
MzM0NzMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyTW9kZS5oOjIz
MzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CisKKy8vIE11c3Qgbm90IGdyb3cgYmV5b25kIDMgYml0
cywgZHVlIHRvIHBhY2tpbmcgaW4gU3R5bGVQcm9wZXJ0aWVzLgorZW51bSBDU1NQYXJzZXJNb2Rl
IHsKKyAgICBIVE1MU3RhbmRhcmRNb2RlLAorICAgIEhUTUxRdWlya3NNb2RlLAorICAgIC8vIEhU
TUwgYXR0cmlidXRlcyBhcmUgcGFyc2VkIGluIHF1aXJrcyBtb2RlIGJ1dCBhbHNvIGFsbG93cyBp
bnRlcm5hbCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuCisgICAgSFRNTEF0dHJpYnV0ZU1vZGUsCisg
ICAgLy8gU1ZHIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZCBpbiBxdWlya3MgbW9kZSBidXQgcnVsZXMg
ZGlmZmVyIHNsaWdodGx5LgorICAgIFNWR0F0dHJpYnV0ZU1vZGUsCisgICAgLy8gQHZpZXdwb3J0
IHJ1bGVzIGFyZSBwYXJzZWQgaW4gc3RhbmRhcmRzIG1vZGUgYnV0IENTU09NIG1vZGlmaWNhdGlv
bnMgKHZpYSBTdHlsZVByb3BlcnR5U2V0KQorICAgIC8vIG11c3QgY2FsbCBwYXJzZVZpZXdwb3J0
UHJvcGVydGllcyBzbyBuZWVkcyBhIHNwZWNpYWwgbW9kZS4KKyAgICBDU1NWaWV3cG9ydFJ1bGVN
b2RlLAorICAgIC8vIFVzZXIgYWdlbnQgc3R5bGVzaGVldHMgYXJlIHBhcnNlZCBpbiBzdGFuZGFy
ZHMgbW9kZSBidXQgYWxzbyBhbGxvd3MgaW50ZXJuYWwgcHJvcGVydGllcyBhbmQgdmFsdWVzLgor
ICAgIFVBU2hlZXRNb2RlCit9OworCitpbmxpbmUgYm9vbCBpc1F1aXJrc01vZGVCZWhhdmlvcihD
U1NQYXJzZXJNb2RlIG1vZGUpCit7CisgICAgcmV0dXJuIG1vZGUgPT0gSFRNTFF1aXJrc01vZGUg
fHwgbW9kZSA9PSBIVE1MQXR0cmlidXRlTW9kZTsKK30KKworaW5saW5lIGJvb2wgaXNVQVNoZWV0
QmVoYXZpb3IoQ1NTUGFyc2VyTW9kZSBtb2RlKQoreworICAgIHJldHVybiBtb2RlID09IFVBU2hl
ZXRNb2RlOworfQorCitpbmxpbmUgYm9vbCBpc1VuaXRMZXNzVmFsdWVQYXJzaW5nRW5hYmxlZEZv
ck1vZGUoQ1NTUGFyc2VyTW9kZSBtb2RlKQoreworICAgIHJldHVybiBtb2RlID09IEhUTUxBdHRy
aWJ1dGVNb2RlIHx8IG1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZTsKK30KKworaW5saW5lIGJvb2wg
aXNDU1NWaWV3cG9ydFBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJNb2RlIG1vZGUpCit7
CisgICAgcmV0dXJuIG1vZGUgPT0gQ1NTVmlld3BvcnRSdWxlTW9kZTsKK30KKworLy8gRklYTUUt
TkVXUEFSU0VSOiBOZXh0IHR3byBmdW5jdGlvbnMgc2hvdWxkIGJlIHJlbW92ZWQgZXZlbnR1YWxs
eS4KK2lubGluZSBDU1NQYXJzZXJNb2RlIHN0cmljdFRvQ1NTUGFyc2VyTW9kZShib29sIGluU3Ry
aWN0TW9kZSkKK3sKKyAgICByZXR1cm4gaW5TdHJpY3RNb2RlID8gSFRNTFN0YW5kYXJkTW9kZSA6
IEhUTUxRdWlya3NNb2RlOworfQorCitpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09
IFVBU2hlZXRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gSFRNTFN0YW5kYXJkTW9kZSB8fCBjc3NQ
YXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGU7Cit9CisKK3N0cnVjdCBDU1NQYXJzZXJDb250
ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDU1NQYXJz
ZXJDb250ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiwgY29uc3QgVVJMJiBi
YXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwor
CisgICAgVVJMIGJhc2VVUkw7CisgICAgU3RyaW5nIGNoYXJzZXQ7CisgICAgQ1NTUGFyc2VyTW9k
ZSBtb2RlIHsgSFRNTFN0YW5kYXJkTW9kZSB9OworICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBm
YWxzZSB9OworI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisgICAgYm9vbCB0ZXh0QXV0b3Np
emluZ0VuYWJsZWQgeyBmYWxzZSB9OworI2VuZGlmCisgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJr
c01vZGUgeyB0cnVlIH07CisgICAgYm9vbCB1c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFu
ZEJlaGF2aW9yIHsgZmFsc2UgfTsKKyAgICBib29sIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIGNvbmljR3JhZGllbnRzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBj
b2xvckZpbHRlckVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgZGVmZXJyZWRDU1NQYXJzZXJF
bmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93TmV3TGluZXNDbGFtcCB7IGZhbHNlIH07
CisgICAgCisgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRD
U1NSdWxlcy4KKyAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9Owor
ICAgIAorICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSB7IGZhbHNlIH07CisKKyAgICBVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
dXJsLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFVSTCgpOworICAgICAgICBpZiAoY2hh
cnNldC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7Cisg
ICAgICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBUZXh0RW5jb2RpbmcoY2hhcnNldCkpOwor
ICAgIH0KK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYpOworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKSB7IHJldHVybiAhKGEg
PT0gYik7IH0KKworV0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0
Q1NTUGFyc2VyQ29udGV4dCgpOworCitzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggeworICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkKKyAgICB7
CisgICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOworICAgICAg
ICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5n
SGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CisgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNI
VE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCisgICAgICAgICAgICAmIGtleS5pc0hU
TUxEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxCisjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKKyAgICAgICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgIDw8IDIKKyNlbmRpZgorICAgICAgICAgICAgJiBrZXkubmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MgICAgICAgICAgICAgICAgICAgPDwgMworICAgICAgICAgICAgJiBr
ZXkuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgNAorICAgICAg
ICAgICAgJiBrZXkudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciAgPDwg
NQorICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkICAgICAgICAg
ICAgICAgPDwgNgorICAgICAgICAgICAgJiBrZXkuY29uaWNHcmFkaWVudHNFbmFibGVkICAgICAg
ICAgICAgICAgICAgICAgPDwgNworICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJF
bmFibGVkICAgICAgICAgICAgICAgICAgPDwgOAorICAgICAgICAgICAgJiBrZXkuaGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbiAgICAgICAgICAgICAgICAgPDwgOQorICAgICAgICAgICAgJiBrZXku
bW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTAKKyAgICAgICAg
ICAgICYga2V5LmFsbG93TmV3TGluZXNDbGFtcCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEx
OworICAgICAgICBoYXNoIF49IFdURjo6aW50SGFzaChiaXRzKTsKKyAgICAgICAgcmV0dXJuIGhh
c2g7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGEsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9
PSBiOworICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IGZhbHNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3Bh
Y2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2Vy
Q29udGV4dD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiB7
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNTU1BhcnNl
ckNvbnRleHQmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5iYXNlVVJMKSBXZWJDb3JlOjpV
UkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlLmJhc2VVUkwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIHN0YXRpYyBX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpD
U1NQYXJzZXJDb250ZXh0KFdlYkNvcmU6OkhUTUxTdGFuZGFyZE1vZGUpOyB9Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiB7Cisg
ICAgdHlwZWRlZiBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0SGFzaCBIYXNoOworfTsKK30gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmgJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICsxLDMxIEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgot
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVSTEhhc2guaCIKQEAgLTQwLDUyICszNiw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLS8vIE11c3Qgbm90IGdyb3cg
YmV5b25kIDMgYml0cywgZHVlIHRvIHBhY2tpbmcgaW4gU3R5bGVQcm9wZXJ0aWVzLgotZW51bSBD
U1NQYXJzZXJNb2RlIHsKLSAgICBIVE1MU3RhbmRhcmRNb2RlLAotICAgIEhUTUxRdWlya3NNb2Rl
LAotICAgIC8vIEhUTUwgYXR0cmlidXRlcyBhcmUgcGFyc2VkIGluIHF1aXJrcyBtb2RlIGJ1dCBh
bHNvIGFsbG93cyBpbnRlcm5hbCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuCi0gICAgSFRNTEF0dHJp
YnV0ZU1vZGUsCi0gICAgLy8gU1ZHIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZCBpbiBxdWlya3MgbW9k
ZSBidXQgcnVsZXMgZGlmZmVyIHNsaWdodGx5LgotICAgIFNWR0F0dHJpYnV0ZU1vZGUsCi0gICAg
Ly8gQHZpZXdwb3J0IHJ1bGVzIGFyZSBwYXJzZWQgaW4gc3RhbmRhcmRzIG1vZGUgYnV0IENTU09N
IG1vZGlmaWNhdGlvbnMgKHZpYSBTdHlsZVByb3BlcnR5U2V0KQotICAgIC8vIG11c3QgY2FsbCBw
YXJzZVZpZXdwb3J0UHJvcGVydGllcyBzbyBuZWVkcyBhIHNwZWNpYWwgbW9kZS4KLSAgICBDU1NW
aWV3cG9ydFJ1bGVNb2RlLAotICAgIC8vIFVzZXIgYWdlbnQgc3R5bGVzaGVldHMgYXJlIHBhcnNl
ZCBpbiBzdGFuZGFyZHMgbW9kZSBidXQgYWxzbyBhbGxvd3MgaW50ZXJuYWwgcHJvcGVydGllcyBh
bmQgdmFsdWVzLgotICAgIFVBU2hlZXRNb2RlCi19OwotCi1pbmxpbmUgYm9vbCBpc1F1aXJrc01v
ZGVCZWhhdmlvcihDU1NQYXJzZXJNb2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIG1vZGUgPT0gSFRN
TFF1aXJrc01vZGUgfHwgbW9kZSA9PSBIVE1MQXR0cmlidXRlTW9kZTsKLX0KLQotaW5saW5lIGJv
b2wgaXNVQVNoZWV0QmVoYXZpb3IoQ1NTUGFyc2VyTW9kZSBtb2RlKQotewotICAgIHJldHVybiBt
b2RlID09IFVBU2hlZXRNb2RlOwotfQotCi1pbmxpbmUgYm9vbCBpc1VuaXRMZXNzVmFsdWVQYXJz
aW5nRW5hYmxlZEZvck1vZGUoQ1NTUGFyc2VyTW9kZSBtb2RlKQotewotICAgIHJldHVybiBtb2Rl
ID09IEhUTUxBdHRyaWJ1dGVNb2RlIHx8IG1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZTsKLX0KLQot
aW5saW5lIGJvb2wgaXNDU1NWaWV3cG9ydFBhcnNpbmdFbmFibGVkRm9yTW9kZShDU1NQYXJzZXJN
b2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIG1vZGUgPT0gQ1NTVmlld3BvcnRSdWxlTW9kZTsKLX0K
LQotLy8gRklYTUUtTkVXUEFSU0VSOiBOZXh0IHR3byBmdW5jdGlvbnMgc2hvdWxkIGJlIHJlbW92
ZWQgZXZlbnR1YWxseS4KLWlubGluZSBDU1NQYXJzZXJNb2RlIHN0cmljdFRvQ1NTUGFyc2VyTW9k
ZShib29sIGluU3RyaWN0TW9kZSkKLXsKLSAgICByZXR1cm4gaW5TdHJpY3RNb2RlID8gSFRNTFN0
YW5kYXJkTW9kZSA6IEhUTUxRdWlya3NNb2RlOwotfQotCi1pbmxpbmUgYm9vbCBpc1N0cmljdFBh
cnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQotewotICAgIHJldHVybiBjc3NQ
YXJzZXJNb2RlID09IFVBU2hlZXRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gSFRNTFN0YW5kYXJk
TW9kZSB8fCBjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGU7Ci19Ci0KIHN0cnVjdCBD
U1NQYXJzZXJDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTEzNiwxOSArODYsMjEgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKICAgICAg
ICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBoYXNoIF49IFN0cmlu
Z0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOwogICAgICAgICB1bnNpZ25lZCBiaXRzID0ga2V5Lmlz
SFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMAotICAgICAgICAgICAgJiBrZXkuaXNI
VE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMQogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICAgICAmIGtleS50ZXh0QXV0b3NpemluZ0VuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICA8PCAyCisgICAgICAgICAgICAmIGtleS50ZXh0QXV0b3Npemlu
Z0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAxCiAjZW5kaWYKLSAgICAgICAgICAgICYg
a2V5Lm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzICAgICAgICAgICAgICAgICAgIDw8IDMKLSAgICAg
ICAgICAgICYga2V5LmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAgICAgIDw8
IDQKLSAgICAgICAgICAgICYga2V5LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVo
YXZpb3IgIDw8IDUKLSAgICAgICAgICAgICYga2V5LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxl
ZCAgICAgICAgICAgICAgIDw8IDYKKyAgICAgICAgICAgICYga2V5Lm5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzICAgICAgICAgICAgICAgICAgIDw8IDIKKyAgICAgICAgICAgICYga2V5LmVuZm9yY2Vz
Q1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAgICAgIDw8IDMKKyAgICAgICAgICAgICYga2V5
LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgIDw8IDQKKyAgICAgICAg
ICAgICYga2V5LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCAgICAgICAgICAgICAgIDw8IDUK
KyAgICAgICAgICAgICYga2V5LmNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgICAgICAgICAgICAg
ICAgIDw8IDYKICAgICAgICAgICAgICYga2V5LmNvbmljR3JhZGllbnRzRW5hYmxlZCAgICAgICAg
ICAgICAgICAgICAgIDw8IDcKLSAgICAgICAgICAgICYga2V5LmRlZmVycmVkQ1NTUGFyc2VyRW5h
YmxlZCAgICAgICAgICAgICAgICAgIDw8IDgKLSAgICAgICAgICAgICYga2V5Lmhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAgIDw8IDkKLSAgICAgICAgICAgICYga2V5Lm1v
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEwCi0gICAgICAgICAg
ICAmIGtleS5hbGxvd05ld0xpbmVzQ2xhbXAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMTsK
KyAgICAgICAgICAgICYga2V5LmNvbG9yRmlsdGVyRW5hYmxlZCAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IDgKKyAgICAgICAgICAgICYga2V5LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAgICAg
ICAgICAgICAgICAgIDw8IDkKKyAgICAgICAgICAgICYga2V5LmFsbG93TmV3TGluZXNDbGFtcCAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IDEwCisgICAgICAgICAgICAmIGtleS5oYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAgICA8PCAxMQorICAgICAgICAgICAgJiBrZXku
dXNlU3lzdGVtQXBwZWFyYW5jZSAgICAgICAgICAgICAgICAgICAgICAgPDwgMTIKKyAgICAgICAg
ICAgICYga2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEz
OyAvLyBLZWVwIHRoaXMgbGFzdC4KICAgICAgICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7
CiAgICAgICAgIHJldHVybiBoYXNoOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkocmV2aXNpb24gMjMzNDczKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIK
KyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmgJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBA
CiAKICNpbmNsdWRlICJDU1NEZWZlcnJlZFBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlN0eWxlUnVs
ZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJNb2RlLmgJKHJl
dmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyTW9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNiArMzAsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVS
TEhhc2guaCIKLSNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVu
dDsKLQogLy8gTXVzdCBub3QgZ3JvdyBiZXlvbmQgMyBiaXRzLCBkdWUgdG8gcGFja2luZyBpbiBT
dHlsZVByb3BlcnRpZXMuCiBlbnVtIENTU1BhcnNlck1vZGUgewogICAgIEhUTUxTdGFuZGFyZE1v
ZGUsCkBAIC04Niw4OSArNzgsNCBAQCBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NT
UGFyc2VyCiAgICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gVUFTaGVldE1vZGUgfHwgY3NzUGFy
c2VyTW9kZSA9PSBIVE1MU3RhbmRhcmRNb2RlIHx8IGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmli
dXRlTW9kZTsKIH0KIAotc3RydWN0IENTU1BhcnNlckNvbnRleHQgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9k
ZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwotICAgIFdFQkNPUkVfRVhQT1JUIENTU1Bh
cnNlckNvbnRleHQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7Ci0KLSAgICBVUkwgYmFzZVVSTDsKLSAg
ICBTdHJpbmcgY2hhcnNldDsKLSAgICBDU1NQYXJzZXJNb2RlIG1vZGUgeyBIVE1MU3RhbmRhcmRN
b2RlIH07Ci0gICAgYm9vbCBpc0hUTUxEb2N1bWVudCB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKLSAgICBib29sIHRleHRBdXRvc2l6aW5nRW5hYmxlZCB7IGZhbHNlIH07
Ci0jZW5kaWYKLSAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzIHsgZmFsc2UgfTsKLSAg
ICBib29sIGVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSB7IHRydWUgfTsKLSAgICBi
b29sIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9Owot
ICAgIGJvb2wgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29s
IGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uaWNHcmFk
aWVudHNFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGNvbG9yRmlsdGVyRW5hYmxlZCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBkZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwotICAg
IGJvb2wgYWxsb3dOZXdMaW5lc0NsYW1wIHsgZmFsc2UgfTsKLSAgICAKLSAgICAvLyBUaGlzIGlz
IG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgotICAgIGJvb2wgaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiB7IGZhbHNlIH07Ci0gICAgCi0gICAgYm9vbCB1c2VTeXN0
ZW1BcHBlYXJhbmNlIHsgZmFsc2UgfTsKLQotICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJp
bmcmIHVybCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICh1cmwuaXNOdWxsKCkpCi0gICAgICAg
ICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIGlmIChjaGFyc2V0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsKTsKLSAgICAgICAgcmV0dXJuIFVSTChiYXNl
VVJMLCB1cmwsIFRleHRFbmNvZGluZyhjaGFyc2V0KSk7Ci0gICAgfQotfTsKLQotYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCi1XRUJDT1JFX0VY
UE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7Ci0K
LXN0cnVjdCBDU1NQYXJzZXJDb250ZXh0SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYga2V5KQotICAgIHsKLSAgICAgICAgYXV0byBoYXNoID0g
VVJMSGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7Ci0gICAgICAgIGlmICgha2V5LmNoYXJzZXQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgaGFzaCBePSBTdHJpbmdIYXNoOjpoYXNoKGtleS5jaGFyc2V0
KTsKLSAgICAgICAgdW5zaWduZWQgYml0cyA9IGtleS5pc0hUTUxEb2N1bWVudCAgICAgICAgICAg
ICAgICAgIDw8IDAKLSAgICAgICAgICAgICYga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDEKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICAg
ICAgICAgJiBrZXkudGV4dEF1dG9zaXppbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwg
MgotI2VuZGlmCi0gICAgICAgICAgICAmIGtleS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyAgICAg
ICAgICAgICAgICAgICA8PCAzCi0gICAgICAgICAgICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBl
SW5Ob1F1aXJrc01vZGUgICAgICAgICA8PCA0Ci0gICAgICAgICAgICAmIGtleS51c2VMZWdhY3lC
YWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yICA8PCA1Ci0gICAgICAgICAgICAmIGtleS5z
cHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgICAgICAgICAgICAgICA8PCA2Ci0gICAgICAgICAg
ICAmIGtleS5jb25pY0dyYWRpZW50c0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCA3Ci0g
ICAgICAgICAgICAmIGtleS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAg
ICA8PCA4Ci0gICAgICAgICAgICAmIGtleS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAg
ICAgICAgICAgICA8PCA5Ci0gICAgICAgICAgICAmIGtleS5tb2RlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAxMAotICAgICAgICAgICAgJiBrZXkuYWxsb3dOZXdMaW5l
c0NsYW1wICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTE7Ci0gICAgICAgIGhhc2ggXj0gV1RG
OjppbnRIYXNoKGJpdHMpOwotICAgICAgICByZXR1cm4gaGFzaDsKLSAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci19Owot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotdGVtcGxhdGU8PiBz
dHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKLSAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcg
KE5vdE51bGwsICZzbG90LmJhc2VVUkwpIFdlYkNvcmU6OlVSTChXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpDU1NQYXJzZXJDb250ZXh0JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuYmFzZVVSTC5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0gICAgc3RhdGljIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRl
eHQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQoV2ViQ29y
ZTo6SFRNTFN0YW5kYXJkTW9kZSk7IH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OkNT
U1BhcnNlckNvbnRleHRIYXNoIEhhc2g7Ci19OwotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmgJKHJldmlzaW9uIDIzMzQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTRnVuY3Rpb25WYWx1ZS5oIgotI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzM0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNT
U1NlbGVjdG9yUGFyc2VyLmgiCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVk
ZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAyMzM0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkNTU1Zh
cmlhYmxlUGFyc2VyLmgiCiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCi0j
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>