<?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>203972</bug_id>
          
          <creation_ts>2019-11-07 11:34:00 -0800</creation_ts>
          <short_desc>Factor matched declarations cache into a class</short_desc>
          <delta_ts>2019-11-07 15:02:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588318</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-07 11:34:00 -0800</bug_when>
    <thetext>Out of StyleResolver and rename from &quot;matched properties cache&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588335</commentid>
    <comment_count>1</comment_count>
      <attachid>383066</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-07 12:01:45 -0800</bug_when>
    <thetext>Created attachment 383066
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588425</commentid>
    <comment_count>2</comment_count>
      <attachid>383066</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 15:01:28 -0800</bug_when>
    <thetext>Comment on attachment 383066
patch

Clearing flags on attachment: 383066

Committed r252208: &lt;https://trac.webkit.org/changeset/252208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588426</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 15:01:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588427</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-07 15:02:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57000001&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383066</attachid>
            <date>2019-11-07 12:01:45 -0800</date>
            <delta_ts>2019-11-07 15:01:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>matched-declarations-cache.patch</filename>
            <type>text/plain</type>
            <size>38937</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNjNhZWEzYjgxNi4uNTdiZTA2YmI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOS0xMS0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgRmFjdG9yIG1hdGNoZWQgZGVjbGFyYXRpb25zIGNhY2hlIGludG8gYSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0
aGUgY29kZSBvdXQgZnJvbSBTdHlsZVJlc29sdmVyIGFuZCByZW5hbWUgIm1hdGNoZWQgcHJvcGVy
dGllcyBjYWNoZSIgLT4gIm1hdGNoZWQgZGVjbGFyYXRpb25zIGNhY2hlIgorICAgICAgICB0byBi
ZXR0ZXIgZGVzY3JpYmUgaXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
OjpkZWNsYXJhdGlvbnNGb3JPcmlnaW4pOgorCisgICAgICAgIEFkZCBhIGhlbHBlci4KKworICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVz
KToKKworICAgICAgICBSZXNlcnZlIHZlY3RvciBjYXBhY2l0eSBiZWZvcmUgYWRkaW5nIHJ1bGVz
LgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkTWF0Y2hlZFBy
b3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0Y2hSZXN1bHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0Y2hSZXN1bHQ6Om9wZXJhdG9yIT0gY29uc3QpOgorCisgICAgICAgIFJlbW92ZSB0
aGUgdW5uZWVkZWQgaW5saW5lIGNhcGFjaXR5IHNvIHdlIGNhbiBqdXN0IHVzZSBNYXRjaFJlc3Vs
dCBpdHNlbGYgaW4gdGhlIGNhY2hlLgorCisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyk6CisgICAgICAgICogY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5bGVS
ZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjppbnZhbGlkYXRlTWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNsZWFyQ2FjaGVkRGVjbGFyYXRpb25zQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29tcHV0ZU1hdGNo
ZWRQcm9wZXJ0aWVzSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpmaW5kRnJvbU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmludmFsaWRhdGVNYXRjaGVk
UHJvcGVydGllc0NhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNsZWFyQ2FjaGVkUHJvcGVydGllc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW06Ok1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGll
c0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1l
bnQpOgorICAgICAgICAqIHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6TWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpNYXRjaGVk
RGVjbGFyYXRpb25zQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmZpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmludmFsaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6Y2xlYXJFbnRy
aWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Ok1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6c3dlZXApOgorICAgICAgICAqIHN0eWxlL01hdGNoZWRE
ZWNsYXJhdGlvbnNDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZl
RWxlbWVudCk6CisKIDIwMTktMTEtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1lbmFibGUgTlNVUkxTZXNzaW9uIGlzb2xhdGlvbiBh
ZnRlciByMjUyMTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM2OWZiNTdjZjM5Li4zNWZkNDIyNzk0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIzNDQsNiArMjM0NCw3IEBAIHN0eWxlL0F0dHJpYnV0ZUNoYW5n
ZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5
bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3Bw
CitzdHlsZS9NYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwCiBzdHlsZS9Qcm9wZXJ0eUNhc2Nh
ZGUuY3BwCiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCiBzdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkOTA2MWIyZGRhNS4uYjdlYzMzY2JmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4MDksNiArNDgwOSw3IEBA
CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIyMTQxNjUwRDcw
MDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsKIAkJRTQ0RkExODUxQkNBNkI1QTAw
OTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuaCAqLzsgfTsKIAkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNl
bGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi87IH07CisJ
CUU0NUJBNkFBMjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUJBNkE4MjM3
NDkyNkIwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCAqLzsgfTsKIAkJRTQ2
MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2MDVGRUEyMTY2NDgwODAwRTUz
MDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUU0NjE4MDJEMUM4REQyOTAwMDI2QzAyQyAvKiBTdHlsZVJl
bGF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ2MTgwMkMxQzhERDI5MDAwMjZDMDJDIC8qIFN0eWxlUmVsYXRpb25zLmggKi87IH07CiAJCUU0
NjFENjVGMUJCMEM4MEQwMENCNTY0NSAvKiBTdHlsZVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYxRDY1RTFCQjBDODBEMDBDQjU2NDUgLyog
U3R5bGVTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xNTEyMCw2ICsxNTEyMSw4IEBACiAJCUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAv
KiBTY3JvbGxWaWV3SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2Nyb2xsVmlld0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1Mzkw
M0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyog
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDVCQTZBQjIzNzQ5MjdCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NjA1RkVBMjE2NjQ4MDgwMEU1MzA0NiAvKiBQ
cmV3YXJtSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJl
d2FybUluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NjE4MDJD
MUM4REQyOTAwMDI2QzAyQyAvKiBTdHlsZVJlbGF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHlsZVJlbGF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDYxODAyRTFDOERENEQyMDAyNkMwMkMgLyogU3R5bGVSZWxhdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVSZWxhdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY5NjEsNiArMjY5NjQsOCBAQAogCQkJCUU0QTgx
NERGMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFD
MDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLAogCQkJ
CTFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLywKKwkJ
CQlFNDVCQTZBQjIzNzQ5MjdCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmNw
cCAqLywKKwkJCQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAwRkE0MzQ1IC8qIFByb3BlcnR5Q2Fz
Y2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2Fz
Y2FkZS5oICovLAogCQkJCUU0QUJBQzA3MjM2QjAxODEwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXIu
Y3BwICovLApAQCAtMzA2MzksNiArMzA2NDQsNyBAQAogCQkJCTc3QTE3QUE3MTJGMjhCMkEwMDRF
MDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREY2
QkFGOTEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEQTkzMjY3MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVB
dWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NUJBNkFBMjM3NDkyNkMwMDRERkMw
NyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNDg3
N0U2MUZBQUIwMjUwMEMwNTc1OSAvKiBKU09mZnNjcmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzE0MEM1MjcxRkRGNTU4MjAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhE
MDEgLyogSnNvbldlYktleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCA5ODQ4NDQyMzc3OS4uNTMxOTE0ZmE4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMTU5LDYg
KzE1OSwxOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdAogICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hS
ZXF1ZXN0KTsKIH0KIAorCitWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+JiBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6ZGVjbGFyYXRpb25zRm9yT3JpZ2luKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwg
RGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4pCit7CisgICAgc3dpdGNoIChkZWNs
YXJhdGlvbk9yaWdpbikgeworICAgIGNhc2UgRGVjbGFyYXRpb25PcmlnaW46OlVzZXJBZ2VudDog
cmV0dXJuIG1hdGNoUmVzdWx0LnVzZXJBZ2VudERlY2xhcmF0aW9uczsKKyAgICBjYXNlIERlY2xh
cmF0aW9uT3JpZ2luOjpVc2VyOiByZXR1cm4gbWF0Y2hSZXN1bHQudXNlckRlY2xhcmF0aW9uczsK
KyAgICBjYXNlIERlY2xhcmF0aW9uT3JpZ2luOjpBdXRob3I6IHJldHVybiBtYXRjaFJlc3VsdC5h
dXRob3JEZWNsYXJhdGlvbnM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBtYXRjaFJlc3VsdC5hdXRob3JEZWNsYXJhdGlvbnM7Cit9CisKIHZvaWQgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9y
aWdpbiBkZWNsYXJhdGlvbk9yaWdpbikKIHsKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0
eSgpKQpAQCAtMTcxLDggKzE4Myw4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRB
bmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiBkZWNsYXJhCiAKIHZvaWQg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3Jp
Z2luIGRlY2xhcmF0aW9uT3JpZ2luLCBPcHRpb25hbDxTdHlsZTo6U2NvcGVPcmRpbmFsPiBmcm9t
U2NvcGUpCiB7Ci0gICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSA8PSBtX21hdGNoZWRSdWxl
VHJhbnNmZXJJbmRleCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX21vZGUgIT0gU2VsZWN0
b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXMpCisgICAgICAgIGRlY2xhcmF0aW9uc0Zv
ck9yaWdpbihtX3Jlc3VsdCwgZGVjbGFyYXRpb25PcmlnaW4pLnJlc2VydmVDYXBhY2l0eShtX21h
dGNoZWRSdWxlcy5zaXplKCkpOwogCiAgICAgZm9yICg7IG1fbWF0Y2hlZFJ1bGVUcmFuc2Zlcklu
ZGV4IDwgbV9tYXRjaGVkUnVsZXMuc2l6ZSgpOyArK21fbWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4
KSB7CiAgICAgICAgIGF1dG8mIG1hdGNoZWRSdWxlID0gbV9tYXRjaGVkUnVsZXNbbV9tYXRjaGVk
UnVsZVRyYW5zZmVySW5kZXhdOwpAQCAtNjU4LDE3ICs2NzAsNyBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaGVkUHJvcGVydGllcyYmIG1hdGNo
ZWRQcm9wZQogCiAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBjb21wdXRlSXNDYWNoZWFibGUo
KTsKIAotICAgIHN3aXRjaCAoZGVjbGFyYXRpb25PcmlnaW4pIHsKLSAgICBjYXNlIERlY2xhcmF0
aW9uT3JpZ2luOjpVc2VyQWdlbnQ6Ci0gICAgICAgIG1fcmVzdWx0LnVzZXJBZ2VudERlY2xhcmF0
aW9ucy5hcHBlbmQoV1RGTW92ZShtYXRjaGVkUHJvcGVydGllcykpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIERlY2xhcmF0aW9uT3JpZ2luOjpVc2VyOgotICAgICAgICBtX3Jlc3VsdC51c2Vy
RGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKG1hdGNoZWRQcm9wZXJ0aWVzKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRGVjbGFyYXRpb25PcmlnaW46OkF1dGhvcjoKLSAgICAgICAgbV9y
ZXN1bHQuYXV0aG9yRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKG1hdGNoZWRQcm9wZXJ0aWVz
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBkZWNsYXJhdGlvbnNGb3JPcmlnaW4obV9y
ZXN1bHQsIGRlY2xhcmF0aW9uT3JpZ2luKS5hcHBlbmQoV1RGTW92ZShtYXRjaGVkUHJvcGVydGll
cykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5oCmluZGV4IGRiYThlOTUzMTFjLi41YjY4NDgzNjI2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAgLTYyLDkgKzYyLDE4IEBA
IHN0cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAg
Ym9vbCBpc0NhY2hlYWJsZSB7IHRydWUgfTsKLSAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXMs
IDMyPiB1c2VyQWdlbnREZWNsYXJhdGlvbnM7Ci0gICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVz
LCAzMj4gdXNlckRlY2xhcmF0aW9uczsKLSAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXMsIDMy
PiBhdXRob3JEZWNsYXJhdGlvbnM7CisgICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVzPiB1c2Vy
QWdlbnREZWNsYXJhdGlvbnM7CisgICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVzPiB1c2VyRGVj
bGFyYXRpb25zOworICAgIFZlY3RvcjxNYXRjaGVkUHJvcGVydGllcz4gYXV0aG9yRGVjbGFyYXRp
b25zOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoUmVzdWx0JiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc0NhY2hlYWJsZSA9PSBvdGhlci5pc0NhY2hlYWJs
ZQorICAgICAgICAgICAgJiYgdXNlckFnZW50RGVjbGFyYXRpb25zID09IG90aGVyLnVzZXJBZ2Vu
dERlY2xhcmF0aW9ucworICAgICAgICAgICAgJiYgdXNlckRlY2xhcmF0aW9ucyA9PSBvdGhlci51
c2VyRGVjbGFyYXRpb25zCisgICAgICAgICAgICAmJiBhdXRob3JEZWNsYXJhdGlvbnMgPT0gb3Ro
ZXIuYXV0aG9yRGVjbGFyYXRpb25zOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TWF0Y2hSZXN1bHQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gdXNlckFnZW50RGVjbGFyYXRpb25z
LmlzRW1wdHkoKSAmJiB1c2VyRGVjbGFyYXRpb25zLmlzRW1wdHkoKSAmJiBhdXRob3JEZWNsYXJh
dGlvbnMuaXNFbXB0eSgpOyB9CiB9OwpAQCAtMTIyLDYgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAKICAgICBlbnVtIGNsYXNzIERlY2xhcmF0aW9uT3Jp
Z2luIHsgVXNlckFnZW50LCBVc2VyLCBBdXRob3IgfTsKKyAgICBzdGF0aWMgVmVjdG9yPE1hdGNo
ZWRQcm9wZXJ0aWVzPiYgZGVjbGFyYXRpb25zRm9yT3JpZ2luKE1hdGNoUmVzdWx0JiwgRGVjbGFy
YXRpb25PcmlnaW4pOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xh
cmF0aW9uT3JpZ2luKTsKICAgICB2b2lkIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9u
T3JpZ2luLCBPcHRpb25hbDxTdHlsZTo6U2NvcGVPcmRpbmFsPiBmb3JTY29wZSA9IHsgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCAxZmY5ZWZmNDhlOS4uNmFjYWMzM2NjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25z
dCBNZQogICAgICAgICB9IGVsc2UgaWYgKGlzPFN0eWxlUnVsZUZvbnRGYWNlPigqcnVsZSkgJiYg
cmVzb2x2ZXIpIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGlzIGZvbnQgZmFjZSB0byBvdXIgc2V0
LgogICAgICAgICAgICAgcmVzb2x2ZXItPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkuYWRkRm9u
dEZhY2VSdWxlKGRvd25jYXN0PFN0eWxlUnVsZUZvbnRGYWNlPigqcnVsZS5nZXQoKSksIGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwotICAgICAgICAgICAgcmVzb2x2
ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CisgICAgICAgICAgICByZXNv
bHZlci0+aW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzPFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpICYmIHJlc29sdmVyKQogICAgICAg
ICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJh
bWVzPigqcnVsZSkpOwogICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1
bGUpICYmIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY29uZGl0aW9uSXNTdXBw
b3J0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkMGZmZDA3ZDcx
YS4uNmRlMjNhNTkwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTEx
Niw3ICsxMTYsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoKQog
CiBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fcnVsZVNldHMoKnRoaXMpCi0gICAgLCBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVTd2VlcFRp
bWVyKCp0aGlzLCAmU3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRjaGVkUHJvcGVydGllc0NhY2hlKQog
ICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFU
SU9OKQogICAgICwgbV92aWV3cG9ydFN0eWxlUmVzb2x2ZXIoVmlld3BvcnRTdHlsZVJlc29sdmVy
OjpjcmVhdGUoJmRvY3VtZW50KSkKQEAgLTE5NiwyNyArMTk1LDYgQEAgU3R5bGVSZXNvbHZlcjo6
flN0eWxlUmVzb2x2ZXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6c3dlZXBN
YXRjaGVkUHJvcGVydGllc0NhY2hlKCkKLXsKLSAgICAvLyBMb29rIGZvciBjYWNoZSBlbnRyaWVz
IGNvbnRhaW5pbmcgYSBzdHlsZSBkZWNsYXJhdGlvbiB3aXRoIGEgc2luZ2xlIHJlZiBhbmQgcmVt
b3ZlIHRoZW0uCi0gICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1
dGUgbXV0YXRpb24gY2F1c2VzIGl0IHRvIGdlbmVyYXRlIGEgbmV3IGlubGluZVN0eWxlKCkKLSAg
ICAvLyBvciBwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpLCBwb3RlbnRpYWxseSBsZWF2aW5n
IHRoaXMgY2FjaGUgd2l0aCB0aGUgbGFzdCByZWYgb24gdGhlIG9sZCBvbmUuCi0gICAgYXV0byBo
YXNPbmVSZWYgPSBbXShhdXRvJiBkZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBt
YXRjaGVkUHJvcGVydGllcyA6IGRlY2xhcmF0aW9ucykgewotICAgICAgICAgICAgaWYgKG1hdGNo
ZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMtPmhhc09uZVJlZigpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0g
ICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLnJlbW92ZUlmKFsmXShhdXRvJiBrZXlWYWx1ZSkg
ewotICAgICAgICBhdXRvJiBlbnRyeSA9IGtleVZhbHVlLnZhbHVlOwotICAgICAgICByZXR1cm4g
aGFzT25lUmVmKGVudHJ5LnVzZXJBZ2VudERlY2xhcmF0aW9ucykgfHwgaGFzT25lUmVmKGVudHJ5
LnVzZXJEZWNsYXJhdGlvbnMpIHx8IGhhc09uZVJlZihlbnRyeS5hdXRob3JEZWNsYXJhdGlvbnMp
OwotICAgIH0pOwotCi0gICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlQWRkaXRpb25zU2luY2VM
YXN0U3dlZXAgPSAwOwotfQotCiBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxl
Y3RvckZpbHRlcikKICAgICA6IG1fZWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1fcGFyZW50U3R5
bGUocGFyZW50U3R5bGUpCkBAIC0xMTIxLDEwOCArMTA5OSw0NSBAQCBzdGF0aWMgYm9vbCBlbGVt
ZW50VHlwZUhhc0FwcGVhcmFuY2VGcm9tVUFTdHlsZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICB8fCBsb2NhbE5hbWUgPT0gSFRNTE5hbWVzOjptZXRlclRhZzsKIH0KIAotdW5zaWdu
ZWQgU3R5bGVSZXNvbHZlcjo6Y29tcHV0ZU1hdGNoZWRQcm9wZXJ0aWVzSGFzaChjb25zdCBNYXRj
aFJlc3VsdCYgbWF0Y2hSZXN1bHQpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1l
bW9yeShtYXRjaFJlc3VsdC51c2VyQWdlbnREZWNsYXJhdGlvbnMuZGF0YSgpLCBzaXplb2YoTWF0
Y2hlZFByb3BlcnRpZXMpICogbWF0Y2hSZXN1bHQudXNlckFnZW50RGVjbGFyYXRpb25zLnNpemUo
KSkKLSAgICAgICAgXiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkobWF0Y2hSZXN1bHQudXNlckRl
Y2xhcmF0aW9ucy5kYXRhKCksIHNpemVvZihNYXRjaGVkUHJvcGVydGllcykgKiBtYXRjaFJlc3Vs
dC51c2VyRGVjbGFyYXRpb25zLnNpemUoKSkKLSAgICAgICAgXiBTdHJpbmdIYXNoZXI6Omhhc2hN
ZW1vcnkobWF0Y2hSZXN1bHQuYXV0aG9yRGVjbGFyYXRpb25zLmRhdGEoKSwgc2l6ZW9mKE1hdGNo
ZWRQcm9wZXJ0aWVzKSAqIG1hdGNoUmVzdWx0LmF1dGhvckRlY2xhcmF0aW9ucy5zaXplKCkpOwot
fQotCi1jb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSogU3R5
bGVSZXNvbHZlcjo6ZmluZEZyb21NYXRjaGVkUHJvcGVydGllc0NhY2hlKHVuc2lnbmVkIGhhc2gs
IGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6aW52
YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpCiB7Ci0gICAgQVNTRVJUKGhhc2gpOwot
Ci0gICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZTo6aXRlcmF0b3IgaXQgPSBtX21hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGUuZmluZChoYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9tYXRjaGVkUHJvcGVydGll
c0NhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8mIGNhY2hl
SXRlbSA9IGl0LT52YWx1ZTsKLSAgICBpZiAobWF0Y2hSZXN1bHQudXNlckFnZW50RGVjbGFyYXRp
b25zICE9IGNhY2hlSXRlbS51c2VyQWdlbnREZWNsYXJhdGlvbnMgfHwgbWF0Y2hSZXN1bHQudXNl
ckRlY2xhcmF0aW9ucyAhPSBjYWNoZUl0ZW0udXNlckRlY2xhcmF0aW9ucyB8fCBtYXRjaFJlc3Vs
dC5hdXRob3JEZWNsYXJhdGlvbnMgIT0gY2FjaGVJdGVtLmF1dGhvckRlY2xhcmF0aW9ucykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gJmNhY2hlSXRlbTsKKyAgICBtX21h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZS5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBN
YXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNsZWFyQ2FjaGVk
RGVjbGFyYXRpb25zQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKQogewotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXRjaGVkRGVjbGFyYXRpb25DYWNoZUFkZGl0aW9uc0JldHdlZW5Td2VlcHMg
PSAxMDA7Ci0gICAgaWYgKCsrbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlQWRkaXRpb25zU2luY2VM
YXN0U3dlZXAgPj0gbWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGVBZGRpdGlvbnNCZXR3ZWVuU3dlZXBz
Ci0gICAgICAgICYmICFtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVTd2VlcFRpbWVyLmlzQWN0aXZl
KCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgbWF0Y2hlZERlY2xhcmF0aW9uQ2Fj
aGVTd2VlcFRpbWUgeyAxX21pbiB9OwotICAgICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVT
d2VlcFRpbWVyLnN0YXJ0T25lU2hvdChtYXRjaGVkRGVjbGFyYXRpb25DYWNoZVN3ZWVwVGltZSk7
Ci0gICAgfQotCi0gICAgQVNTRVJUKGhhc2gpOwotICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBj
YWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVy
IG1vZGlmaWVkLgotICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5
IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlz
LgotICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbShtYXRjaFJlc3VsdCwg
c3R5bGUsIHBhcmVudFN0eWxlKTsKLSAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuYWRkKGhh
c2gsIFdURk1vdmUoY2FjaGVJdGVtKSk7CisgICAgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUu
Y2xlYXJFbnRyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKTsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjppbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpCi17Ci0gICAgbV9tYXRj
aGVkUHJvcGVydGllc0NhY2hlLmNsZWFyKCk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y2xl
YXJDYWNoZWRQcm9wZXJ0aWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKQotewotICAgIFZlY3Rv
cjx1bnNpZ25lZCwgMTY+IHRvUmVtb3ZlOwotICAgIGZvciAoYXV0byYgY2FjaGVLZXlWYWx1ZSA6
IG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZSkgewotICAgICAgICBpZiAoY2FjaGVLZXlWYWx1ZS52
YWx1ZS5yZW5kZXJTdHlsZS0+aGFzVmlld3BvcnRVbml0cygpKQotICAgICAgICAgICAgdG9SZW1v
dmUuYXBwZW5kKGNhY2hlS2V5VmFsdWUua2V5KTsKLSAgICB9Ci0gICAgZm9yIChhdXRvIGtleSA6
IHRvUmVtb3ZlKQotICAgICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUucmVtb3ZlKGtleSk7
Ci19Ci0KLXN0YXRpYyBib29sIGlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKQotewotICAgIC8vIEZJWE1FOiBXcml0aW5nIG1vZGUgYW5k
IGRpcmVjdGlvbiBwcm9wZXJ0aWVzIG1vZGlmeSBzdGF0ZSB3aGVuIGFwcGx5aW5nIHRvIGRvY3Vt
ZW50IGVsZW1lbnQgYnkgY2FsbGluZwotICAgIC8vIERvY3VtZW50OjpzZXRXcml0aW5nTW9kZS9E
aXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudC4gV2UgY2FuJ3Qgc2tpcCB0aGUgYXBwbHlpbmcg
YnkgY2FjaGluZy4KLSAgICBpZiAoJmVsZW1lbnQgPT0gZWxlbWVudC5kb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gY29udGVudDphdHRy
KCkgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZWxlbWVudCBpdCBpcyBiZWluZyBhcHBsaWVkIHRvLgot
ICAgIGlmIChzdHlsZS0+aGFzQXR0ckNvbnRlbnQoKSB8fCAoc3R5bGUtPnN0eWxlVHlwZSgpICE9
IFBzZXVkb0lkOjpOb25lICYmIHBhcmVudFN0eWxlLT5oYXNBdHRyQ29udGVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlLT56b29tKCkgIT0gUmVuZGVyU3R5bGU6Omlu
aXRpYWxab29tKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoc3R5bGUtPndyaXRp
bmdNb2RlKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxXcml0aW5nTW9kZSgpIHx8IHN0eWxlLT5k
aXJlY3Rpb24oKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgLy8gVGhlIGNhY2hlIGFzc3VtZXMgc3RhdGljIGtub3dsZWRnZSBh
Ym91dCB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQuCi0gICAgaWYgKHN0eWxlLT5oYXNF
eHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIFNob3VsZFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgc2hvdWxkVXNlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGll
cyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQs
IFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSB1c2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUp
CiB7CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKLSAgICB1bnNpZ25lZCBjYWNoZUhhc2gg
PSBzaG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlICYmIG1hdGNoUmVzdWx0LmlzQ2FjaGVh
YmxlID8gY29tcHV0ZU1hdGNoZWRQcm9wZXJ0aWVzSGFzaChtYXRjaFJlc3VsdCkgOiAwOworICAg
IHVuc2lnbmVkIGNhY2hlSGFzaCA9IHVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSA9PSBVc2VN
YXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OlllcyA/IFN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGU6OmNvbXB1dGVIYXNoKG1hdGNoUmVzdWx0KSA6IDA7CiAgICAgYXV0byBpbmNsdWRlZFBy
b3BlcnRpZXMgPSBTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpJbmNsdWRlZFByb3BlcnRpZXM6OkFs
bDsKIAotICAgIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtKiBjYWNoZUl0ZW0gPSBu
dWxscHRyOwotICAgIGlmIChjYWNoZUhhc2ggJiYgKGNhY2hlSXRlbSA9IGZpbmRGcm9tTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZShjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KSkKLSAgICAgICAgJiYgaXND
YWNoZWFibGVJbk1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoZWxlbWVudCwgc3RhdGUuc3R5bGUoKSwg
c3RhdGUucGFyZW50U3R5bGUoKSkpIHsKKyAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZSgp
OworICAgIGF1dG8mIHBhcmVudFN0eWxlID0gKnN0YXRlLnBhcmVudFN0eWxlKCk7CisKKyAgICBh
dXRvKiBjYWNoZUVudHJ5ID0gbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuZmluZChjYWNoZUhh
c2gsIG1hdGNoUmVzdWx0KTsKKyAgICBpZiAoY2FjaGVFbnRyeSAmJiBTdHlsZTo6TWF0Y2hlZERl
Y2xhcmF0aW9uc0NhY2hlOjppc0NhY2hlYWJsZShlbGVtZW50LCBzdHlsZSwgcGFyZW50U3R5bGUp
KSB7CiAgICAgICAgIC8vIFdlIGNhbiBidWlsZCB1cCB0aGUgc3R5bGUgYnkgY29weWluZyBub24t
aW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBhbiBlYXJsaWVyIHN0eWxlIG9iamVjdCBidWlsdCB1
c2luZyB0aGUgc2FtZSBleGFjdAogICAgICAgICAvLyBzdHlsZSBkZWNsYXJhdGlvbnMuIFdlIHRo
ZW4gb25seSBuZWVkIHRvIGFwcGx5IHRoZSBpbmhlcml0ZWQgcHJvcGVydGllcywgaWYgYW55LCBh
cyB0aGVpciB2YWx1ZXMgY2FuIGRlcGVuZCBvbiB0aGUgCiAgICAgICAgIC8vIGVsZW1lbnQgY29u
dGV4dC4gVGhpcyBpcyBmYXN0IGFuZCBzYXZlcyBtZW1vcnkgYnkgcmV1c2luZyB0aGUgc3R5bGUg
ZGF0YSBzdHJ1Y3R1cmVzLgotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVk
RnJvbSgqY2FjaGVJdGVtLT5yZW5kZXJTdHlsZSk7Ci0gICAgICAgIGlmIChzdGF0ZS5wYXJlbnRT
dHlsZSgpLT5pbmhlcml0ZWREYXRhU2hhcmVkKGNhY2hlSXRlbS0+cGFyZW50UmVuZGVyU3R5bGUu
Z2V0KCkpICYmICFpc0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkpIHsKKyAgICAgICAgc3R5bGUu
Y29weU5vbkluaGVyaXRlZEZyb20oKmNhY2hlRW50cnktPnJlbmRlclN0eWxlKTsKKyAgICAgICAg
aWYgKHBhcmVudFN0eWxlLmluaGVyaXRlZERhdGFTaGFyZWQoY2FjaGVFbnRyeS0+cGFyZW50UmVu
ZGVyU3R5bGUuZ2V0KCkpICYmICFpc0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkpIHsKICAgICAg
ICAgICAgIEluc2lkZUxpbmsgbGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmso
KTsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRl
bnRpY2FsIGluaGVyaXRlZCBwcm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0
aGVuIHRoZQogICAgICAgICAgICAgLy8gcmVzdWx0aW5nIHN0eWxlIHdpbGwgYmUgaWRlbnRpY2Fs
IHRvby4gV2UgY29weSB0aGUgaW5oZXJpdGVkIHByb3BlcnRpZXMgb3ZlciBmcm9tIHRoZSBjYWNo
ZSBhbmQgYXJlIGRvbmUuCi0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbSgq
Y2FjaGVJdGVtLT5yZW5kZXJTdHlsZSk7CisgICAgICAgICAgICBzdHlsZS5pbmhlcml0RnJvbSgq
Y2FjaGVFbnRyeS0+cmVuZGVyU3R5bGUpOwogCiAgICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5
IHRoZSBsaW5rIHN0YXR1cyBpcyB0cmVhdGVkIGxpa2UgYW4gaW5oZXJpdGVkIHByb3BlcnR5LiBX
ZSBuZWVkIHRvIGV4cGxpY2l0bHkgcmVzdG9yZSBpdC4KLSAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldEluc2lkZUxpbmsobGlua1N0YXR1cyk7CisgICAgICAgICAgICBzdHlsZS5zZXRJbnNp
ZGVMaW5rKGxpbmtTdGF0dXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGluY2x1ZGVkUHJvcGVydGllcyA9IFN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OkluY2x1ZGVk
UHJvcGVydGllczo6SW5oZXJpdGVkT25seTsKICAgICB9CiAKLSAgICBpZiAoZWxlbWVudFR5cGVI
YXNBcHBlYXJhbmNlRnJvbVVBU3R5bGUoKnN0YXRlLmVsZW1lbnQoKSkpIHsKKyAgICBpZiAoZWxl
bWVudFR5cGVIYXNBcHBlYXJhbmNlRnJvbVVBU3R5bGUoZWxlbWVudCkpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXMgc3VjaCBhIGhhY2suCiAgICAgICAgIC8vIEZpbmQgb3V0IGlmIHRoZXJl
J3MgYSAtd2Via2l0LWFwcGVhcmFuY2UgcHJvcGVydHkgaW4gZWZmZWN0IGZyb20gdGhlIFVBIHNo
ZWV0LgogICAgICAgICAvLyBJZiBzbywgd2UgY2FjaGUgdGhlIGJvcmRlciBhbmQgYmFja2dyb3Vu
ZCBzdHlsZXMgc28gdGhhdCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoKQpAQCAtMTIzOSwyMyAr
MTE1NCwyMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29u
c3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgIGJ1aWxkZXIuYXBwbHlIaWdo
UHJpb3JpdHlQcm9wZXJ0aWVzKCk7CiAKICAgICAvLyBJZiB0aGUgZWZmZWN0aXZlIHpvb20gdmFs
dWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHByb3BlcnRpZXMgY2FjaGUuIFN0
YXJ0IG92ZXIuCi0gICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLT5l
ZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKQotICAgICAg
ICByZXR1cm4gYXBwbHlNYXRjaGVkUHJvcGVydGllcyhtYXRjaFJlc3VsdCwgZWxlbWVudCwgRG9O
b3RVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlKTsKKyAgICBpZiAoY2FjaGVFbnRyeSAmJiBjYWNo
ZUVudHJ5LT5yZW5kZXJTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpICE9IHN0eWxlLmVmZmVjdGl2ZVpv
b20oKSkKKyAgICAgICAgcmV0dXJuIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQs
IGVsZW1lbnQsIFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6Tm8pOwogCiAgICAgLy8gSWYg
dGhlIGZvbnQgY2hhbmdlZCwgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHByb3BlcnRpZXMgY2Fj
aGUuIFN0YXJ0IG92ZXIuCi0gICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRlclN0
eWxlLT5mb250RGVzY3JpcHRpb24oKSAhPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQsIGVs
ZW1lbnQsIERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CisgICAgaWYgKGNhY2hlRW50
cnkgJiYgY2FjaGVFbnRyeS0+cmVuZGVyU3R5bGUtPmZvbnREZXNjcmlwdGlvbigpICE9IHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpKQorICAgICAgICByZXR1cm4gYXBwbHlNYXRjaGVkUHJvcGVydGll
cyhtYXRjaFJlc3VsdCwgZWxlbWVudCwgVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpObyk7
CiAKICAgICBidWlsZGVyLmFwcGx5TG93UHJpb3JpdHlQcm9wZXJ0aWVzKCk7CiAKICAgICBmb3Ig
KGF1dG8mIGNvbnRlbnRBdHRyaWJ1dGUgOiBidWlsZGVyLnN0YXRlKCkucmVnaXN0ZXJlZENvbnRl
bnRBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVzKCkucmVn
aXN0ZXJDb250ZW50QXR0cmlidXRlKGNvbnRlbnRBdHRyaWJ1dGUpOwogCi0gICAgaWYgKGNhY2hl
SXRlbSB8fCAhY2FjaGVIYXNoKQorICAgIGlmIChjYWNoZUVudHJ5IHx8ICFjYWNoZUhhc2gpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAoIWlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0Nh
Y2hlKCpzdGF0ZS5lbGVtZW50KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnBhcmVudFN0eWxlKCkp
KQotICAgICAgICByZXR1cm47Ci0gICAgYWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKHN0YXRl
LnN0eWxlKCksIHN0YXRlLnBhcmVudFN0eWxlKCksIGNhY2hlSGFzaCwgbWF0Y2hSZXN1bHQpOwor
CisgICAgaWYgKFN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmlzQ2FjaGVhYmxlKGVs
ZW1lbnQsIHN0eWxlLCBwYXJlbnRTdHlsZSkpCisgICAgICAgIG1fbWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlLmFkZChzdHlsZSwgcGFyZW50U3R5bGUsIGNhY2hlSGFzaCwgbWF0Y2hSZXN1bHQpOwog
fQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGRkYzUxMjdhYTMzLi45YzgyMDVh
ZDc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yNSwxMyArMjUsMTEgQEAK
ICNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmgiCisjaW5jbHVkZSAi
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRv
ci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZVNldC5oIgotI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgotI2luY2x1ZGUgPGJpdHNldD4KICNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE4
MSwxNiArMTc5LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNGaXJzdExpbmVSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS51c2VzRmlyc3RMaW5lUnVsZXM7IH0K
ICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0
cy5mZWF0dXJlcygpLnVzZXNGaXJzdExldHRlclJ1bGVzOyB9CiAgICAgCi0gICAgdm9pZCBpbnZh
bGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOwotCi0gICAgdm9pZCBjbGVhckNhY2hlZFBy
b3BlcnRpZXNBZmZlY3RlZEJ5Vmlld3BvcnRVbml0cygpOworICAgIHZvaWQgaW52YWxpZGF0ZU1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOworICAgIHZvaWQgY2xlYXJDYWNoZWREZWNsYXJhdGlv
bnNBZmZlY3RlZEJ5Vmlld3BvcnRVbml0cygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0
UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgRWxlbWVudCopOwogICAg
IHZvaWQgYWRqdXN0UmVuZGVyU3R5bGVGb3JTaXRlU3BlY2lmaWNRdWlya3MoUmVuZGVyU3R5bGUm
LCBjb25zdCBFbGVtZW50Jik7Ci0gICAgICAgIAotICAgIGVudW0gU2hvdWxkVXNlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IDAsIFVzZU1h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKLSAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
Y29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNlTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOworCisgICAgZW51bSBjbGFz
cyBVc2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgeyBZZXMsIE5vIH07CisgICAgdm9pZCBhcHBs
eU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCYsIFVz
ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSA9IFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6
WWVzKTsKIAogICAgIERvY3VtZW50UnVsZVNldHMgbV9ydWxlU2V0czsKIApAQCAtMjUyLDM3ICsy
NDksNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgY2FjaGVCb3JkZXJBbmRCYWNrZ3Jv
dW5kKCk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU1hdGNoZWRQcm9wZXJ0aWVzSGFz
aChjb25zdCBNYXRjaFJlc3VsdCYpOwotICAgIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllc0NhY2hl
SXRlbSB7Ci0gICAgICAgIFZlY3RvcjxNYXRjaGVkUHJvcGVydGllcz4gdXNlckFnZW50RGVjbGFy
YXRpb25zOwotICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+IHVzZXJEZWNsYXJhdGlv
bnM7Ci0gICAgICAgIFZlY3RvcjxNYXRjaGVkUHJvcGVydGllcz4gYXV0aG9yRGVjbGFyYXRpb25z
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlbmRlclN0eWxlOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcmVudFJlbmRlclN0eWxlOwotICAg
ICAgICAKLSAgICAgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0oY29uc3QgTWF0Y2hSZXN1
bHQmIG1hdGNoUmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgIDogcmVuZGVyU3R5bGUoUmVuZGVyU3R5bGU6
OmNsb25lUHRyKCpzdHlsZSkpCi0gICAgICAgICAgICAsIHBhcmVudFJlbmRlclN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqcGFyZW50U3R5bGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBBc3NpZ24gcmF0aGVyIHRoYW4gY29weS1jb25zdHJ1Y3Qgc28gd2Ugb25seSBhbGxvY2F0ZSBh
cyBtdWNoIHZlY3RvciBjYXBhY2l0eSBhcyBuZWVkZWQuCi0gICAgICAgICAgICB1c2VyQWdlbnRE
ZWNsYXJhdGlvbnMgPSBtYXRjaFJlc3VsdC51c2VyQWdlbnREZWNsYXJhdGlvbnM7Ci0gICAgICAg
ICAgICB1c2VyRGVjbGFyYXRpb25zID0gbWF0Y2hSZXN1bHQudXNlckRlY2xhcmF0aW9uczsKLSAg
ICAgICAgICAgIGF1dGhvckRlY2xhcmF0aW9ucyA9IG1hdGNoUmVzdWx0LmF1dGhvckRlY2xhcmF0
aW9uczsKLSAgICAgICAgfQotICAgICAgICBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSgpID0g
ZGVmYXVsdDsKLSAgICB9OwotICAgIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtKiBm
aW5kRnJvbU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hS
ZXN1bHQmKTsKLSAgICB2b2lkIGFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5k
ZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgdW5zaWduZWQgaGFzaCwg
Y29uc3QgTWF0Y2hSZXN1bHQmKTsKLQotICAgIC8vIEV2ZXJ5IE4gYWRkaXRpb25zIHRvIHRoZSBt
YXRjaGVkIGRlY2xhcmF0aW9uIGNhY2hlIHRyaWdnZXIgYSBzd2VlcCB3aGVyZSBlbnRyaWVzIGhv
bGRpbmcKLSAgICAvLyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYSBzdHlsZSBkZWNsYXJhdGlvbiBh
cmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCi0gICAgdm9pZCBzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGUoKTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgTWF0Y2hlZFByb3BlcnRpZXND
YWNoZUl0ZW0+IE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGU7Ci0gICAgTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGU7Ci0KLSAgICBUaW1lciBtX21hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGVTd2VlcFRpbWVyOwotCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBtX21lZGlh
UXVlcnlFdmFsdWF0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX3Jvb3RE
ZWZhdWx0U3R5bGU7CiAKQEAgLTMwMiw3ICsyNjgsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUg
bV9zdGF0ZTsKIAotICAgIHVuc2lnbmVkIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFkZGl0aW9u
c1NpbmNlTGFzdFN3ZWVwIHsgMCB9OworICAgIFN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU7CiAKICAgICBib29sIG1fbWF0Y2hBdXRob3JB
bmRVc2VyU3R5bGVzIHsgdHJ1ZSB9OwogICAgIC8vIFNlZSBpZiB3ZSBzdGlsbCBoYXZlIGNyYXNo
ZXMgd2hlcmUgU3R5bGVSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAxZTA3YzQ5MzlkZi4uYzllNThiYmE4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMjI5MCw3ICsyMjkwLDcgQEAgdm9pZCBEb2N1bWVudDo6Zm9udHNOZWVkVXBk
YXRlKEZvbnRTZWxlY3RvciYpCiB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZUFuZEZvcmNlU3R5bGVSZWNhbGMoKQogewogICAgIGlmIChhdXRvKiByZXNvbHZl
ciA9IHN0eWxlU2NvcGUoKS5yZXNvbHZlcklmRXhpc3RzKCkpCi0gICAgICAgIHJlc29sdmVyLT5p
bnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOworICAgICAgICByZXNvbHZlci0+aW52
YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwogICAgIGlmIChiYWNrRm9yd2FyZENh
Y2hlU3RhdGUoKSAhPSBOb3RJbkJhY2tGb3J3YXJkQ2FjaGUgfHwgIXJlbmRlclZpZXcoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwpAQCAtMzk2Miw3
ICszOTYyLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKCkK
ICAgICBpZiAoIWhhc1N0eWxlV2l0aFZpZXdwb3J0VW5pdHMoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc3R5bGVTY29wZSgpLnJlc29sdmVyKCkuY2xlYXJDYWNoZWRQcm9wZXJ0aWVzQWZmZWN0
ZWRCeVZpZXdwb3J0VW5pdHMoKTsKKyAgICBzdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5jbGVhckNh
Y2hlZERlY2xhcmF0aW9uc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKCk7CiAKICAgICAvLyBGSVhN
RTogSWRlYWxseSwgd2Ugc2hvdWxkIHNhdmUgdGhlIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBoYXZl
IHZpZXdwb3J0IHVuaXRzIGFuZCBvbmx5IGl0ZXJhdGUgb3ZlciB0aG9zZS4KICAgICBmb3IgKEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290Tm9kZSgp
KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1
ZG8oKmVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzMzU1ZDNkOTY3YS4uNmM4ZTcw
NWY4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgUGFnZTo6
dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKQogewogICAgIGZvckVhY2hEb2N1
bWVudChbXShEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXJJZkV4aXN0cygp
KQotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUoKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVj
bGFyYXRpb25zQ2FjaGUoKTsKICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1
aWxkKCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0
RW52aXJvbm1lbnQoKTsKICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hlZERlY2xhcmF0
aW9uc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL01hdGNoZWREZWNsYXJhdGlvbnND
YWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYzOWQwNGNl
NjliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hlZERlY2xh
cmF0aW9uc0NhY2hlLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJp
Z2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIFN0eWxlIHsKKworTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpNYXRjaGVkRGVj
bGFyYXRpb25zQ2FjaGUoKQorICAgIDogbV9zd2VlcFRpbWVyKCp0aGlzLCAmTWF0Y2hlZERlY2xh
cmF0aW9uc0NhY2hlOjpzd2VlcCkKK3sKK30KKworTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjp+
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKCkgPSBkZWZhdWx0OworCitib29sIE1hdGNoZWREZWNs
YXJhdGlvbnNDYWNoZTo6aXNDYWNoZWFibGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCit7Cisg
ICAgLy8gRklYTUU6IFdyaXRpbmcgbW9kZSBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMgbW9kaWZ5
IHN0YXRlIHdoZW4gYXBwbHlpbmcgdG8gZG9jdW1lbnQgZWxlbWVudCBieSBjYWxsaW5nCisgICAg
Ly8gRG9jdW1lbnQ6OnNldFdyaXRpbmdNb2RlL0RpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50
LiBXZSBjYW4ndCBza2lwIHRoZSBhcHBseWluZyBieSBjYWNoaW5nLgorICAgIGlmICgmZWxlbWVu
dCA9PSBlbGVtZW50LmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAvLyBjb250ZW50OmF0dHIoKSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBlbGVt
ZW50IGl0IGlzIGJlaW5nIGFwcGxpZWQgdG8uCisgICAgaWYgKHN0eWxlLmhhc0F0dHJDb250ZW50
KCkgfHwgKHN0eWxlLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lICYmIHBhcmVudFN0eWxl
Lmhhc0F0dHJDb250ZW50KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0eWxl
Lmhhc0FwcGVhcmFuY2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzdHlsZS56
b29tKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoc3R5bGUud3JpdGluZ01vZGUoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFdy
aXRpbmdNb2RlKCkgfHwgc3R5bGUuZGlyZWN0aW9uKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxE
aXJlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFRoZSBjYWNoZSBhc3N1
bWVzIHN0YXRpYyBrbm93bGVkZ2UgYWJvdXQgd2hpY2ggcHJvcGVydGllcyBhcmUgaW5oZXJpdGVk
LgorICAgIGlmIChzdHlsZS5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgTWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpjb21wdXRlSGFzaChjb25zdCBNYXRjaFJlc3VsdCYgbWF0
Y2hSZXN1bHQpCit7CisgICAgaWYgKCFtYXRjaFJlc3VsdC5pc0NhY2hlYWJsZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KG1hdGNoUmVz
dWx0LnVzZXJBZ2VudERlY2xhcmF0aW9ucy5kYXRhKCksIHNpemVvZihNYXRjaGVkUHJvcGVydGll
cykgKiBtYXRjaFJlc3VsdC51c2VyQWdlbnREZWNsYXJhdGlvbnMuc2l6ZSgpKQorICAgICAgICBe
IFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShtYXRjaFJlc3VsdC51c2VyRGVjbGFyYXRpb25zLmRh
dGEoKSwgc2l6ZW9mKE1hdGNoZWRQcm9wZXJ0aWVzKSAqIG1hdGNoUmVzdWx0LnVzZXJEZWNsYXJh
dGlvbnMuc2l6ZSgpKQorICAgICAgICBeIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShtYXRjaFJl
c3VsdC5hdXRob3JEZWNsYXJhdGlvbnMuZGF0YSgpLCBzaXplb2YoTWF0Y2hlZFByb3BlcnRpZXMp
ICogbWF0Y2hSZXN1bHQuYXV0aG9yRGVjbGFyYXRpb25zLnNpemUoKSk7Cit9CisKK2NvbnN0IE1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6RW50cnkqIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6
ZmluZCh1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCit7Cisg
ICAgaWYgKCFoYXNoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaXQgPSBt
X2VudHJpZXMuZmluZChoYXNoKTsKKyAgICBpZiAoaXQgPT0gbV9lbnRyaWVzLmVuZCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGVudHJ5ID0gaXQtPnZhbHVlOworICAg
IGlmIChtYXRjaFJlc3VsdCAhPSBlbnRyeS5tYXRjaFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gJmVudHJ5OworfQorCit2b2lkIE1hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZTo6YWRkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1
bHQpCit7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGFkZGl0aW9uc0JldHdlZW5Td2VlcHMgPSAx
MDA7CisgICAgaWYgKCsrbV9hZGRpdGlvbnNTaW5jZUxhc3RTd2VlcCA+PSBhZGRpdGlvbnNCZXR3
ZWVuU3dlZXBzICYmICFtX3N3ZWVwVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBjb25zdGV4
cHIgYXV0byBzd2VlcERlbGF5ID0gMV9taW47CisgICAgICAgIG1fc3dlZXBUaW1lci5zdGFydE9u
ZVNob3Qoc3dlZXBEZWxheSk7CisgICAgfQorCisgICAgQVNTRVJUKGhhc2gpOworICAgIC8vIE5v
dGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2Uu
IEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgorICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0
aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFu
ZCBuZXZlciB1c2VkIGFzLWlzLgorICAgIG1fZW50cmllcy5hZGQoaGFzaCwgRW50cnkgeyBtYXRj
aFJlc3VsdCwgUmVuZGVyU3R5bGU6OmNsb25lUHRyKHN0eWxlKSwgUmVuZGVyU3R5bGU6OmNsb25l
UHRyKHBhcmVudFN0eWxlKSB9KTsKK30KKwordm9pZCBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6
OmludmFsaWRhdGUoKQoreworICAgIG1fZW50cmllcy5jbGVhcigpOworfQorCit2b2lkIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZTo6Y2xlYXJFbnRyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMo
KQoreworICAgIG1fZW50cmllcy5yZW1vdmVJZihbXShhdXRvJiBrZXlWYWx1ZSkgeworICAgICAg
ICByZXR1cm4ga2V5VmFsdWUudmFsdWUucmVuZGVyU3R5bGUtPmhhc1ZpZXdwb3J0VW5pdHMoKTsK
KyAgICB9KTsKK30KKwordm9pZCBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OnN3ZWVwKCkKK3sK
KyAgICAvLyBMb29rIGZvciBjYWNoZSBlbnRyaWVzIGNvbnRhaW5pbmcgYSBzdHlsZSBkZWNsYXJh
dGlvbiB3aXRoIGEgc2luZ2xlIHJlZiBhbmQgcmVtb3ZlIHRoZW0uCisgICAgLy8gVGhpcyBtYXkg
aGFwcGVuIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgbXV0YXRpb24gY2F1c2VzIGl0IHRvIGdl
bmVyYXRlIGEgbmV3IGlubGluZVN0eWxlKCkKKyAgICAvLyBvciBwcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZSgpLCBwb3RlbnRpYWxseSBsZWF2aW5nIHRoaXMgY2FjaGUgd2l0aCB0aGUgbGFzdCBy
ZWYgb24gdGhlIG9sZCBvbmUuCisgICAgYXV0byBoYXNPbmVSZWYgPSBbXShhdXRvJiBkZWNsYXJh
dGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBtYXRjaGVkUHJvcGVydGllcyA6IGRlY2xhcmF0
aW9ucykgeworICAgICAgICAgICAgaWYgKG1hdGNoZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMtPmhh
c09uZVJlZigpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgbV9lbnRyaWVzLnJlbW92ZUlmKFsmXShh
dXRvJiBrZXlWYWx1ZSkgeworICAgICAgICBhdXRvJiBtYXRjaFJlc3VsdCA9IGtleVZhbHVlLnZh
bHVlLm1hdGNoUmVzdWx0OworICAgICAgICByZXR1cm4gaGFzT25lUmVmKG1hdGNoUmVzdWx0LnVz
ZXJBZ2VudERlY2xhcmF0aW9ucykgfHwgaGFzT25lUmVmKG1hdGNoUmVzdWx0LnVzZXJEZWNsYXJh
dGlvbnMpIHx8IGhhc09uZVJlZihtYXRjaFJlc3VsdC5hdXRob3JEZWNsYXJhdGlvbnMpOworICAg
IH0pOworCisgICAgbV9hZGRpdGlvbnNTaW5jZUxhc3RTd2VlcCA9IDA7Cit9CisKK30KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM2NWZhMDFmNjJjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1
ZGUgIlRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFN0eWxlIHsK
KworY2xhc3MgTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKKyAgICB+
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJs
ZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUpOworICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBNYXRj
aFJlc3VsdCYpOworCisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgTWF0Y2hSZXN1bHQgbWF0
Y2hSZXN1bHQ7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4gcmVu
ZGVyU3R5bGU7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4gcGFy
ZW50UmVuZGVyU3R5bGU7CisgICAgfTsKKworICAgIGNvbnN0IEVudHJ5KiBmaW5kKHVuc2lnbmVk
IGhhc2gsIGNvbnN0IE1hdGNoUmVzdWx0Jik7CisgICAgdm9pZCBhZGQoY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIHVuc2lnbmVkIGhhc2gsIGNvbnN0
IE1hdGNoUmVzdWx0Jik7CisKKyAgICAvLyBFdmVyeSBOIGFkZGl0aW9ucyB0byB0aGUgbWF0Y2hl
ZCBkZWNsYXJhdGlvbiBjYWNoZSB0cmlnZ2VyIGEgc3dlZXAgd2hlcmUgZW50cmllcyBob2xkaW5n
CisgICAgLy8gdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGEgc3R5bGUgZGVjbGFyYXRpb24gYXJlIGdh
cmJhZ2UgY29sbGVjdGVkLgorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZvaWQgY2xlYXJF
bnRyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN3
ZWVwKCk7CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBFbnRyeT4gbV9lbnRyaWVzOworICAgIFRp
bWVyIG1fc3dlZXBUaW1lcjsKKyAgICB1bnNpZ25lZCBtX2FkZGl0aW9uc1NpbmNlTGFzdFN3ZWVw
IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwCmluZGV4IGJiZWZmODdkMGRjLi40NGVmOTQzZjJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIEVsZW1lbnRV
cGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgaWYgKHVwZGF0ZS5jaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgZXhpc3RpbmdTdHlsZSAmJiBl
eGlzdGluZ1N0eWxlLT5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAhPSB1cGRhdGUuc3R5bGUtPmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyAicmVtIiB1bml0cyBhcmUg
cmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IGVsZW1lbnQncyBmb250IHNpemUgc28gd2UgbmVlZCB0
byByZWNvbXB1dGUgZXZlcnl0aGluZy4KICAgICAgICAgICAgIC8vIEluIHByYWN0aWNlIHRoaXMg
aXMgcmFyZS4KLSAgICAgICAgICAgIHNjb3BlKCkuc3R5bGVSZXNvbHZlci5pbnZhbGlkYXRlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSgpOworICAgICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29sdmVy
LmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKICAgICAgICAgICAgIGRlc2Nl
bmRhbnRzVG9SZXNvbHZlID0gRGVzY2VuZGFudHNUb1Jlc29sdmU6OkFsbDsKICAgICAgICAgfQog
ICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>