<?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>148406</bug_id>
          
          <creation_ts>2015-08-24 16:37:23 -0700</creation_ts>
          <short_desc>Rename VisitedLinkProvider to VisitedLinkStore</short_desc>
          <delta_ts>2015-08-24 16:51:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mkwst</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120451</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-24 16:37:23 -0700</bug_when>
    <thetext>Rename VisitedLinkProvider to VisitedLinkStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120452</commentid>
    <comment_count>1</comment_count>
      <attachid>259792</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-24 16:38:54 -0700</bug_when>
    <thetext>Created attachment 259792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120457</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-24 16:42:03 -0700</bug_when>
    <thetext>Attachment 259792 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120465</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-24 16:51:17 -0700</bug_when>
    <thetext>Committed r188895: &lt;http://trac.webkit.org/changeset/188895&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259792</attachid>
            <date>2015-08-24 16:38:54 -0700</date>
            <delta_ts>2015-08-24 16:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148406-20150824163846.patch</filename>
            <type>text/plain</type>
            <size>63987</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWUyNzczNTg5ZWQ1MmY1
YWIzMDdhYjQzNGE1MTE0NTgzYzlkNGQ4ZC4uNTUzYjdhZTYyMTdiM2YyNGQwMGNiNjJlMmY5ZDE3
Njk3YTFkODhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkyIEBACiAyMDE1LTA4LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIFZpc2l0
ZWRMaW5rUHJvdmlkZXIgdG8gVmlzaXRlZExpbmtTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2
aXNpdGVkTGlua1N0b3JlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZp
c2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dmlzaXRl
ZExpbmtQcm92aWRlcik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpzZXRWaXNpdGVkTGlua1Byb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRBZGRWaXNpdGVkTGluayk6CisgICAgICAg
IChXS0NvbnRleHRDbGVhclZpc2l0ZWRMaW5rcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tWaXNpdGVk
TGlua1N0b3JlLm1tOgorICAgICAgICAoLVtfV0tWaXNpdGVkTGlua1N0b3JlIGluaXRdKToKKyAg
ICAgICAgKC1bX1dLVmlzaXRlZExpbmtTdG9yZSBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS1Zp
c2l0ZWRMaW5rU3RvcmUgYWRkVmlzaXRlZExpbmtXaXRoVVJMOl0pOgorICAgICAgICAoLVtfV0tW
aXNpdGVkTGlua1N0b3JlIHJlbW92ZUFsbF0pOgorICAgICAgICAoLVtfV0tWaXNpdGVkTGlua1N0
b3JlIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmdlbmVyYXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRM
aW5rUHJvdmlkZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRM
aW5rUHJvdmlkZXI6On5WaXNpdGVkTGlua1Byb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6VmlzaXRlZExpbmtQcm92aWRlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OmFkZFByb2Nlc3MpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjpyZW1vdmVQcm9jZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6YWRkVmlz
aXRlZExpbmtIYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92
aWRlcjo6cmVtb3ZlQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQ
cm92aWRlcjo6d2ViUHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OndlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjphZGRW
aXNpdGVkTGlua0hhc2hGcm9tUGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om5leHRQ
b3dlck9mMik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRhYmxlU2l6ZUZvcktleUNvdW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6cGVuZGlu
Z1Zpc2l0ZWRMaW5rc1RpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1Byb3ZpZGVyOjpyZXNpemVUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnNlbmRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpnZW5l
cmF0ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjp+VmlzaXRlZExpbmtTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU6OlZpc2l0ZWRMaW5rU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjphZGRQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaCk6CisgICAgICAgIChX
ZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbCk6CisgICAgICAgIChXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmU6OndlYlByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJv
bVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpuZXh0UG93ZXJPZjIpOgorICAgICAgICAoV2ViS2l0
Ojp0YWJsZVNpemVGb3JLZXlDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rU3Rv
cmU6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlz
aXRlZExpbmtTdG9yZTo6cmVzaXplVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlu
a1N0b3JlOjpzZW5kVGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3Jl
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92
aWRlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlk
ZXIubWVzc2FnZXMuaW4uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2h1
dERvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5r
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lWaXNp
dGVkTGlua1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNp
dGVkTGlua1Byb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpkaWREZXN0cm95VmlzaXRlZExpbmtQcm92aWRlcik6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcjo6YWRkVmlzaXRlZExpbmspOgorCisyMDE1LTA4LTI0ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgUmVuYW1lIF9XS1Zpc2l0ZWRMaW5r
UHJvdmlkZXIgdG8gX1dLVmlzaXRlZExpbmtTdG9yZSBmb3IgY29uc2lzdGVuY3kKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM5OAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1ZTU0MzM3YmZmMzM2OTk0ZjNhMGU4YWUzNjcwOGUz
MjA0ZGE4NjRiLi5hOTkyYTU2OGUwNTliZTBhMzU1YTA1ZmIxM2Y4Y2JjYTQ0ZTE2MTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEwMyw3ICsxMDMsNyBAQCBNRVNTQUdFX1JF
Q0VJVkVSUyA9IFwKICAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAogICAgIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IgXAogICAgIFZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKLSAgICBWaXNp
dGVkTGlua1Byb3ZpZGVyIFwKKyAgICBWaXNpdGVkTGlua1N0b3JlIFwKICAgICBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlciBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCiAgICAgV2ViQ29va2llTWFu
YWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCAwYTA5ZjQ1NTlm
M2MyNTlkNDFhODk3MWQ3NGRhZTAxYmQ4YmU0YmU1Li42M2JlNTA0OGYwMWU5YjM0Y2UwY2IzMTJl
NmU0OGFjMzg4YWI4ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAg
LTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LAogICAgICAgICBWaWJyYXRpb24sCiAgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcywKLSAg
ICAgICAgVmlzaXRlZExpbmtQcm92aWRlciwKKyAgICAgICAgVmlzaXRlZExpbmtTdG9yZSwKICAg
ICAgICAgV2Vic2l0ZURhdGFSZWNvcmQsCiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUsCiAgICAg
ICAgIFdpbmRvd0ZlYXR1cmVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW0KaW5kZXggN2IyNTM5MGM5YmNkNjljZWZmMjQyMzU3NTBlNmJkYzBmM2RiY2RlNi4uYzU1Zjk5
M2NhYmM3YjFlZWFkNzZhM2FlY2VkMTMyMWYyYjFiMGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCogT2JqZWN0Ojpu
ZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtXS1Vz
ZXJTY3JpcHQgYWxsb2NdOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgVHlwZTo6VmlzaXRl
ZExpbmtQcm92aWRlcjoKKyAgICBjYXNlIFR5cGU6OlZpc2l0ZWRMaW5rU3RvcmU6CiAgICAgICAg
IHdyYXBwZXIgPSBbX1dLVmlzaXRlZExpbmtTdG9yZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IDhhZjY0YTgzZTZiNDQxYzQ3ODhhOTU2MWFlNDdmN2RlMzU0NzUwZDYu
LmYyZmMzYjgwMThkMjIyMTYwMWZlYmE0YTA2MDJiODczZTU3NjIyZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBA
IC02MCw3ICs2MCw3IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246
OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fcHJlZmVyZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVu
Y2VzOwogICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZh
bHVlczsKICAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0gdGhpcy0+bV9yZWxhdGVkUGFnZTsKLSAg
ICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisgICAgY29weS0+bV92aXNpdGVkTGlua1N0b3JlID0gdGhpcy0+bV92aXNpdGVkTGlua1N0
b3JlOwogICAgIGNvcHktPm1fd2Vic2l0ZURhdGFTdG9yZSA9IHRoaXMtPm1fd2Vic2l0ZURhdGFT
dG9yZTsKICAgICBjb3B5LT5tX3Nlc3Npb25JRCA9IHRoaXMtPm1fc2Vzc2lvbklEOwogICAgIGNv
cHktPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgPSB0aGlzLT5tX3Ry
ZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOwpAQCAtMTIzLDE0ICsxMjMsMTQg
QEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0UmVsYXRlZFBhZ2UoV2ViUGFnZVByb3h5KiBy
ZWxhdGVkUGFnZSkKIH0KIAogCi1WaXNpdGVkTGlua1Byb3ZpZGVyKiBQYWdlQ29uZmlndXJhdGlv
bjo6dmlzaXRlZExpbmtQcm92aWRlcigpCitWaXNpdGVkTGlua1N0b3JlKiBQYWdlQ29uZmlndXJh
dGlvbjo6dmlzaXRlZExpbmtTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIG1fdmlzaXRlZExpbmtQcm92
aWRlci5nZXQoKTsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOwogfQogCi12
b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRWaXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIpCit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpz
ZXRWaXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUpCiB7
Ci0gICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyID0gdmlzaXRlZExpbmtQcm92aWRlcjsKKyAgICBt
X3Zpc2l0ZWRMaW5rU3RvcmUgPSB2aXNpdGVkTGlua1N0b3JlOwogfQogCiBBUEk6OldlYnNpdGVE
YXRhU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3JlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCAzZjRlNTc5ZTVhOGE5M2I1YzUwYzFkYWEwNjhhZDhkMzkyNDI3NWFkLi41YzYyNTMyYTg0Njcx
NWI5ZWIxMzJmYzRlNDY5NDM4NDUxOTExMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFZpc2l0
ZWRMaW5rUHJvdmlkZXI7CitjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViUGFnZUdy
b3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CkBAIC03Myw4
ICs3Myw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2Uo
KTsKICAgICB2b2lkIHNldFJlbGF0ZWRQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKLSAg
ICBXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIoKTsKLSAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoV2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVy
Kik7CisgICAgV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKiB2aXNpdGVkTGlua1N0b3JlKCk7Cisg
ICAgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3JlKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSopOwog
CiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOwogICAgIHZvaWQgc2V0
V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKik7CkBAIC05OCw3ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7
CiAgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCBtX3ByZWZlcmVuY2VW
YWx1ZXM7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3JlbGF0ZWRQYWdlOwot
ICAgIFJlZlB0cjxXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI+IG1fdmlzaXRlZExpbmtQcm92
aWRlcjsKKyAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5r
U3RvcmU7CiAKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3Jl
OwogICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElE
IHNlcGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBz
ZXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApp
bmRleCA4MmI0MDY0ZDZlZGI0MTMyYzg5MTg3NmQ4MjY4Y2E5MGEwMGMxOGQ1Li43MDI1MzEzNDQ5
MWY4YTY4MTA2MTlkMTdiZWFjNzZiMTg4OWQ0NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMzExLDEyICszMTEsMTIgQEAgdm9pZCBXS0Nv
bnRleHRBZGRWaXNpdGVkTGluayhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYg
dmlzaXRlZFVSTCkKICAgICBpZiAodmlzaXRlZFVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+dmlzaXRlZExpbmtQcm92aWRlcigp
LmFkZFZpc2l0ZWRMaW5rSGFzaCh2aXNpdGVkTGlua0hhc2godmlzaXRlZFVSTFN0cmluZykpOwor
ICAgIHRvSW1wbChjb250ZXh0UmVmKS0+dmlzaXRlZExpbmtTdG9yZSgpLmFkZFZpc2l0ZWRMaW5r
SGFzaCh2aXNpdGVkTGlua0hhc2godmlzaXRlZFVSTFN0cmluZykpOwogfQogCiB2b2lkIFdLQ29u
dGV4dENsZWFyVmlzaXRlZExpbmtzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewotICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+dmlzaXRlZExpbmtQcm92aWRlcigpLnJlbW92ZUFsbCgpOworICAg
IHRvSW1wbChjb250ZXh0UmVmKS0+dmlzaXRlZExpbmtTdG9yZSgpLnJlbW92ZUFsbCgpOwogfQog
CiB2b2lkIFdLQ29udGV4dFNldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwNTAxYmNhMzZiMTIxMTFmYTJmOWI1OTQ5NjVmMTIy
NDk1ZDVjNGU0Li4wMDAzYjJhZGEwOGUzZmQ0NzM1ZTBhYzUwOGJmYmE3YjYxNGFhYzliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1l
ZGlhUGxheWJhY2soKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2Uo
cmVsYXRlZFdlYlZpZXctPl9wYWdlLmdldCgpKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5nZXQoKSk7Ci0gICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19jb25maWd1cmF0aW9uIF92aXNpdGVk
TGlua1N0b3JlXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRWaXNpdGVkTGlua1N0b3JlKFtfY29uZmlndXJhdGlvbiBfdmlzaXRlZExpbmtT
dG9yZV0tPl92aXNpdGVkTGlua1N0b3JlLmdldCgpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2Vic2l0ZURhdGFTdG9yZShbX2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0tPl93
ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRz
U0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNT
SEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRMaW5rU3RvcmUubW0KaW5k
ZXggZjFmYjNmMTVmYmI0NTg1YTUwZTlmNDU5MTY5NzU2MzVkNmZmMTg4Yy4uYzU2ZjAyYzBlODZi
ZTE4MDhiMWFiMDNlMWZlZDc5NDU3Yjg0ZWQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tWaXNpdGVkTGlua1N0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZS5tbQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCAiVmlzaXRlZExpbmtQ
cm92aWRlci5oIgorI2ltcG9ydCAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9MaW5rSGFzaC5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLVmlzaXRlZExpbmtTdG9yZQpAQCAt
MzgsMTQgKzM4LDE0IEBACiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktp
dDo6VmlzaXRlZExpbmtQcm92aWRlcj4oc2VsZik7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU+KHNlbGYpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF92aXNpdGVkTGlua1Byb3ZpZGVy
LT5+VmlzaXRlZExpbmtQcm92aWRlcigpOworICAgIF92aXNpdGVkTGlua1N0b3JlLT5+VmlzaXRl
ZExpbmtTdG9yZSgpOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNTQsMTkgKzU0LDE5
IEBACiB7CiAgICAgYXV0byBsaW5rSGFzaCA9IFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaChVUkwu
YWJzb2x1dGVTdHJpbmcpOwogCi0gICAgX3Zpc2l0ZWRMaW5rUHJvdmlkZXItPmFkZFZpc2l0ZWRM
aW5rSGFzaChsaW5rSGFzaCk7CisgICAgX3Zpc2l0ZWRMaW5rU3RvcmUtPmFkZFZpc2l0ZWRMaW5r
SGFzaChsaW5rSGFzaCk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlQWxsCiB7Ci0gICAgX3Zpc2l0ZWRM
aW5rUHJvdmlkZXItPnJlbW92ZUFsbCgpOworICAgIF92aXNpdGVkTGlua1N0b3JlLT5yZW1vdmVB
bGwoKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9u
CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfdmlzaXRlZExp
bmtQcm92aWRlcjsKKyAgICByZXR1cm4gKl92aXNpdGVkTGlua1N0b3JlOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zpc2l0ZWRM
aW5rU3RvcmVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaAppbmRleCA2NjlhMzI4NzRkMDg2Mzg4MWVlNWI3
NWNkZmZhMmZmZTdmZmVhNzUzLi5iMGVlYTQwYjJjYWM5MmZlZmM2ODEyY2E3YjU2OTMwZjJlNmEw
NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Zp
c2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgKQEAgLTI3LDIyICsyNywyMiBA
QAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCAiVmlzaXRlZExpbmtQcm92aWRlci5o
IgorI2ltcG9ydCAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWlubGluZSBfV0tWaXNpdGVkTGlua1N0b3JlICp3cmFwcGVy
KFZpc2l0ZWRMaW5rUHJvdmlkZXImIHZpc2l0ZWRMaW5rUHJvdmlkZXIpCitpbmxpbmUgX1dLVmlz
aXRlZExpbmtTdG9yZSAqd3JhcHBlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3Jl
KQogewotICAgIEFTU0VSVChbdmlzaXRlZExpbmtQcm92aWRlci53cmFwcGVyKCkgaXNLaW5kT2ZD
bGFzczpbX1dLVmlzaXRlZExpbmtTdG9yZSBjbGFzc11dKTsKLSAgICByZXR1cm4gKF9XS1Zpc2l0
ZWRMaW5rU3RvcmUgKil2aXNpdGVkTGlua1Byb3ZpZGVyLndyYXBwZXIoKTsKKyAgICBBU1NFUlQo
W3Zpc2l0ZWRMaW5rU3RvcmUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS1Zpc2l0ZWRMaW5r
U3RvcmUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRl
ZExpbmtTdG9yZS53cmFwcGVyKCk7CiB9CiAKIH0KIAogQGludGVyZmFjZSBfV0tWaXNpdGVkTGlu
a1N0b3JlICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBfdmlzaXRlZExpbmtQcm92aWRlcjsKKyAgICBB
UEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBfdmlzaXRlZExpbmtT
dG9yZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rUHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmFhNjhiMTI2
ODliNmU0Y2YxYzlkNzkxNGYxNjRkZGFkYTBmZDY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1Byb3ZpZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZpc2l0ZWRMaW5rUHJvdmlkZXIuaCIK
LQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2luY2x1ZGUgIlZpc2l0ZWRMaW5rUHJvdmlk
ZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKLSNpbmNsdWRlICJW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1zdGF0aWMgY29uc3QgaW50IHZpc2l0ZWRMaW5rVGFibGVNYXhMb2FkID0gMjsK
LQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXI7Ci0KLSAgICByZXR1cm4gKytpZGVudGlmaWVyOwotfQotCi1SZWY8
VmlzaXRlZExpbmtQcm92aWRlcj4gVmlzaXRlZExpbmtQcm92aWRlcjo6Y3JlYXRlKCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaXNpdGVkTGlua1Byb3ZpZGVyKTsKLX0KLQotVmlzaXRl
ZExpbmtQcm92aWRlcjo6flZpc2l0ZWRMaW5rUHJvdmlkZXIoKQotewotICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1Byb3ZpZGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7Ci0gICAgICAgIHByb2Nlc3MtPmRpZERlc3Ry
b3lWaXNpdGVkTGlua1Byb3ZpZGVyKCp0aGlzKTsKLSAgICB9Ci19Ci0KLVZpc2l0ZWRMaW5rUHJv
dmlkZXI6OlZpc2l0ZWRMaW5rUHJvdmlkZXIoKQotICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRl
SWRlbnRpZmllcigpKQotICAgICwgbV9rZXlDb3VudCgwKQotICAgICwgbV90YWJsZVNpemUoMCkK
LSAgICAsIG1fcGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKQotewot
fQotCi12b2lkIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQotewotICAgIEFTU0VSVChwcm9jZXNzLnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1By
b3h5OjpTdGF0ZTo6UnVubmluZyk7Ci0KLSAgICBpZiAoIW1fcHJvY2Vzc2VzLmFkZCgmcHJvY2Vz
cykuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzcy5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7Ci0KLSAgICBpZiAoIW1fa2V5Q291bnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3RhYmxlLnNoYXJlZE1lbW9yeSgpKTsKLQotICAg
IHNlbmRUYWJsZShwcm9jZXNzKTsKLX0KLQotdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjpyZW1v
dmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKLXsKLSAgICBBU1NFUlQobV9wcm9j
ZXNzZXMuY29udGFpbnMoJnByb2Nlc3MpKTsKLQotICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJv
Y2Vzcyk7Ci0gICAgcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpc2l0
ZWRMaW5rUHJvdmlkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKLX0K
LQotdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjphZGRWaXNpdGVkTGlua0hhc2goTGlua0hhc2gg
bGlua0hhc2gpCi17Ci0gICAgbV9wZW5kaW5nVmlzaXRlZExpbmtzLmFkZChsaW5rSGFzaCk7Ci0K
LSAgICBpZiAoIW1fcGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAg
IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBW
aXNpdGVkTGlua1Byb3ZpZGVyOjpyZW1vdmVBbGwoKQotewotICAgIG1fcGVuZGluZ1Zpc2l0ZWRM
aW5rc1RpbWVyLnN0b3AoKTsKLSAgICBtX3BlbmRpbmdWaXNpdGVkTGlua3MuY2xlYXIoKTsKLSAg
ICBtX2tleUNvdW50ID0gMDsKLSAgICBtX3RhYmxlU2l6ZSA9IDA7Ci0gICAgbV90YWJsZS5jbGVh
cigpOwotCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nlcykg
ewotICAgICAgICBBU1NFUlQocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzZXMoKS5jb250
YWlucyhwcm9jZXNzKSk7Ci0gICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlJlbW92ZUFsbFZpc2l0ZWRMaW5rcygp
LCBtX2lkZW50aWZpZXIpOwotICAgIH0KLX0KLQotdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjp3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVj
dGlvbiYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQotdm9pZCBWaXNpdGVkTGlu
a1Byb3ZpZGVyOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYs
IElQQzo6Q29ubmVjdGlvbiYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQotdm9p
ZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjphZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRf
dCBwYWdlSUQsIExpbmtIYXNoIGxpbmtIYXNoKQotewotICAgIGlmIChXZWJQYWdlUHJveHkqIHdl
YlBhZ2VQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7Ci0gICAgICAg
IGlmICghd2ViUGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYWRkVmlzaXRlZExpbmtIYXNoKGxpbmtIYXNoKTsKLX0KLQotc3Rh
dGljIHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQotewotICAgIC8vIFRha2VuIGZy
b20gaHR0cDovL3d3dy5jcy51dGsuZWR1L352b3NlL2Mtc3R1ZmYvYml0aGFja3MuaHRtbAotICAg
IC8vIERldmlzZWQgYnkgU2VhbiBBbmRlcnNvbiwgU2VwZW1iZXIgMTQsIDIwMDEKLSAgICAKLSAg
ICB2LS07Ci0gICAgdiB8PSB2ID4+IDE7Ci0gICAgdiB8PSB2ID4+IDI7Ci0gICAgdiB8PSB2ID4+
IDQ7Ci0gICAgdiB8PSB2ID4+IDg7Ci0gICAgdiB8PSB2ID4+IDE2OwotICAgIHYrKzsKLSAgICAK
LSAgICByZXR1cm4gdjsKLX0KLQotc3RhdGljIHVuc2lnbmVkIHRhYmxlU2l6ZUZvcktleUNvdW50
KHVuc2lnbmVkIGtleUNvdW50KQotewotICAgIC8vIFdlIHdhbnQgdGhlIHRhYmxlIHRvIGJlIGF0
IGxlYXN0IGhhbGYgZW1wdHkuCi0gICAgdW5zaWduZWQgdGFibGVTaXplID0gbmV4dFBvd2VyT2Yy
KGtleUNvdW50ICogdmlzaXRlZExpbmtUYWJsZU1heExvYWQpOwotCi0gICAgLy8gRW5zdXJlIHRo
YXQgdGhlIHRhYmxlIHNpemUgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgYSBwYWdlLgotICAgIHNp
emVfdCBtaW5pbXVtVGFibGVTaXplID0gU2hhcmVkTWVtb3J5OjpzeXN0ZW1QYWdlU2l6ZSgpIC8g
c2l6ZW9mKExpbmtIYXNoKTsKLSAgICBpZiAodGFibGVTaXplIDwgbWluaW11bVRhYmxlU2l6ZSkK
LSAgICAgICAgcmV0dXJuIG1pbmltdW1UYWJsZVNpemU7Ci0gICAgCi0gICAgcmV0dXJuIHRhYmxl
U2l6ZTsKLX0KLQotdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjpwZW5kaW5nVmlzaXRlZExpbmtz
VGltZXJGaXJlZCgpCi17Ci0gICAgdW5zaWduZWQgY3VycmVudFRhYmxlU2l6ZSA9IG1fdGFibGVT
aXplOwotICAgIHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSA9IHRhYmxlU2l6ZUZvcktleUNvdW50KG1f
a2V5Q291bnQgKyBtX3BlbmRpbmdWaXNpdGVkTGlua3Muc2l6ZSgpKTsKLQotICAgIG5ld1RhYmxl
U2l6ZSA9IHN0ZDo6bWF4KGN1cnJlbnRUYWJsZVNpemUsIG5ld1RhYmxlU2l6ZSk7Ci0KLSAgICBp
ZiAoY3VycmVudFRhYmxlU2l6ZSAhPSBuZXdUYWJsZVNpemUpIHsKLSAgICAgICAgcmVzaXplVGFi
bGUobmV3VGFibGVTaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxX
ZWJDb3JlOjpMaW5rSGFzaD4gYWRkZWRWaXNpdGVkTGlua3M7Ci0KLSAgICBmb3IgKGF1dG8gbGlu
a0hhc2ggOiBtX3BlbmRpbmdWaXNpdGVkTGlua3MpIHsKLSAgICAgICAgaWYgKG1fdGFibGUuYWRk
TGlua0hhc2gobGlua0hhc2gpKSB7Ci0gICAgICAgICAgICBhZGRlZFZpc2l0ZWRMaW5rcy5hcHBl
bmQobGlua0hhc2gpOwotICAgICAgICAgICAgbV9rZXlDb3VudCsrOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgbV9wZW5kaW5nVmlzaXRlZExpbmtzLmNsZWFyKCk7Ci0KLSAgICBpZiAoYWRkZWRW
aXNpdGVkTGlua3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7Ci0gICAgICAgIEFTU0VSVChwcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLQotICAg
ICAgICBpZiAoYWRkZWRWaXNpdGVkTGlua3Muc2l6ZSgpID4gMjApCi0gICAgICAgICAgICBwcm9j
ZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyOjpBbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCgpLCBtX2lkZW50aWZpZXIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZChhZGRl
ZFZpc2l0ZWRMaW5rcyksIG1faWRlbnRpZmllcik7Ci0gICAgfQotfQotCi12b2lkIFZpc2l0ZWRM
aW5rUHJvdmlkZXI6OnJlc2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSkKLXsKLSAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBuZXdUYWJsZU1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2Nh
dGUobmV3VGFibGVTaXplICogc2l6ZW9mKExpbmtIYXNoKSk7Ci0KLSAgICBpZiAoIW5ld1RhYmxl
TWVtb3J5KSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGFsbG9jYXRlIHNoYXJlZCBt
ZW1vcnkgZm9yIHZpc2l0ZWQgbGluayB0YWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbWVtc2V0KG5ld1RhYmxlTWVtb3J5LT5kYXRhKCksIDAsIG5ld1RhYmxlTWVtb3J5LT5z
aXplKCkpOwotCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3VycmVudFRhYmxlTWVtb3J5ID0g
bV90YWJsZS5zaGFyZWRNZW1vcnkoKTsKLSAgICB1bnNpZ25lZCBjdXJyZW50VGFibGVTaXplID0g
bV90YWJsZVNpemU7Ci0KLSAgICBtX3RhYmxlLnNldFNoYXJlZE1lbW9yeShuZXdUYWJsZU1lbW9y
eSk7Ci0gICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7Ci0KLSAgICBpZiAoY3VycmVudFRh
YmxlTWVtb3J5KSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY3VycmVudFRhYmxlU2l6ZSwgY3Vy
cmVudFRhYmxlTWVtb3J5LT5zaXplKCkgPT0gY3VycmVudFRhYmxlU2l6ZSAqIHNpemVvZihMaW5r
SGFzaCkpOwotCi0gICAgICAgIC8vIEdvIHRocm91Z2ggdGhlIGN1cnJlbnQgaGFzaCB0YWJsZSBh
bmQgcmUtYWRkIGFsbCBlbnRyaWVzIHRvIHRoZSBuZXcgaGFzaCB0YWJsZS4KLSAgICAgICAgY29u
c3QgTGlua0hhc2gqIGN1cnJlbnRMaW5rSGFzaGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgTGlua0hh
c2gqPihjdXJyZW50VGFibGVNZW1vcnktPmRhdGEoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjdXJyZW50VGFibGVTaXplOyArK2kpIHsKLSAgICAgICAgICAgIExpbmtIYXNo
IGxpbmtIYXNoID0gY3VycmVudExpbmtIYXNoZXNbaV07Ci0KLSAgICAgICAgICAgIGlmICghbGlu
a0hhc2gpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGJvb2wgZGlk
QWRkTGlua0hhc2ggPSBtX3RhYmxlLmFkZExpbmtIYXNoKGxpbmtIYXNoKTsKLQotICAgICAgICAg
ICAgLy8gSXQgc2hvdWxkIGFsd2F5cyBiZSBwb3NzaWJsZSB0byBhZGQgdGhlIGxpbmsgaGFzaCB0
byBhIG5ldyB0YWJsZS4KLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlkQWRkTGlua0hhc2gs
IGRpZEFkZExpbmtIYXNoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoYXV0byBsaW5r
SGFzaCA6IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcykgewotICAgICAgICBpZiAobV90YWJsZS5hZGRM
aW5rSGFzaChsaW5rSGFzaCkpCi0gICAgICAgICAgICBtX2tleUNvdW50Kys7Ci0gICAgfQotICAg
IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcy5jbGVhcigpOwotCi0gICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgc2VuZFRhYmxlKCpwcm9jZXNzKTsK
LX0KLQotdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjpzZW5kVGFibGUoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQotewotICAgIEFTU0VSVChwcm9jZXNzLnByb2Nlc3NQb29sKCkucHJvY2Vzc2Vz
KCkuY29udGFpbnMoJnByb2Nlc3MpKTsKLQotICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKLSAgICBpZiAoIW1fdGFibGUuc2hhcmVkTWVtb3J5KCktPmNyZWF0ZUhhbmRsZShoYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXI6OlNldFZpc2l0ZWRMaW5rVGFibGUoaGFuZGxlKSwgbV9pZGVudGlmaWVyKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJm
NTY2OTE4ZjAwNzJhYmIxNmU4YTgyNDc0MmZjNzI1YjQwMGMzMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlz
aXRlZExpbmtQcm92aWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgVmlzaXRlZExpbmtQcm92aWRlcl9oCi0jZGVmaW5lIFZpc2l0ZWRMaW5r
UHJvdmlkZXJfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCi0jaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5oIgotI2luY2x1ZGUgIldlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQcm9jZXNzUHJv
eHk7Ci0gICAgCi1jbGFzcyBWaXNpdGVkTGlua1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VmlzaXRlZExpbmtQcm92aWRlcj4sIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
ciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaXNpdGVkTGlua1Byb3ZpZGVyPiBjcmVhdGUo
KTsKLQotICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rUHJvdmlkZXIoKTsKLSAgICB2aXJ0dWFsIH5W
aXNpdGVkTGlua1Byb3ZpZGVyKCk7Ci0KLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIGFkZFByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5Jik7Ci0gICAgdm9pZCByZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwotCi0g
ICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwotICAgIHZvaWQg
cmVtb3ZlQWxsKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAgLy8gV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgd2ViUHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBh
Z2UodWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpMaW5rSGFzaCk7Ci0KLSAgICB2b2lkIHBlbmRp
bmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKCk7Ci0KLSAgICB2b2lkIHJlc2l6ZVRhYmxlKHVuc2ln
bmVkIG5ld1RhYmxlU2l6ZSk7Ci0gICAgdm9pZCBzZW5kVGFibGUoV2ViUHJvY2Vzc1Byb3h5Jik7
Ci0KLSAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwotCi0gICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwotCi0gICAgdW5zaWduZWQgbV9rZXlDb3VudDsKLSAgICB1bnNp
Z25lZCBtX3RhYmxlU2l6ZTsKLSAgICBWaXNpdGVkTGlua1RhYmxlIG1fdGFibGU7Ci0KLSAgICBI
YXNoU2V0PFdlYkNvcmU6OkxpbmtIYXNoLCBXZWJDb3JlOjpMaW5rSGFzaEhhc2g+IG1fcGVuZGlu
Z1Zpc2l0ZWRMaW5rczsKLSAgICBSdW5Mb29wOjpUaW1lcjxWaXNpdGVkTGlua1Byb3ZpZGVyPiBt
X3BlbmRpbmdWaXNpdGVkTGlua3NUaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gVmlzaXRlZExpbmtQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLm1lc3NhZ2VzLmluCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTU2N2M5ZjYwZjFiM2Q4YzAzZjZmMmQxZjkzMGI3ZWNl
NTEwZDUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLm1lc3NhZ2VzLmluCisr
KyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0j
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBWaXNpdGVkTGlua1Byb3ZpZGVyIHsKLSAgICBBZGRW
aXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNo
KQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIwYWFhYTI4ZDljNTIxODYwOWNkNTRiODY5YzY5NTk5ZTUzOTY3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5j
cHAKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgorCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CisjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiVmlzaXRl
ZExpbmtUYWJsZS5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCBpbnQgdmlz
aXRlZExpbmtUYWJsZU1heExvYWQgPSAyOworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVu
dGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKKworICAgIHJldHVy
biArK2lkZW50aWZpZXI7Cit9CisKK1JlZjxWaXNpdGVkTGlua1N0b3JlPiBWaXNpdGVkTGlua1N0
b3JlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpc2l0ZWRMaW5rU3Rv
cmUpOworfQorCitWaXNpdGVkTGlua1N0b3JlOjp+VmlzaXRlZExpbmtTdG9yZSgpCit7CisgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBw
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rU3RvcmU6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+
ZGlkRGVzdHJveVZpc2l0ZWRMaW5rU3RvcmUoKnRoaXMpOworICAgIH0KK30KKworVmlzaXRlZExp
bmtTdG9yZTo6VmlzaXRlZExpbmtTdG9yZSgpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJ
ZGVudGlmaWVyKCkpCisgICAgLCBtX2tleUNvdW50KDApCisgICAgLCBtX3RhYmxlU2l6ZSgwKQor
ICAgICwgbV9wZW5kaW5nVmlzaXRlZExpbmtzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
VmlzaXRlZExpbmtTdG9yZTo6cGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyRmlyZWQpCit7Cit9CisK
K3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCit7CisgICAgQVNTRVJUKHByb2Nlc3Muc3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0
YXRlOjpSdW5uaW5nKTsKKworICAgIGlmICghbV9wcm9jZXNzZXMuYWRkKCZwcm9jZXNzKS5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6VmlzaXRlZExpbmtTdG9yZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lk
ZW50aWZpZXIsICp0aGlzKTsKKworICAgIGlmICghbV9rZXlDb3VudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKG1fdGFibGUuc2hhcmVkTWVtb3J5KCkpOworCisgICAgc2VuZFRhYmxl
KHByb2Nlc3MpOworfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZVByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlu
cygmcHJvY2VzcykpOworCisgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKTsKKyAgICBw
cm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlzaXRlZExpbmtTdG9yZTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFZpc2l0ZWRM
aW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5rSGFzaCkKK3sKKyAgICBt
X3BlbmRpbmdWaXNpdGVkTGlua3MuYWRkKGxpbmtIYXNoKTsKKworICAgIGlmICghbV9wZW5kaW5n
VmlzaXRlZExpbmtzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nVmlzaXRlZExp
bmtzVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJl
bW92ZUFsbCgpCit7CisgICAgbV9wZW5kaW5nVmlzaXRlZExpbmtzVGltZXIuc3RvcCgpOworICAg
IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcy5jbGVhcigpOworICAgIG1fa2V5Q291bnQgPSAwOworICAg
IG1fdGFibGVTaXplID0gMDsKKyAgICBtX3RhYmxlLmNsZWFyKCk7CisKKyAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgIEFTU0VSVChwcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICAg
ICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVmlzaXRlZExpbmtzKCksIG1faWRlbnRpZmllcik7CisgICAg
fQorfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OndlYlByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50LgorfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OndlYlByb2Nlc3NEaWRDbG9z
ZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0
ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgTGlua0hhc2ggbGlua0hhc2gpCit7
CisgICAgaWYgKFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKHBhZ2VJRCkpIHsKKyAgICAgICAgaWYgKCF3ZWJQYWdlUHJveHktPmFkZHNWaXNpdGVk
TGlua3MoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRWaXNpdGVkTGlu
a0hhc2gobGlua0hhc2gpOworfQorCitzdGF0aWMgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2ln
bmVkIHYpCit7CisgICAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2Uv
Yy1zdHVmZi9iaXRoYWNrcy5odG1sCisgICAgLy8gRGV2aXNlZCBieSBTZWFuIEFuZGVyc29uLCBT
ZXBlbWJlciAxNCwgMjAwMQorICAgIAorICAgIHYtLTsKKyAgICB2IHw9IHYgPj4gMTsKKyAgICB2
IHw9IHYgPj4gMjsKKyAgICB2IHw9IHYgPj4gNDsKKyAgICB2IHw9IHYgPj4gODsKKyAgICB2IHw9
IHYgPj4gMTY7CisgICAgdisrOworICAgIAorICAgIHJldHVybiB2OworfQorCitzdGF0aWMgdW5z
aWduZWQgdGFibGVTaXplRm9yS2V5Q291bnQodW5zaWduZWQga2V5Q291bnQpCit7CisgICAgLy8g
V2Ugd2FudCB0aGUgdGFibGUgdG8gYmUgYXQgbGVhc3QgaGFsZiBlbXB0eS4KKyAgICB1bnNpZ25l
ZCB0YWJsZVNpemUgPSBuZXh0UG93ZXJPZjIoa2V5Q291bnQgKiB2aXNpdGVkTGlua1RhYmxlTWF4
TG9hZCk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdGFibGUgc2l6ZSBpcyBhdCBsZWFzdCB0
aGUgc2l6ZSBvZiBhIHBhZ2UuCisgICAgc2l6ZV90IG1pbmltdW1UYWJsZVNpemUgPSBTaGFyZWRN
ZW1vcnk6OnN5c3RlbVBhZ2VTaXplKCkgLyBzaXplb2YoTGlua0hhc2gpOworICAgIGlmICh0YWJs
ZVNpemUgPCBtaW5pbXVtVGFibGVTaXplKQorICAgICAgICByZXR1cm4gbWluaW11bVRhYmxlU2l6
ZTsKKyAgICAKKyAgICByZXR1cm4gdGFibGVTaXplOworfQorCit2b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKCkKK3sKKyAgICB1bnNpZ25lZCBjdXJy
ZW50VGFibGVTaXplID0gbV90YWJsZVNpemU7CisgICAgdW5zaWduZWQgbmV3VGFibGVTaXplID0g
dGFibGVTaXplRm9yS2V5Q291bnQobV9rZXlDb3VudCArIG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcy5z
aXplKCkpOworCisgICAgbmV3VGFibGVTaXplID0gc3RkOjptYXgoY3VycmVudFRhYmxlU2l6ZSwg
bmV3VGFibGVTaXplKTsKKworICAgIGlmIChjdXJyZW50VGFibGVTaXplICE9IG5ld1RhYmxlU2l6
ZSkgeworICAgICAgICByZXNpemVUYWJsZShuZXdUYWJsZVNpemUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBhZGRlZFZpc2l0ZWRMaW5r
czsKKworICAgIGZvciAoYXV0byBsaW5rSGFzaCA6IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcykgewor
ICAgICAgICBpZiAobV90YWJsZS5hZGRMaW5rSGFzaChsaW5rSGFzaCkpIHsKKyAgICAgICAgICAg
IGFkZGVkVmlzaXRlZExpbmtzLmFwcGVuZChsaW5rSGFzaCk7CisgICAgICAgICAgICBtX2tleUNv
dW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3BlbmRpbmdWaXNpdGVkTGlua3MuY2xl
YXIoKTsKKworICAgIGlmIChhZGRlZFZpc2l0ZWRMaW5rcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
IHsKKyAgICAgICAgQVNTRVJUKHByb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc2VzKCkuY29u
dGFpbnMocHJvY2VzcykpOworCisgICAgICAgIGlmIChhZGRlZFZpc2l0ZWRMaW5rcy5zaXplKCkg
PiAyMCkKKyAgICAgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OkFsbFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKCks
IG1faWRlbnRpZmllcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlZpc2l0
ZWRMaW5rU3RhdGVDaGFuZ2VkKGFkZGVkVmlzaXRlZExpbmtzKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6cmVzaXplVGFibGUodW5zaWduZWQgbmV3
VGFibGVTaXplKQoreworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG5ld1RhYmxlTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShuZXdUYWJsZVNpemUgKiBzaXplb2YoTGlua0hhc2gpKTsK
KworICAgIGlmICghbmV3VGFibGVNZW1vcnkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgdmlzaXRlZCBsaW5rIHRhYmxlIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtZW1zZXQobmV3VGFibGVNZW1vcnktPmRhdGEoKSwg
MCwgbmV3VGFibGVNZW1vcnktPnNpemUoKSk7CisKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBj
dXJyZW50VGFibGVNZW1vcnkgPSBtX3RhYmxlLnNoYXJlZE1lbW9yeSgpOworICAgIHVuc2lnbmVk
IGN1cnJlbnRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKKworICAgIG1fdGFibGUuc2V0U2hhcmVk
TWVtb3J5KG5ld1RhYmxlTWVtb3J5KTsKKyAgICBtX3RhYmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsK
KworICAgIGlmIChjdXJyZW50VGFibGVNZW1vcnkpIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChj
dXJyZW50VGFibGVTaXplLCBjdXJyZW50VGFibGVNZW1vcnktPnNpemUoKSA9PSBjdXJyZW50VGFi
bGVTaXplICogc2l6ZW9mKExpbmtIYXNoKSk7CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUg
Y3VycmVudCBoYXNoIHRhYmxlIGFuZCByZS1hZGQgYWxsIGVudHJpZXMgdG8gdGhlIG5ldyBoYXNo
IHRhYmxlLgorICAgICAgICBjb25zdCBMaW5rSGFzaCogY3VycmVudExpbmtIYXNoZXMgPSBzdGF0
aWNfY2FzdDxjb25zdCBMaW5rSGFzaCo+KGN1cnJlbnRUYWJsZU1lbW9yeS0+ZGF0YSgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnJlbnRUYWJsZVNpemU7ICsraSkgewor
ICAgICAgICAgICAgTGlua0hhc2ggbGlua0hhc2ggPSBjdXJyZW50TGlua0hhc2hlc1tpXTsKKwor
ICAgICAgICAgICAgaWYgKCFsaW5rSGFzaCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgYm9vbCBkaWRBZGRMaW5rSGFzaCA9IG1fdGFibGUuYWRkTGlua0hhc2gobGlu
a0hhc2gpOworCisgICAgICAgICAgICAvLyBJdCBzaG91bGQgYWx3YXlzIGJlIHBvc3NpYmxlIHRv
IGFkZCB0aGUgbGluayBoYXNoIHRvIGEgbmV3IHRhYmxlLgorICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChkaWRBZGRMaW5rSGFzaCwgZGlkQWRkTGlua0hhc2gpOworICAgICAgICB9CisgICAgfQor
CisgICAgZm9yIChhdXRvIGxpbmtIYXNoIDogbV9wZW5kaW5nVmlzaXRlZExpbmtzKSB7CisgICAg
ICAgIGlmIChtX3RhYmxlLmFkZExpbmtIYXNoKGxpbmtIYXNoKSkKKyAgICAgICAgICAgIG1fa2V5
Q291bnQrKzsKKyAgICB9CisgICAgbV9wZW5kaW5nVmlzaXRlZExpbmtzLmNsZWFyKCk7CisKKyAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBz
ZW5kVGFibGUoKnByb2Nlc3MpOworfQorCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnNlbmRUYWJs
ZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKHByb2Nlc3MucHJvY2Vz
c1Bvb2woKS5wcm9jZXNzZXMoKS5jb250YWlucygmcHJvY2VzcykpOworCisgICAgU2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghbV90YWJsZS5zaGFyZWRNZW1vcnkoKS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHByb2Nlc3MuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6U2V0VmlzaXRlZExpbmtUYWJsZShoYW5kbGUp
LCBtX2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YTRiMmNmM2Y3
ZjAwNDY3YjliNGIyMGNmNGJmZTBlZDQwOWViODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFZpc2l0ZWRMaW5rU3RvcmVfaAorI2RlZmluZSBWaXNpdGVkTGlu
a1N0b3JlX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzTGlmZXRpbWVPYnNlcnZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OworICAgIAorY2xhc3MgVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpc2l0ZWRMaW5rU3RvcmU+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8VmlzaXRlZExpbmtTdG9yZT4gY3JlYXRlKCk7CisKKyAgICBl
eHBsaWNpdCBWaXNpdGVkTGlua1N0b3JlKCk7CisgICAgdmlydHVhbCB+VmlzaXRlZExpbmtTdG9y
ZSgpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCisgICAgdm9pZCBhZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZv
aWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKKworICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmtIYXNoKFdlYkNvcmU6OkxpbmtIYXNoKTsKKyAgICB2b2lkIHJlbW92ZUFsbCgpOworCitw
cml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKKworICAgIC8vIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyCisgICAgdmlydHVh
bCB2b2lkIHdlYlByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBD
OjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdlYlByb2Nlc3NEaWRD
bG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6TGlua0hhc2gpOworCisgICAgdm9pZCBwZW5kaW5nVmlzaXRlZExpbmtzVGlt
ZXJGaXJlZCgpOworCisgICAgdm9pZCByZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJsZVNpemUp
OworICAgIHZvaWQgc2VuZFRhYmxlKFdlYlByb2Nlc3NQcm94eSYpOworCisgICAgSGFzaFNldDxX
ZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKKworICAgIHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKKworICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CisgICAgdW5zaWduZWQgbV90YWJsZVNpemU7
CisgICAgVmlzaXRlZExpbmtUYWJsZSBtX3RhYmxlOworCisgICAgSGFzaFNldDxXZWJDb3JlOjpM
aW5rSGFzaCwgV2ViQ29yZTo6TGlua0hhc2hIYXNoPiBtX3BlbmRpbmdWaXNpdGVkTGlua3M7Cisg
ICAgUnVuTG9vcDo6VGltZXI8VmlzaXRlZExpbmtTdG9yZT4gbV9wZW5kaW5nVmlzaXRlZExpbmtz
VGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFZpc2l0ZWRM
aW5rU3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzg2MmUzNjViMGZmZTEzOTE0NjNjMDA3
MDYxZDdlN2Y4ZjhkNTRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBWaXNpdGVkTGlu
a1N0b3JlIHsKKyAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGxpbmtIYXNoKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAzNjU5YzU2MzJmZmNkNzQ4MDAyN2M0YWM0MTM3OGVlMGNmY2RjYzZjLi40
Y2VlYTBjYWNiZTFhNjFiOTc4YzUzMTYzOGQyMDEwYjM5YmMxNzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdl
R3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29u
ZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRlcigpKQorICAgICwgbV92aXNpdGVkTGlua1N0
b3JlKCptX2NvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rU3RvcmUoKSkKICAgICAsIG1fd2Vic2l0
ZURhdGFTdG9yZShtX2NvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpKQogICAgICwgbV9tYWluRnJhbWUobnVsbHB0cikKICAgICAsIG1fdXNlckFnZW50
KHN0YW5kYXJkVXNlckFnZW50KCkpCkBAIC00NDIsMTMgKzQ0MiwxMyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIHVpbgogICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3
U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNS
ZXBseShmYWxzZSkKIHsKLSAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyKTsKKyAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIuYWRkT2JzZXJ2ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZl
dGltZVRyYWNrZXIuYWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAogICAgIGlmICht
X3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykgewog
ICAgICAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCiAgICAgICAgICAgICBtX3Byb2Nl
c3MtPmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCptX3VzZXJDb250ZW50Q29udHJv
bGxlcik7Ci0gICAgICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92aWRlcihtX3Zpc2l0
ZWRMaW5rUHJvdmlkZXIpOworICAgICAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmUo
bV92aXNpdGVkTGlua1N0b3JlKTsKICAgICB9CiAKICAgICB1cGRhdGVWaWV3U3RhdGUoKTsKQEAg
LTM2MjgsNyArMzYyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nKCkKIAogICAgIGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikKICAgICAgICAgbV9w
cm9jZXNzLT5hZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqbV91c2VyQ29udGVudENv
bnRyb2xsZXIpOwotICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92aWRlcihtX3Zpc2l0
ZWRMaW5rUHJvdmlkZXIpOworICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZShtX3Zp
c2l0ZWRMaW5rU3RvcmUpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC01MTcyLDcgKzUxNzIsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IG1fc2Vz
c2lvbklEOwogICAgIHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCA9IFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OmhpZ2hlZFVzZWRJdGVtSUQoKTsKICAgICBwYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gbV91c2VyQ29udGVudENvbnRyb2xsZXIgPyBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigpIDogMDsKLSAgICBwYXJhbWV0ZXJzLnZp
c2l0ZWRMaW5rVGFibGVJRCA9IG1fdmlzaXRlZExpbmtQcm92aWRlci0+aWRlbnRpZmllcigpOwor
ICAgIHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEID0gbV92aXNpdGVkTGlua1N0b3JlLT5p
ZGVudGlmaWVyKCk7CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQgPSBtX3dlYnNp
dGVEYXRhU3RvcmUtPmlkZW50aWZpZXIoKTsKICAgICBwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCA9IG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCgpOwogICAgIHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwgPSBtX2NhblJ1bk1vZGFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQyYTJjMTlkMTdlYjljNjE0
NzA1MDgyODM5NzFmYzE3OTY0NTU5ZDIuLjIwYmE2ZDJkYTMzNmY1OWFkODk2ZTE4NGNhZmJiZjg2
ODBmYWYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4
Myw3ICsxODMsNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xh
c3MgU3RyaW5nUGFpclZlY3RvcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1NuYXBzaG90
OwotY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKK2NsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
Y2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKQEAgLTE1MDEsNyArMTUwMSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlciBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIgeyAqdGhpcyB9OwogCiAgICAgY29uc3QgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKLSAgICBSZWY8VmlzaXRlZExpbmtQcm92
aWRlcj4gbV92aXNpdGVkTGlua1Byb3ZpZGVyOworICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBt
X3Zpc2l0ZWRMaW5rU3RvcmU7CiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKIAogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX21haW5GcmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDdhY2NhMGE4OTkz
MjQ3ZGE2Yjk5NzZmYzIxMTJkYjY1OTIwNTJjNmQuLjQ0YzVhNjNhZmRjZDc0NDcwYjNiMWZlYzUw
N2JjZDIwZmFlMTE2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9v
bChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1f
ZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51bGwoKSkKICAgICAsIG1f
ZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQog
ICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4oKSkKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlu
a1Byb3ZpZGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlu
a1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkKGZhbHNlKQog
ICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlzKQogICAgICwgbV9hbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aChmYWxzZSkKQEAgLTg0MSw4ICs4NDEsOCBAQCBQYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgUgogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1f
ZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CiAgICAgaWYgKCFwYWdlQ29uZmlndXJhdGlvbi0+cHJl
ZmVyZW5jZXMoKSkKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKCZw
YWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkpOwotICAgIGlmICgh
cGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJvdmlkZXIoKSkKLSAgICAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIobV92aXNpdGVkTGlua1Byb3ZpZGVy
LnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0aW9uLT52aXNpdGVkTGlua1N0b3JlKCkp
CisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRWaXNpdGVkTGlua1N0b3JlKG1fdmlzaXRl
ZExpbmtTdG9yZS5wdHIoKSk7CiAgICAgaWYgKCFwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpKSB7CiAgICAgICAgIEFTU0VSVCghcGFnZUNvbmZpZ3VyYXRpb24tPnNlc3Npb25J
RCgpLmlzVmFsaWQoKSk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0
YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZlYWJiMjFhNjlhMTI5YTIwNjBlZTk5Y2I2MTUxNjc1
Y2Y1Yzg4YTkuLjVmM2UyNjcwMGJhY2RiYjUxZjRkZTIzY2NmZjY5YzJmY2U4MWM2OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5o
IgogI2luY2x1ZGUgIlN0YXRpc3RpY3NSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiVmlzaXRlZExpbmtQ
cm92aWRlci5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKQEAgLTIxMyw3ICsy
MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRp
b25lZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCi0gICAgVmlzaXRlZExpbmtQcm92aWRlciYg
dmlzaXRlZExpbmtQcm92aWRlcigpIHsgcmV0dXJuIG1fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsgfQorICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUoKSB7IHJldHVybiBt
X3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChDYWNo
ZU1vZGVsKTsKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKTsgfQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUGx1Z2luSW5mb1N0b3JlIG1f
cGx1Z2luSW5mb1N0b3JlOwogI2VuZGlmCi0gICAgUmVmPFZpc2l0ZWRMaW5rUHJvdmlkZXI+IG1f
dmlzaXRlZExpbmtQcm92aWRlcjsKKyAgICBSZWY8VmlzaXRlZExpbmtTdG9yZT4gbV92aXNpdGVk
TGlua1N0b3JlOwogICAgIGJvb2wgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQ7CiAKICAgICBQbHVn
SW5BdXRvU3RhcnRQcm92aWRlciBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3OGVkNTliOGVkNmVi
MGQxZjgyZTZjNzMzYzJiMWJhZTNlMWQ0NzA3Li4yNzFjNWRiZWEzODdiOGY0MGUzZjc2MzAyZTM5
OWZiYTg4NDcxNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTkwLDkgKzE5MCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93
bigpCiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9hZFByb3h5
TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKIAotICAgIGZvciAoVmlzaXRlZExpbmtQcm92aWRlciog
dmlzaXRlZExpbmtQcm92aWRlciA6IG1fdmlzaXRlZExpbmtQcm92aWRlcnMpCi0gICAgICAgIHZp
c2l0ZWRMaW5rUHJvdmlkZXItPnJlbW92ZVByb2Nlc3MoKnRoaXMpOwotICAgIG1fdmlzaXRlZExp
bmtQcm92aWRlcnMuY2xlYXIoKTsKKyAgICBmb3IgKFZpc2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRM
aW5rU3RvcmUgOiBtX3Zpc2l0ZWRMaW5rU3RvcmVzKQorICAgICAgICB2aXNpdGVkTGlua1N0b3Jl
LT5yZW1vdmVQcm9jZXNzKCp0aGlzKTsKKyAgICBtX3Zpc2l0ZWRMaW5rU3RvcmVzLmNsZWFyKCk7
CiAKICAgICBmb3IgKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSA6IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcykKICAg
ICAgICAgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZVByb2Nlc3MoKnRoaXMp
OwpAQCAtMjQ3LDEwICsyNDcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBh
Z2UodWludDY0X3QgcGFnZUlEKQogICAgIHNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjphZGRWaXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5rUHJvdmlkZXImIHByb3Zp
ZGVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExp
bmtTdG9yZSYgc3RvcmUpCiB7Ci0gICAgbV92aXNpdGVkTGlua1Byb3ZpZGVycy5hZGQoJnByb3Zp
ZGVyKTsKLSAgICBwcm92aWRlci5hZGRQcm9jZXNzKCp0aGlzKTsKKyAgICBtX3Zpc2l0ZWRMaW5r
U3RvcmVzLmFkZCgmc3RvcmUpOworICAgIHN0b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmIHByb3h5KQpAQCAtMjU5LDEwICsyNTksMTAgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclAKICAgICBwcm94eS5hZGRQcm9jZXNzKCp0aGlzKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lWaXNpdGVkTGlua1Byb3ZpZGVyKFZp
c2l0ZWRMaW5rUHJvdmlkZXImIHByb3ZpZGVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERl
c3Ryb3lWaXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmUmIHN0b3JlKQogewotICAgIEFT
U0VSVChtX3Zpc2l0ZWRMaW5rUHJvdmlkZXJzLmNvbnRhaW5zKCZwcm92aWRlcikpOwotICAgIG1f
dmlzaXRlZExpbmtQcm92aWRlcnMucmVtb3ZlKCZwcm92aWRlcik7CisgICAgQVNTRVJUKG1fdmlz
aXRlZExpbmtTdG9yZXMuY29udGFpbnMoJnN0b3JlKSk7CisgICAgbV92aXNpdGVkTGlua1N0b3Jl
cy5yZW1vdmUoJnN0b3JlKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSYgcHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggOGI3NzQ4NWUxMGNhYzg4YWQ1Zjk4ZWVjM2U2YzIyMDRiNzU0ZGNlNi4uMzZiMWQ2NjVhZWMw
ODVmMTZlODYxN2Q3ZDNhY2Y5NjRiYmQ0MTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgV1RGOjpJ
dGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94eU1hcDo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcz4gcGFn
ZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFsdWVzKCk7IH0KICAgICB1bnNpZ25lZCBw
YWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAuc2l6ZSgpOyB9CiAKLSAgICB2b2lk
IGFkZFZpc2l0ZWRMaW5rUHJvdmlkZXIoVmlzaXRlZExpbmtQcm92aWRlciYpOworICAgIHZvaWQg
YWRkVmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJik7CiAgICAgdm9pZCBhZGRXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYp
OwotICAgIHZvaWQgZGlkRGVzdHJveVZpc2l0ZWRMaW5rUHJvdmlkZXIoVmlzaXRlZExpbmtQcm92
aWRlciYpOworICAgIHZvaWQgZGlkRGVzdHJveVZpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtT
dG9yZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CiAKICAgICBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdDsKQEAgLTIz
OCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsK
ICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsK
IAotICAgIEhhc2hTZXQ8VmlzaXRlZExpbmtQcm92aWRlcio+IG1fdmlzaXRlZExpbmtQcm92aWRl
cnM7CisgICAgSGFzaFNldDxWaXNpdGVkTGlua1N0b3JlKj4gbV92aXNpdGVkTGlua1N0b3JlczsK
ICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkUHJv
eHlNYXA+IG1fZG93bmxvYWRQcm94eU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMWM0NGNmZjg2MGVmZmUxMDYyNmFkMDgz
ZWI4Mzg0ODRhODIwMjdhLi41NTM5YWNhN2NkMTdlZDk5MDQxMzE5YmU0OGQwNTlmYmVkZDExMDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDksOCArMTQ5LDggQEAKIAkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8qIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTBFQzkwRTEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJMUEwRjI5Q0IxMjBCMzcxNjAw
NTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRjI5QzkxMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRM
aW5rVGFibGUuY3BwICovOyB9OwogCQkxQTBGMjlDQzEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRl
ZExpbmtUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEwRjI5Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuaCAqLzsgfTsK
LQkJMUEwRjI5RTMxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRjI5RTExMjBC
NDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwICovOyB9OwotCQkxQTBGMjlF
NDEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5
IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuaCAqLzsgfTsKKwkJMUEwRjI5RTMxMjBCNDQ0MjAwNTNE
MUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEwRjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5r
U3RvcmUuY3BwICovOyB9OworCQkxQTBGMjlFNDEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExp
bmtTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCAqLzsgfTsKIAkJ
MUExNTg0MTkxODkwNDRGNTAwMTc2MTZDIC8qIFdLUHJvY2Vzc1Bvb2wubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTE1ODQxNzE4OTA0NEY1MDAxNzYx
NkMgLyogV0tQcm9jZXNzUG9vbC5tbSAqLzsgfTsKIAkJMUExNTg0MUExODkwNDRGNTAwMTc2MTZD
IC8qIFdLUHJvY2Vzc1Bvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMTU4NDE4MTg5MDQ0RjUwMDE3NjE2QyAvKiBXS1Byb2Nlc3NQb29sLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTE3OTc3RjEz
N0VFODJDMDBGOTdENDUgLyogUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMTc5NzdEMTM3RUU4MkMwMEY5
N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwpAQCAtMjcyLDggKzI3
Miw4IEBACiAJCTFBNUIxQzU0MTg5ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTVCMUM1
MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwICovOyB9OwogCQkxQTVC
MUM1NTE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNUIxQzUzMTg5ODdFREYwMDRGQ0Y5
QiAvKiBXZWJEb2N1bWVudExvYWRlci5oICovOyB9OwogCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEy
QkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3Rh
dGUuaCAqLzsgfTsKLQkJMUE2MDIyNEMxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rUHJv
dmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE2MDIyNEExOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rUHJv
dmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkxQTYwMjI0RDE4QzE2QjlGMDBDM0U4
QzkgLyogVmlzaXRlZExpbmtQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTYwMjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlz
aXRlZExpbmtQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CisJCTFBNjAyMjRDMThDMTZCOUYwMEMz
RThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjAyMjRBMThDMTZCOUYwMEMzRThD
OSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUE2MDIy
NEQxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MDIyNEIxOEMxNkI5RjAw
QzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlcy5oICovOyB9OwogCQkxQTYyODBDNTE5
MTk5NDlGMDA2QUQ5RjkgLyogV2ViS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTYyODBDNDE5MTk5NDlGMDA2QUQ5RjkgLyogV2ViS2l0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTYyODBDNzE5
MTk5NTBDMDA2QUQ5RjkgLyogV2ViS2l0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjgwQzYxOTE5OTUwQzAwNkFEOUY5IC8qIFdlYktp
dFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQTYyODBGMDE5MTk5ODAwMDA2QUQ5RjkgLyogV2ViS2l0Mi5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjgwRUUxOTE5OTgwMDAwNkFEOUY5
IC8qIFdlYktpdDIubSAqLzsgfTsKQEAgLTIyMzUsOCArMjIzNSw4IEBACiAJCTFBMEVDOTBFMTI0
QzBBRjUwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRjI5QzkxMjBCMzcx
NjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVmlzaXRlZExpbmtUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMEYyOUNBMTIwQjM3MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rVGFibGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEwRjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZp
c2l0ZWRMaW5rUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVmlzaXRlZExpbmtQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBMEYyOUUyMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUEwRjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0
ZWRMaW5rU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlz
aXRlZExpbmtTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMEYyOUUy
MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUExNTg0MTcxODkwNDRGNTAwMTc2MTZDIC8qIFdLUHJvY2Vzc1Bvb2wubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1Byb2Nlc3NQb29sLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTE1ODQxODE4OTA0NEY1MDAxNzYxNkMgLyog
V0tQcm9jZXNzUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb2Nl
c3NQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMTc2MzU0MTZCMUQ1RDAw
MEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMzcyLDkgKzIzNzIsOSBAQAogCQkxQTVCMUM1MjE4OTg3RURGMDA0
RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViRG9jdW1lbnRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTVCMUM1MzE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRG9jdW1lbnRMb2FkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRl
eHRDaGVja2VyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENo
ZWNrZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTYwMjI0OTE4QzE2
QjA4MDBDM0U4QzkgLyogVmlzaXRlZExpbmtQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaXNp
dGVkTGlua1Byb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQTYwMjI0QTE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtQcm92aWRlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVk
TGlua1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUE2MDIyNEIxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVkTGlua1Byb3Zp
ZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2MDIyNDkxOEMx
NkIwODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2
MDIyNEExOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlzaXRlZExpbmtTdG9y
ZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBNjAy
MjRCMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjI4MEM0MTkxOTk0OUYwMDZBRDlGOSAvKiBX
ZWJLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjI4MEM2MTkxOTk1MEMwMDZBRDlGOSAvKiBXZWJL
aXRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2MjgwRDAxOTE5OTdCRDAwNkFE
OUY5IC8qIFdlYktpdDIuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gV2ViS2l0Mi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CkBAIC02MTI0LDkgKzYxMjQsOSBAQAogCQkJCTRBNDEwRjNCMTlBRjdCMDQwMDJFQkFCNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCAqLywKIAkJCQk0QTQxMEYzQzE5
QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovLAog
CQkJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3Bw
ICovLAotCQkJCTFBMEYyOUUxMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVy
LmNwcCAqLywKLQkJCQkxQTBGMjlFMjEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtQcm92
aWRlci5oICovLAotCQkJCTFBNjAyMjQ5MThDMTZCMDgwMEMzRThDOSAvKiBWaXNpdGVkTGlua1By
b3ZpZGVyLm1lc3NhZ2VzLmluICovLAorCQkJCTFBMEYyOUUxMTIwQjQ0NDIwMDUzRDFCOSAvKiBW
aXNpdGVkTGlua1N0b3JlLmNwcCAqLywKKwkJCQkxQTBGMjlFMjEyMEI0NDQyMDA1M0QxQjkgLyog
VmlzaXRlZExpbmtTdG9yZS5oICovLAorCQkJCTFBNjAyMjQ5MThDMTZCMDgwMEMzRThDOSAvKiBW
aXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcw
MDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtNzIyOCw4ICs3MjI4LDggQEAK
IAkJCQkyRDgxOUJBMDE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvck1lc3NhZ2VzLmggKi8sCiAJCQkJMjY4NDA1NTAxOEI4NkVENjAwMjJDMzhCIC8qIFZpZXdV
cGRhdGVEaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyNjg0MDU1MTE4Qjg2
RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oICovLAotCQkJCTFB
NjAyMjRBMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKLQkJCQkxQTYwMjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtQ
cm92aWRlck1lc3NhZ2VzLmggKi8sCisJCQkJMUE2MDIyNEExOEMxNkI5RjAwQzNFOEM5IC8qIFZp
c2l0ZWRMaW5rU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFBNjAyMjRCMThDMTZC
OUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMuaCAqLywKIAkJCQkxQThFN0Qz
QTE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCTFBOEU3RDNCMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUExRkVDMUExNjI3QjQ1NjAwNzAw
RjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzkwMSw4ICs3
OTAxLDggQEAKIAkJCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3
VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0NDE4
Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMUEwRjI5RTQxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNjAyMjREMThDMTZCOUYwMEMzRThDOSAvKiBWaXNp
dGVkTGlua1Byb3ZpZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBMEYyOUU0MTIw
QjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QTYwMjI0RDE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTBGMjlDQzEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNENFRjAxOEJDNDgxODAwQkMyRDM0IC8qIFZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThFN0QzRDE4
QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05NzI3LDggKzk3MjcsOCBAQAogCQkJCTI2ODQwNTRGMThCODZDOEUw
MDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
Njg0MDU1MjE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY4NDA1NEMxOEI4NkMzNTAwMjJDMzhCIC8q
IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUEw
RjI5RTMxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMUE2MDIyNEMxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rUHJvdmlk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEwRjI5RTMxMjBCNDQ0
MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE2
MDIyNEMxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRjI5Q0IxMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0
ZWRMaW5rVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGNENFRUYxOEJDNDgxODAwQkMy
RDM0IC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBOEU3RDNDMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXIuY3BwCmluZGV4IDQwMDA2MTZiYWZjNWI3YmNiZGM1YTMyNmI1NmY0NjkxYmQxNDI5NzEuLjhl
MjJmNmVhNThhMTY1Mjk0YTAzYmRkMWYyYTFmYmU3OWFiY2ZhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgiCiAKLSNpbmNsdWRlICJWaXNp
dGVkTGlua1Byb3ZpZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTg1LDcg
Kzg1LDcgQEAgdm9pZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6YWRkVmlzaXRlZExpbmso
UGFnZSYgcGFnZSwgTGlua0hhc2ggbGlua0hhc2gpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1Byb3ZpZGVyOjpBZGRWaXNpdGVk
TGlua0hhc2hGcm9tUGFnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgbGlua0hhc2gpLCBtX2lkZW50aWZp
ZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rU3RvcmU6OkFkZFZpc2l0ZWRMaW5rSGFzaEZy
b21QYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCBsaW5rSGFzaCksIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUoY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSkK
</data>
<flag name="review"
          id="284990"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>